From 9114b8047d643e99a7ec000128a731b2fbe97c24 Mon Sep 17 00:00:00 2001 From: Nicolas Duchon Date: Sat, 2 Nov 2024 17:14:34 +0100 Subject: [PATCH] test: paths are stripped from debug endpoint response if too long --- test/test_debug_endpoint/test_global.py | 20 ++++++++++--- test/test_debug_endpoint/test_global.yml | 29 ++++++++++++++++--- .../test_debug_endpoint/test_per_container.py | 2 +- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/test/test_debug_endpoint/test_global.py b/test/test_debug_endpoint/test_global.py index 635aaab..b151b69 100644 --- a/test/test_debug_endpoint/test_global.py +++ b/test/test_debug_endpoint/test_global.py @@ -2,23 +2,35 @@ import json import pytest def test_debug_endpoint_is_enabled_globally(docker_compose, nginxproxy): - r = nginxproxy.get("http://enabled1.debug.nginx-proxy.example/nginx-proxy-debug") + r = nginxproxy.get("http://enabled.debug.nginx-proxy.example/nginx-proxy-debug") assert r.status_code == 200 - r = nginxproxy.get("http://enabled2.debug.nginx-proxy.example/nginx-proxy-debug") + r = nginxproxy.get("http://stripped.debug.nginx-proxy.example/nginx-proxy-debug") assert r.status_code == 200 def test_debug_endpoint_response_contains_expected_values(docker_compose, nginxproxy): - r = nginxproxy.get("http://enabled1.debug.nginx-proxy.example/nginx-proxy-debug") + r = nginxproxy.get("http://enabled.debug.nginx-proxy.example/nginx-proxy-debug") assert r.status_code == 200 try: jsonResponse = json.loads(r.text) except ValueError as err: - pytest.fail("Failed to parse JSON response: %s" % err, pytrace=False) + pytest.fail("Failed to parse debug endpoint response as JSON: %s" % err, pytrace=False) assert jsonResponse["global"]["enable_debug_endpoint"] == "true" assert jsonResponse["vhost"]["enable_debug_endpoint"] == True +def test_debug_endpoint_pahts_stripped_if_response_too_long(docker_compose, nginxproxy): + r = nginxproxy.get("http://stripped.debug.nginx-proxy.example/nginx-proxy-debug") + assert r.status_code == 200 + try: + jsonResponse = json.loads(r.text) + except ValueError as err: + pytest.fail("Failed to parse debug endpoint response as JSON: %s" % err, pytrace=False) + if "paths" in jsonResponse["vhost"]: + pytest.fail("Expected paths to be stripped from debug endpoint response", pytrace=False) + assert jsonResponse["warning"] == "Virtual paths configuration for this hostname is too large and has been stripped from response." + + def test_debug_endpoint_is_disabled_per_container(docker_compose, nginxproxy): r = nginxproxy.get("http://disabled.debug.nginx-proxy.example/nginx-proxy-debug") assert r.status_code == 404 diff --git a/test/test_debug_endpoint/test_global.yml b/test/test_debug_endpoint/test_global.yml index 812ffed..7ec99ef 100644 --- a/test/test_debug_endpoint/test_global.yml +++ b/test/test_debug_endpoint/test_global.yml @@ -6,21 +6,42 @@ services: environment: DEBUG_ENDPOINT: "true" - debug_enabled1: + debug_enabled: image: web expose: - "81" environment: WEB_PORTS: 81 - VIRTUAL_HOST: enabled1.debug.nginx-proxy.example + VIRTUAL_HOST: enabled.debug.nginx-proxy.example - debug_enabled2: + debug_stripped: image: web expose: - "82" environment: WEB_PORTS: 82 - VIRTUAL_HOST: enabled2.debug.nginx-proxy.example + VIRTUAL_HOST_MULTIPORTS: |- + stripped.debug.nginx-proxy.example: + "/1": + "/2": + "/3": + "/4": + "/5": + "/6": + "/7": + "/8": + "/9": + "/10": + "/11": + "/12": + "/13": + "/14": + "/15": + "/16": + "/17": + "/18": + "/19": + "/20": debug_disabled: image: web diff --git a/test/test_debug_endpoint/test_per_container.py b/test/test_debug_endpoint/test_per_container.py index 8901f8b..16c680c 100644 --- a/test/test_debug_endpoint/test_per_container.py +++ b/test/test_debug_endpoint/test_per_container.py @@ -19,6 +19,6 @@ def test_debug_endpoint_response_contains_expected_values(docker_compose, nginxp try: jsonResponse = json.loads(r.text) except ValueError as err: - pytest.fail("Failed to parse JSON response: %s" % err, pytrace=False) + pytest.fail("Failed to parse debug endpoint response as JSON:: %s" % err, pytrace=False) assert jsonResponse["global"]["enable_debug_endpoint"] == "false" assert jsonResponse["vhost"]["enable_debug_endpoint"] == True