From be457ffa95864afb223985bc950644386b86e6a2 Mon Sep 17 00:00:00 2001 From: Seth Schoen Date: Thu, 29 Sep 2016 15:57:29 -0700 Subject: [PATCH] Test more in nginx compatibility tests * Highlight failures more with asterisks * Filter out wildcard names from all_names * Only test -ai, not -aie (no redirects) * Modified versions of almost all of 79 configs corpus * Re-enable now-working stanza with 301 redirect * Change another redirect to go to :443 --- .../configurators/nginx/common.py | 4 +++- .../certbot_compatibility_test/test_driver.py | 20 +++++++++--------- .../testdata/nginx.tar.gz | Bin 6625 -> 39666 bytes tox.ini | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/certbot-compatibility-test/certbot_compatibility_test/configurators/nginx/common.py b/certbot-compatibility-test/certbot_compatibility_test/configurators/nginx/common.py index 3622bee41..ed5cf750e 100644 --- a/certbot-compatibility-test/certbot_compatibility_test/configurators/nginx/common.py +++ b/certbot-compatibility-test/certbot_compatibility_test/configurators/nginx/common.py @@ -79,6 +79,8 @@ def _get_names(config): if line.strip().startswith("server_name"): names = line.partition("server_name")[2].rpartition(";")[0] for n in names.split(): - all_names.add(n) + # Filter out wildcards in both all_names and test_names + if not n.startswith("*."): + all_names.add(n) non_ip_names = set(n for n in all_names if not util.IP_REGEX.match(n)) return all_names, non_ip_names diff --git a/certbot-compatibility-test/certbot_compatibility_test/test_driver.py b/certbot-compatibility-test/certbot_compatibility_test/test_driver.py index 71100bb27..c07586d8c 100644 --- a/certbot-compatibility-test/certbot_compatibility_test/test_driver.py +++ b/certbot-compatibility-test/certbot_compatibility_test/test_driver.py @@ -74,7 +74,7 @@ def test_authenticator(plugin, config, temp_dir): "tls-sni-01 verification for %s succeeded", achalls[i].domain) else: logger.error( - "tls-sni-01 verification for %s in %s failed", + "**** tls-sni-01 verification for %s in %s failed", achalls[i].domain, config) success = False @@ -122,7 +122,7 @@ def test_installer(args, plugin, config, temp_dir): if names_match: logger.info("get_all_names test succeeded") else: - logger.error("get_all_names test failed for config %s", config) + logger.error("**** get_all_names test failed for config %s", config) domains = list(plugin.get_testable_domain_names()) success = test_deploy_cert(plugin, temp_dir, domains) @@ -147,7 +147,7 @@ def test_deploy_cert(plugin, temp_dir, domains): plugin.deploy_cert(domain, cert_path, util.KEY_PATH, cert_path, cert_path) plugin.save() # Needed by the Apache plugin except le_errors.Error as error: - logger.error("Plugin failed to deploy certificate for %s:", domain) + logger.error("**** Plugin failed to deploy certificate for %s:", domain) logger.exception(error) return False @@ -159,7 +159,7 @@ def test_deploy_cert(plugin, temp_dir, domains): verify = functools.partial(validator.Validator().certificate, cert, domain, "127.0.0.1", plugin.https_port) if not _try_until_true(verify): - logger.error("Could not verify certificate for domain %s", domain) + logger.error("**** Could not verify certificate for domain %s", domain) success = False if success: @@ -183,10 +183,10 @@ def test_enhancements(plugin, domains): plugin.save() # Needed by the Apache plugin except le_errors.PluginError as error: # Don't immediately fail because a redirect may already be enabled - logger.warning("Plugin failed to enable redirect for %s:", domain) + logger.warning("*** Plugin failed to enable redirect for %s:", domain) logger.warning("%s", error) except le_errors.Error as error: - logger.error("An error occurred while enabling redirect for %s:", + logger.error("*** An error occurred while enabling redirect for %s:", domain) logger.exception(error) @@ -198,7 +198,7 @@ def test_enhancements(plugin, domains): verify = functools.partial(validator.Validator().redirect, "localhost", plugin.http_port, headers={"Host": domain}) if not _try_until_true(verify): - logger.error("Improper redirect for domain %s", domain) + logger.error("*** Improper redirect for domain %s", domain) success = False if success: @@ -225,7 +225,7 @@ def _save_and_restart(plugin, title=None): plugin.restart() return True except le_errors.Error as error: - logger.error("Plugin failed to save and restart server:") + logger.error("*** Plugin failed to save and restart server:") logger.exception(error) return False @@ -235,12 +235,12 @@ def test_rollback(plugin, config, backup): try: plugin.rollback_checkpoints(1337) except le_errors.Error as error: - logger.error("Plugin raised an exception during rollback:") + logger.error("*** Plugin raised an exception during rollback:") logger.exception(error) return False if _dirs_are_unequal(config, backup): - logger.error("Rollback failed for config `%s`", config) + logger.error("*** Rollback failed for config `%s`", config) return False else: logger.info("Rollback succeeded") diff --git a/certbot-compatibility-test/certbot_compatibility_test/testdata/nginx.tar.gz b/certbot-compatibility-test/certbot_compatibility_test/testdata/nginx.tar.gz index 4ca5cc9775a35f64534f90b1db4fb7ef272672a8..0caf3c3be232d4fae8d467fc6f3325147d323b45 100644 GIT binary patch literal 39666 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 diff --git a/tox.ini b/tox.ini index 61ffa06d7..5d6de5730 100644 --- a/tox.ini +++ b/tox.ini @@ -151,7 +151,7 @@ passenv = DOCKER_* commands = docker build -t certbot-compatibility-test -f certbot-compatibility-test/Dockerfile . docker build -t nginx-compat -f certbot-compatibility-test/Dockerfile-nginx . - docker run --rm -it nginx-compat -c nginx.tar.gz -vvvv + docker run --rm -it nginx-compat -c nginx.tar.gz -vvvv -ai whitelist_externals = docker passenv = DOCKER_*