From a9f8a9c32ab83dd3b763495ad110d0cc4c964f5f Mon Sep 17 00:00:00 2001 From: Niek <100143256+SchoNie@users.noreply.github.com> Date: Mon, 19 Feb 2024 17:15:58 +0100 Subject: [PATCH] htpasswd tests --- .../htpasswd/htpasswd.nginx-proxy.tld | 1 + ...d_8d960560c82f4e6c8b1b0f03eb30a1afd00e5696 | 1 + .../test_htpasswd_virtual_host.py | 13 +++++++++++++ .../test_htpasswd_virtual_host.yml | 17 +++++++++++++++++ .../test_htpasswd_virtual_path.py | 12 ++++++++++++ .../test_htpasswd_virtual_path.yml | 19 +++++++++++++++++++ 6 files changed, 63 insertions(+) create mode 100644 test/test_htpasswd/htpasswd/htpasswd.nginx-proxy.tld create mode 100644 test/test_htpasswd/htpasswd/htpasswd.nginx-proxy.tld_8d960560c82f4e6c8b1b0f03eb30a1afd00e5696 create mode 100644 test/test_htpasswd/test_htpasswd_virtual_host.py create mode 100644 test/test_htpasswd/test_htpasswd_virtual_host.yml create mode 100644 test/test_htpasswd/test_htpasswd_virtual_path.py create mode 100644 test/test_htpasswd/test_htpasswd_virtual_path.yml diff --git a/test/test_htpasswd/htpasswd/htpasswd.nginx-proxy.tld b/test/test_htpasswd/htpasswd/htpasswd.nginx-proxy.tld new file mode 100644 index 0000000..336275a --- /dev/null +++ b/test/test_htpasswd/htpasswd/htpasswd.nginx-proxy.tld @@ -0,0 +1 @@ +vhost:$2a$13$/aPYmoK0mmgyAI4TpKdFY.6441Ugo39MdXjhpm.Pp6D15rbz9tvz. diff --git a/test/test_htpasswd/htpasswd/htpasswd.nginx-proxy.tld_8d960560c82f4e6c8b1b0f03eb30a1afd00e5696 b/test/test_htpasswd/htpasswd/htpasswd.nginx-proxy.tld_8d960560c82f4e6c8b1b0f03eb30a1afd00e5696 new file mode 100644 index 0000000..9816a83 --- /dev/null +++ b/test/test_htpasswd/htpasswd/htpasswd.nginx-proxy.tld_8d960560c82f4e6c8b1b0f03eb30a1afd00e5696 @@ -0,0 +1 @@ +vpath:$2a$13$/aPYmoK0mmgyAI4TpKdFY.6441Ugo39MdXjhpm.Pp6D15rbz9tvz. diff --git a/test/test_htpasswd/test_htpasswd_virtual_host.py b/test/test_htpasswd/test_htpasswd_virtual_host.py new file mode 100644 index 0000000..aff3a62 --- /dev/null +++ b/test/test_htpasswd/test_htpasswd_virtual_host.py @@ -0,0 +1,13 @@ +import pytest + +def test_htpasswd_virtual_host_is_restricted(docker_compose, nginxproxy): + r = nginxproxy.get("http://htpasswd.nginx-proxy.tld/port") + assert r.status_code == 401 + assert "WWW-Authenticate" in r.headers + assert r.headers["WWW-Authenticate"] == 'Basic realm="Restricted htpasswd.nginx-proxy.tld"' + + +def test_htpasswd_virtual_host_basic_auth(docker_compose, nginxproxy): + r = nginxproxy.get("http://htpasswd.nginx-proxy.tld/port", auth=("vhost", "password")) + assert r.status_code == 200 + assert r.text == "answer from port 80\n" diff --git a/test/test_htpasswd/test_htpasswd_virtual_host.yml b/test/test_htpasswd/test_htpasswd_virtual_host.yml new file mode 100644 index 0000000..b3f15df --- /dev/null +++ b/test/test_htpasswd/test_htpasswd_virtual_host.yml @@ -0,0 +1,17 @@ +version: "2" + +services: + web: + image: web + expose: + - "80" + environment: + WEB_PORTS: 80 + VIRTUAL_HOST: htpasswd.nginx-proxy.tld + + sut: + container_name: sut + image: nginxproxy/nginx-proxy:test + volumes: + - /var/run/docker.sock:/tmp/docker.sock:ro + - ./htpasswd:/etc/nginx/htpasswd:ro diff --git a/test/test_htpasswd/test_htpasswd_virtual_path.py b/test/test_htpasswd/test_htpasswd_virtual_path.py new file mode 100644 index 0000000..262b314 --- /dev/null +++ b/test/test_htpasswd/test_htpasswd_virtual_path.py @@ -0,0 +1,12 @@ +import pytest + +def test_htpasswd_virtual_path_is_restricted(docker_compose, nginxproxy): + r = nginxproxy.get("http://htpasswd.nginx-proxy.tld/foo/port") + assert r.status_code == 401 + assert "WWW-Authenticate" in r.headers + assert r.headers["WWW-Authenticate"] == 'Basic realm="Restricted htpasswd.nginx-proxy.tld/foo/"' + +def test_htpasswd_virtual_path_basic_auth(docker_compose, nginxproxy): + r = nginxproxy.get("http://htpasswd.nginx-proxy.tld/foo/port", auth=("vpath", "password")) + assert r.status_code == 200 + assert r.text == "answer from port 80\n" diff --git a/test/test_htpasswd/test_htpasswd_virtual_path.yml b/test/test_htpasswd/test_htpasswd_virtual_path.yml new file mode 100644 index 0000000..ffe1a08 --- /dev/null +++ b/test/test_htpasswd/test_htpasswd_virtual_path.yml @@ -0,0 +1,19 @@ +version: "2" + +services: + web: + image: web + expose: + - "80" + environment: + WEB_PORTS: 80 + VIRTUAL_HOST: htpasswd.nginx-proxy.tld + VIRTUAL_PATH: /foo/ + VIRTUAL_DEST: / + + sut: + container_name: sut + image: nginxproxy/nginx-proxy:test + volumes: + - /var/run/docker.sock:/tmp/docker.sock:ro + - ./htpasswd:/etc/nginx/htpasswd:ro