浏览代码

test: regex vhost file names

Nicolas Duchon 7 月之前
父节点
当前提交
1cd7b97e8f

+ 7 - 0
test/test_custom/test_location-per-vhost.py

@@ -12,6 +12,13 @@ def test_custom_conf_applies_to_web1(docker_compose, nginxproxy):
     assert "X-test" in r.headers
     assert "f00" == r.headers["X-test"]
 
+def test_custom_conf_applies_to_regex(docker_compose, nginxproxy):
+    r = nginxproxy.get("http://regex.foo.nginx-proxy.example/port")
+    assert r.status_code == 200   
+    assert r.text == "answer from port 83\n"
+    assert "X-test" in r.headers
+    assert "bar" == r.headers["X-test"]
+
 def test_custom_conf_does_not_apply_to_web2(docker_compose, nginxproxy):
     r = nginxproxy.get("http://web2.nginx-proxy.example/port")
     assert r.status_code == 200   

+ 9 - 0
test/test_custom/test_location-per-vhost.yml

@@ -6,6 +6,7 @@ services:
     volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - ./my_custom_proxy_settings.conf:/etc/nginx/vhost.d/web1.nginx-proxy.example_location:ro
+      - ./my_custom_proxy_settings_bar.conf:/etc/nginx/vhost.d/561032515ede3ab3a015edfb244608b72409c430_location:ro
 
   web1:
     image: web
@@ -22,3 +23,11 @@ services:
     environment:
       WEB_PORTS: 82
       VIRTUAL_HOST: web2.nginx-proxy.example
+  
+  regex:
+    image: web
+    expose:
+      - "83"
+    environment:
+      WEB_PORTS: 83
+      VIRTUAL_HOST: ~^regex.*\.nginx-proxy\.example$

+ 7 - 0
test/test_custom/test_per-vhost.py

@@ -12,6 +12,13 @@ def test_custom_conf_applies_to_web1(docker_compose, nginxproxy):
     assert "X-test" in r.headers
     assert "f00" == r.headers["X-test"]
 
+def test_custom_conf_applies_to_regex(docker_compose, nginxproxy):
+    r = nginxproxy.get("http://regex.foo.nginx-proxy.example/port")
+    assert r.status_code == 200   
+    assert r.text == "answer from port 83\n"
+    assert "X-test" in r.headers
+    assert "bar" == r.headers["X-test"]
+
 def test_custom_conf_does_not_apply_to_web2(docker_compose, nginxproxy):
     r = nginxproxy.get("http://web2.nginx-proxy.example/port")
     assert r.status_code == 200   

+ 9 - 0
test/test_custom/test_per-vhost.yml

@@ -6,6 +6,7 @@ services:
     volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - ./my_custom_proxy_settings.conf:/etc/nginx/vhost.d/web1.nginx-proxy.example:ro
+      - ./my_custom_proxy_settings_bar.conf:/etc/nginx/vhost.d/561032515ede3ab3a015edfb244608b72409c430:ro
 
   web1:
     image: web
@@ -22,3 +23,11 @@ services:
     environment:
       WEB_PORTS: 82
       VIRTUAL_HOST: web2.nginx-proxy.example
+  
+  regex:
+    image: web
+    expose:
+      - "83"
+    environment:
+      WEB_PORTS: 83
+      VIRTUAL_HOST: ~^regex.*\.nginx-proxy\.example$

+ 1 - 0
test/test_htpasswd/htpasswd/561032515ede3ab3a015edfb244608b72409c430

@@ -0,0 +1 @@
+vhost:$2a$13$/aPYmoK0mmgyAI4TpKdFY.6441Ugo39MdXjhpm.Pp6D15rbz9tvz.

+ 13 - 0
test/test_htpasswd/test_htpasswd_regex_virtual_host.py

@@ -0,0 +1,13 @@
+import pytest
+
+def test_htpasswd_regex_virtual_host_is_restricted(docker_compose, nginxproxy):
+    r = nginxproxy.get("http://regex.htpasswd.nginx-proxy.example/port")
+    assert r.status_code == 401
+    assert "WWW-Authenticate" in r.headers
+    assert r.headers["WWW-Authenticate"] == 'Basic realm="Restricted access"'
+
+
+def test_htpasswd_regex_virtual_host_basic_auth(docker_compose, nginxproxy):
+    r = nginxproxy.get("http://regex.htpasswd.nginx-proxy.example/port", auth=("vhost", "password"))
+    assert r.status_code == 200
+    assert r.text == "answer from port 80\n"

+ 17 - 0
test/test_htpasswd/test_htpasswd_regex_virtual_host.yml

@@ -0,0 +1,17 @@
+version: "2"
+
+services:
+  regex:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: ~^regex.*\.nginx-proxy\.example$
+
+  sut:
+    container_name: sut
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./htpasswd:/etc/nginx/htpasswd:ro