wildcard-hosts.bats 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #!/usr/bin/env bats
  2. load test_helpers
  3. SUT_CONTAINER=bats-nginx-proxy-${TEST_FILE}
  4. function setup {
  5. # make sure to stop any web container before each test so we don't
  6. # have any unexpected contaiener running with VIRTUAL_HOST or VIRUTAL_PORT set
  7. stop_bats_containers web
  8. }
  9. @test "[$TEST_FILE] start a nginx-proxy container" {
  10. # GIVEN
  11. run nginxproxy $SUT_CONTAINER -v /var/run/docker.sock:/tmp/docker.sock:ro
  12. assert_success
  13. docker_wait_for_log $SUT_CONTAINER 9 "Watching docker events"
  14. }
  15. @test "[$TEST_FILE] VIRTUAL_HOST=*.wildcard.bats" {
  16. # WHEN
  17. prepare_web_container bats-wildcard-hosts-1 80 -e VIRTUAL_HOST=*.wildcard.bats
  18. dockergen_wait_for_event $SUT_CONTAINER start bats-wildcard-hosts-1
  19. sleep 1
  20. # THEN
  21. assert_200 f00.wildcard.bats
  22. assert_200 bar.wildcard.bats
  23. assert_503 unexpected.host.bats
  24. }
  25. @test "[$TEST_FILE] VIRTUAL_HOST=wildcard.bats.*" {
  26. # WHEN
  27. prepare_web_container bats-wildcard-hosts-2 80 -e VIRTUAL_HOST=wildcard.bats.*
  28. dockergen_wait_for_event $SUT_CONTAINER start bats-wildcard-hosts-2
  29. sleep 1
  30. # THEN
  31. assert_200 wildcard.bats.f00
  32. assert_200 wildcard.bats.bar
  33. assert_503 unexpected.host.bats
  34. }
  35. @test "[$TEST_FILE] VIRTUAL_HOST=~^foo\.bar\..*\.bats" {
  36. # WHEN
  37. prepare_web_container bats-wildcard-hosts-3 80 -e VIRTUAL_HOST=~^foo\.bar\..*\.bats
  38. dockergen_wait_for_event $SUT_CONTAINER start bats-wildcard-hosts-3
  39. sleep 1
  40. # THEN
  41. assert_200 foo.bar.whatever.bats
  42. assert_200 foo.bar.why.not.bats
  43. assert_200 foo.bar.why.not.bats-to-infinity-and-beyond
  44. assert_503 unexpected.host.bats
  45. }
  46. @test "[$TEST_FILE] VIRTUAL_HOST=~^foo\.bar\..*\.bats$" {
  47. # WHEN
  48. prepare_web_container bats-wildcard-hosts-4 80 -e VIRTUAL_HOST=~^foo\.bar\..*\.bats$
  49. dockergen_wait_for_event $SUT_CONTAINER start bats-wildcard-hosts-4
  50. sleep 1
  51. # THEN
  52. assert_200 foo.bar.whatever.bats
  53. assert_200 foo.bar.why.not.bats
  54. assert_503 foo.bar.why.not.bats-to-infinity-and-beyond
  55. assert_503 unexpected.host.bats
  56. }
  57. @test "[$TEST_FILE] stop all bats containers" {
  58. stop_bats_containers
  59. }
  60. # assert that querying nginx-proxy with the given Host header produces a `HTTP 200` response
  61. # $1 Host HTTP header to use when querying nginx-proxy
  62. function assert_200 {
  63. local -r host=$1
  64. run curl_container $SUT_CONTAINER / --head --header "Host: $host"
  65. assert_output -l 0 $'HTTP/1.1 200 OK\r'
  66. }
  67. # assert that querying nginx-proxy with the given Host header produces a `HTTP 503` response
  68. # $1 Host HTTP header to use when querying nginx-proxy
  69. function assert_503 {
  70. local -r host=$1
  71. run curl_container $SUT_CONTAINER / --head --header "Host: $host"
  72. assert_output -l 0 $'HTTP/1.1 503 Service Temporarily Unavailable\r'
  73. }