2
0

test_dockergen_v3.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import os
  2. import docker
  3. import logging
  4. import pytest
  5. import re
  6. def versiontuple(v):
  7. # Temporary hack to fix version parsing until PR#755 is pulled
  8. v = re.sub("[^\d\.]", "", v)
  9. return tuple(map(int, (v.split("."))))
  10. docker_version = docker.from_env().version()['Version']
  11. pytestmark = pytest.mark.skipif(versiontuple(docker_version) < versiontuple('1.13'),
  12. reason="Docker compose syntax v3 requires docker engine v1.13")
  13. @pytest.yield_fixture(scope="module")
  14. def nginx_tmpl():
  15. """
  16. pytest fixture which extracts the the nginx config template from
  17. the jwilder/nginx-proxy:test image
  18. """
  19. script_dir = os.path.dirname(__file__)
  20. logging.info("extracting nginx.tmpl from jwilder/nginx-proxy:test")
  21. docker_client = docker.from_env()
  22. print(docker_client.containers.run(
  23. image='jwilder/nginx-proxy:test',
  24. remove=True,
  25. volumes=['{current_dir}:{current_dir}'.format(current_dir=script_dir)],
  26. entrypoint='sh',
  27. command='-xc "cp /app/nginx.tmpl {current_dir} && chmod 777 {current_dir}/nginx.tmpl"'.format(
  28. current_dir=script_dir),
  29. stderr=True))
  30. yield
  31. logging.info("removing nginx.tmpl")
  32. os.remove(os.path.join(script_dir, "nginx.tmpl"))
  33. def test_unknown_virtual_host_is_503(nginx_tmpl, docker_compose, nginxproxy):
  34. r = nginxproxy.get("http://unknown.nginx.container.docker/")
  35. assert r.status_code == 503
  36. def test_forwards_to_whoami(nginx_tmpl, docker_compose, nginxproxy):
  37. r = nginxproxy.get("http://whoami.nginx.container.docker/")
  38. assert r.status_code == 200
  39. whoami_container = docker_compose.containers.get("whoami")
  40. assert r.text == "I'm %s\n" % whoami_container.id[:12]