|
@@ -0,0 +1,46 @@
|
|
|
+"""
|
|
|
+Test that nginx-proxy detects new containers
|
|
|
+"""
|
|
|
+from time import sleep
|
|
|
+
|
|
|
+import pytest
|
|
|
+from docker.errors import NotFound
|
|
|
+
|
|
|
+
|
|
|
+@pytest.yield_fixture()
|
|
|
+def web1(docker_compose):
|
|
|
+ """
|
|
|
+ pytest fixture creating a web container with `VIRTUAL_HOST=web1.nginx-proxy` listening on port 81.
|
|
|
+ """
|
|
|
+ container = docker_compose.containers.run(
|
|
|
+ name="web1",
|
|
|
+ image="web",
|
|
|
+ detach=True,
|
|
|
+ environment={
|
|
|
+ "WEB_PORTS": "81",
|
|
|
+ "VIRTUAL_HOST": "web1.nginx-proxy"
|
|
|
+ },
|
|
|
+ ports={"81/tcp": None}
|
|
|
+ )
|
|
|
+ sleep(2) # give it some time to initialize and for docker-gen to detect it
|
|
|
+ yield container
|
|
|
+ try:
|
|
|
+ docker_compose.containers.get("web1").remove(force=True)
|
|
|
+ except NotFound:
|
|
|
+ pass
|
|
|
+
|
|
|
+
|
|
|
+def test_nginx_proxy_behavior_when_alone(docker_compose, nginxproxy):
|
|
|
+ r = nginxproxy.get("http://nginx-proxy/")
|
|
|
+ assert r.status_code == 503
|
|
|
+
|
|
|
+
|
|
|
+def test_new_container_is_detected(web1, nginxproxy):
|
|
|
+ r = nginxproxy.get("http://web1.nginx-proxy/port")
|
|
|
+ assert r.status_code == 200
|
|
|
+ assert "answer from port 81\n" == r.text
|
|
|
+
|
|
|
+ web1.remove(force=True)
|
|
|
+ sleep(2)
|
|
|
+ r = nginxproxy.get("http://web1.nginx-proxy/port")
|
|
|
+ assert r.status_code == 503
|