فهرست منبع

test: ipv6 docker networks

Nicolas Duchon 1 سال پیش
والد
کامیت
dcc97b9cff

+ 3 - 0
.github/workflows/test.yml

@@ -36,6 +36,9 @@ jobs:
           pip install -r python-requirements.txt
         working-directory: test/requirements
 
+      - name: Pull nginx:alpine image
+        run: docker pull nginx:alpine
+
       - name: Build Docker web server image
         run: make build-webserver
 

+ 0 - 0
test/test_ipv6.py → test/test_ipv6/test_ipv6.py


+ 0 - 0
test/test_ipv6.yml → test/test_ipv6/test_ipv6.yml


+ 19 - 0
test/test_ipv6/test_ipv6_prefer_ipv4_network.py

@@ -0,0 +1,19 @@
+import pytest
+
+
+def test_forwards_to_ipv4_only_network(docker_compose, nginxproxy):
+    r = nginxproxy.get("http://ipv4only.nginx-proxy.tld/port")
+    assert r.status_code == 200   
+    assert r.text == "answer from port 80\n"
+
+
+def test_forwards_to_dualstack_network(docker_compose, nginxproxy):
+    r = nginxproxy.get("http://dualstack.nginx-proxy.tld")
+    assert r.status_code == 200   
+    assert "Welcome to nginx!" in r.text
+
+
+def test_dualstack_network_prefer_ipv4_config(docker_compose, nginxproxy):
+    conf = nginxproxy.get_conf().decode('ASCII')
+    assert "IPv6 address: fd00:cafe:face:feed::2 (ignored; reachable but IPv4 prefered)" in conf
+    assert "server 172.16.20.2:80;" in conf

+ 45 - 0
test/test_ipv6/test_ipv6_prefer_ipv4_network.yml

@@ -0,0 +1,45 @@
+version: "2"
+
+networks:
+  ipv4net:
+    ipam:
+      config:
+        - subnet: 172.16.10.0/24
+  dualstacknet:
+    enable_ipv6: true
+    ipam:
+      config:
+        - subnet: 172.16.20.0/24
+        - subnet: fd00:cafe:face:feed::/64
+
+services:
+  ipv4only:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: ipv4only.nginx-proxy.tld
+    networks:
+      ipv4net:
+        ipv4_address: 172.16.10.2
+
+  dualstack:
+    image: nginx:alpine
+    environment:
+      VIRTUAL_HOST: dualstack.nginx-proxy.tld
+    networks:
+      dualstacknet:
+        ipv4_address: 172.16.20.2
+        ipv6_address: fd00:cafe:face:feed::2
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+    networks:
+      ipv4net:
+        ipv4_address: 172.16.10.3
+      dualstacknet:
+        ipv4_address: 172.16.20.3
+        ipv6_address: fd00:cafe:face:feed::3

+ 19 - 0
test/test_ipv6/test_ipv6_prefer_ipv6_network.py

@@ -0,0 +1,19 @@
+import pytest
+
+
+def test_forwards_to_ipv4_only_network(docker_compose, nginxproxy):
+    r = nginxproxy.get("http://ipv4only.nginx-proxy.tld/port")
+    assert r.status_code == 200   
+    assert r.text == "answer from port 80\n"
+
+
+def test_forwards_to_dualstack_network(docker_compose, nginxproxy):
+    r = nginxproxy.get("http://dualstack.nginx-proxy.tld")
+    assert r.status_code == 200   
+    assert "Welcome to nginx!" in r.text
+
+
+def test_dualstack_network_prefer_ipv6_config(docker_compose, nginxproxy):
+    conf = nginxproxy.get_conf().decode('ASCII')
+    assert "IPv4 address: 172.16.20.2 (ignored; reachable but IPv6 prefered)" in conf
+    assert "server [fd00:cafe:face:feed::2]:80;" in conf

+ 47 - 0
test/test_ipv6/test_ipv6_prefer_ipv6_network.yml

@@ -0,0 +1,47 @@
+version: "2"
+
+networks:
+  ipv4net:
+    ipam:
+      config:
+        - subnet: 172.16.10.0/24
+  dualstacknet:
+    enable_ipv6: true
+    ipam:
+      config:
+        - subnet: 172.16.20.0/24
+        - subnet: fd00:cafe:face:feed::/64
+
+services:
+  ipv4only:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: ipv4only.nginx-proxy.tld
+    networks:
+      ipv4net:
+        ipv4_address: 172.16.10.2
+
+  dualstack:
+    image: nginx:alpine
+    environment:
+      VIRTUAL_HOST: dualstack.nginx-proxy.tld
+    networks:
+      dualstacknet:
+        ipv4_address: 172.16.20.2
+        ipv6_address: fd00:cafe:face:feed::2
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+    environment:
+      PREFER_IPV6_NETWORK: "true"
+    networks:
+      ipv4net:
+        ipv4_address: 172.16.10.3
+      dualstacknet:
+        ipv4_address: 172.16.20.3
+        ipv6_address: fd00:cafe:face:feed::3