mirror of
https://github.com/certbot/certbot.git
synced 2026-06-04 22:33:00 -04:00
Fixes #8427 This PR converts the Python 2 types hints into Python 3 types annotations. I have used the project https://github.com/ilevkivskyi/com2ann which has been designed for that specific purpose and did that very well. The only remaining things to do were to fix broken type hints that became wrong code after migration, and to fix lines too long with the new syntax. * Raw execution of com2ann * Fixing broken type annotations * Cleanup imports
59 lines
2.3 KiB
Python
59 lines
2.3 KiB
Python
"""Module executing integration tests against certbot with nginx plugin."""
|
|
import os
|
|
import ssl
|
|
from typing import List
|
|
|
|
import pytest
|
|
|
|
from certbot_integration_tests.nginx_tests import context as nginx_context
|
|
|
|
|
|
@pytest.fixture(name='context')
|
|
def test_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: str, params: List[str],
|
|
context: 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
|