test_https.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import pytest
  2. def test_arbitrary_headers_are_passed_on(docker_compose, nginxproxy):
  3. r = nginxproxy.get("https://web.nginx-proxy.tld/headers", headers={'Foo': 'Bar'})
  4. assert r.status_code == 200
  5. assert "Foo: Bar\n" in r.text
  6. ##### Testing the handling of X-Forwarded-For #####
  7. def test_X_Forwarded_For_is_generated(docker_compose, nginxproxy):
  8. r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
  9. assert r.status_code == 200
  10. assert "X-Forwarded-For:" in r.text
  11. def test_X_Forwarded_For_is_passed_on(docker_compose, nginxproxy):
  12. r = nginxproxy.get("https://web.nginx-proxy.tld/headers", headers={'X-Forwarded-For': '1.2.3.4'})
  13. assert r.status_code == 200
  14. assert "X-Forwarded-For: 1.2.3.4, " in r.text
  15. ##### Testing the handling of X-Forwarded-Proto #####
  16. def test_X_Forwarded_Proto_is_generated(docker_compose, nginxproxy):
  17. r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
  18. assert r.status_code == 200
  19. assert "X-Forwarded-Proto: https" in r.text
  20. def test_X_Forwarded_Proto_is_passed_on(docker_compose, nginxproxy):
  21. r = nginxproxy.get("https://web.nginx-proxy.tld/headers", headers={'X-Forwarded-Proto': 'f00'})
  22. assert r.status_code == 200
  23. assert "X-Forwarded-Proto: f00\n" in r.text
  24. ##### Testing the handling of X-Forwarded-Port #####
  25. def test_X_Forwarded_Port_is_generated(docker_compose, nginxproxy):
  26. r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
  27. assert r.status_code == 200
  28. assert "X-Forwarded-Port: 443\n" in r.text
  29. def test_X_Forwarded_Port_is_passed_on(docker_compose, nginxproxy):
  30. r = nginxproxy.get("https://web.nginx-proxy.tld/headers", headers={'X-Forwarded-Port': '1234'})
  31. assert r.status_code == 200
  32. assert "X-Forwarded-Port: 1234\n" in r.text
  33. ##### Testing the handling of X-Forwarded-Ssl #####
  34. def test_X_Forwarded_Ssl_is_generated(docker_compose, nginxproxy):
  35. r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
  36. assert r.status_code == 200
  37. assert "X-Forwarded-Ssl: on\n" in r.text
  38. def test_X_Forwarded_Ssl_is_overwritten(docker_compose, nginxproxy):
  39. r = nginxproxy.get("https://web.nginx-proxy.tld/headers", headers={'X-Forwarded-Ssl': 'f00'})
  40. assert r.status_code == 200
  41. assert "X-Forwarded-Ssl: on\n" in r.text
  42. ##### Other headers
  43. def test_X_Real_IP_is_generated(docker_compose, nginxproxy):
  44. r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
  45. assert r.status_code == 200
  46. assert "X-Real-IP: " in r.text
  47. def test_Host_is_passed_on(docker_compose, nginxproxy):
  48. r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
  49. assert r.status_code == 200
  50. assert "Host: web.nginx-proxy.tld" in r.text
  51. def test_httpoxy_safe(docker_compose, nginxproxy):
  52. """
  53. See https://httpoxy.org/
  54. nginx-proxy should suppress the `Proxy` header
  55. """
  56. r = nginxproxy.get("https://web.nginx-proxy.tld/headers", headers={'Proxy': 'tcp://some.hacker.com'})
  57. assert r.status_code == 200
  58. assert "Proxy:" not in r.text