diff options
Diffstat (limited to 'certbot-ci/certbot_integration_tests/nginx_tests/test_main.py')
-rw-r--r-- | certbot-ci/certbot_integration_tests/nginx_tests/test_main.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/certbot-ci/certbot_integration_tests/nginx_tests/test_main.py b/certbot-ci/certbot_integration_tests/nginx_tests/test_main.py new file mode 100644 index 000000000..1a62ea8d7 --- /dev/null +++ b/certbot-ci/certbot_integration_tests/nginx_tests/test_main.py @@ -0,0 +1,54 @@ +"""Module executing integration tests against certbot with nginx plugin.""" +import os +import ssl + +import pytest + +from certbot_integration_tests.nginx_tests import context as nginx_context + + +@pytest.fixture() +def context(request): + # Fixture request is a built-in pytest fixture describing current test request. + integration_test_context = nginx_context.IntegrationTestsContext(request) + try: + yield integration_test_context + finally: + integration_test_context.cleanup() + + +@pytest.mark.parametrize('certname_pattern, params, context', [ + ('nginx.{0}.wtf', ['run'], {'default_server': True}), + ('nginx2.{0}.wtf', ['--preferred-challenges', 'http'], {'default_server': True}), + # Overlapping location block and server-block-level return 301 + ('nginx3.{0}.wtf', ['--preferred-challenges', 'http'], {'default_server': True}), + # No matching server block; default_server exists + ('nginx4.{0}.wtf', ['--preferred-challenges', 'http'], {'default_server': True}), + # No matching server block; default_server does not exist + ('nginx5.{0}.wtf', ['--preferred-challenges', 'http'], {'default_server': False}), + # Multiple domains, mix of matching and not + ('nginx6.{0}.wtf,nginx7.{0}.wtf', ['--preferred-challenges', 'http'], {'default_server': False}), +], indirect=['context']) +def test_certificate_deployment(certname_pattern, params, context): + # type: (str, list, nginx_context.IntegrationTestsContext) -> None + """ + Test various scenarios to deploy a certificate to nginx using certbot. + """ + domains = certname_pattern.format(context.worker_id) + command = ['--domains', domains] + command.extend(params) + context.certbot_test_nginx(command) + + lineage = domains.split(',')[0] + server_cert = ssl.get_server_certificate(('localhost', context.tls_alpn_01_port)) + with open(os.path.join(context.workspace, 'conf/live/{0}/cert.pem'.format(lineage)), 'r') as file: + certbot_cert = file.read() + + assert server_cert == certbot_cert + + context.certbot_test_nginx(['rollback', '--checkpoints', '1']) + + with open(context.nginx_config_path, 'r') as file_h: + current_nginx_config = file_h.read() + + assert context.nginx_config == current_nginx_config |