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/context.py')
-rw-r--r--certbot-ci/certbot_integration_tests/nginx_tests/context.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/certbot-ci/certbot_integration_tests/nginx_tests/context.py b/certbot-ci/certbot_integration_tests/nginx_tests/context.py
new file mode 100644
index 000000000..3a769840c
--- /dev/null
+++ b/certbot-ci/certbot_integration_tests/nginx_tests/context.py
@@ -0,0 +1,62 @@
+import os
+import subprocess
+
+from certbot_integration_tests.certbot_tests import context as certbot_context
+from certbot_integration_tests.nginx_tests import nginx_config as config
+from certbot_integration_tests.utils import certbot_call
+from certbot_integration_tests.utils import misc
+
+
+class IntegrationTestsContext(certbot_context.IntegrationTestsContext):
+ """General fixture describing a certbot-nginx integration tests context"""
+ def __init__(self, request):
+ super(IntegrationTestsContext, self).__init__(request)
+
+ self.nginx_root = os.path.join(self.workspace, 'nginx')
+ os.mkdir(self.nginx_root)
+
+ self.webroot = os.path.join(self.nginx_root, 'webroot')
+ os.mkdir(self.webroot)
+ with open(os.path.join(self.webroot, 'index.html'), 'w') as file_handler:
+ file_handler.write('Hello World!')
+
+ self.nginx_config_path = os.path.join(self.nginx_root, 'nginx.conf')
+ self.nginx_config = None
+
+ default_server = request.param['default_server']
+ self.process = self._start_nginx(default_server)
+
+ def cleanup(self):
+ self._stop_nginx()
+ super(IntegrationTestsContext, self).cleanup()
+
+ def certbot_test_nginx(self, args):
+ """
+ Main command to execute certbot using the nginx plugin.
+ :param list args: list of arguments to pass to nginx
+ :param bool force_renew: set to False to not renew by default
+ """
+ command = ['--authenticator', 'nginx', '--installer', 'nginx',
+ '--nginx-server-root', self.nginx_root]
+ command.extend(args)
+ return certbot_call.certbot_test(
+ command, self.directory_url, self.http_01_port, self.tls_alpn_01_port,
+ self.config_dir, self.workspace, force_renew=True)
+
+ def _start_nginx(self, default_server):
+ self.nginx_config = config.construct_nginx_config(
+ self.nginx_root, self.webroot, self.http_01_port, self.tls_alpn_01_port,
+ self.other_port, default_server, wtf_prefix=self.worker_id)
+ with open(self.nginx_config_path, 'w') as file:
+ file.write(self.nginx_config)
+
+ process = subprocess.Popen(['nginx', '-c', self.nginx_config_path, '-g', 'daemon off;'])
+
+ assert process.poll() is None
+ misc.check_until_timeout('http://localhost:{0}'.format(self.http_01_port))
+ return process
+
+ def _stop_nginx(self):
+ assert self.process.poll() is None
+ self.process.terminate()
+ self.process.wait()