소스 검색

test: paths are stripped from debug endpoint response if too long

Nicolas Duchon 7 달 전
부모
커밋
9114b8047d
3개의 변경된 파일42개의 추가작업 그리고 9개의 파일을 삭제
  1. 16 4
      test/test_debug_endpoint/test_global.py
  2. 25 4
      test/test_debug_endpoint/test_global.yml
  3. 1 1
      test/test_debug_endpoint/test_per_container.py

+ 16 - 4
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  

+ 25 - 4
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

+ 1 - 1
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