Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/certbot/certbot.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.py54
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