2
0

wildcard-hosts.bats 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. CIDS=( $(docker ps -q --filter "label=bats-type=web") )
  8. if [ ${#CIDS[@]} -gt 0 ]; then
  9. docker stop ${CIDS[@]} >&2
  10. fi
  11. }
  12. @test "[$TEST_FILE] start a nginx-proxy container" {
  13. # GIVEN
  14. run nginxproxy $SUT_CONTAINER -v /var/run/docker.sock:/tmp/docker.sock:ro
  15. assert_success
  16. docker_wait_for_log $SUT_CONTAINER 3 "Watching docker events"
  17. }
  18. @test "[$TEST_FILE] VIRTUAL_HOST=*.wildcard.bats" {
  19. # WHEN
  20. prepare_web_container bats-wildcard-hosts-1 80 -e VIRTUAL_HOST=*.wildcard.bats
  21. # THEN
  22. assert_200 f00.wildcard.bats
  23. assert_200 bar.wildcard.bats
  24. assert_503 unexpected.host.bats
  25. }
  26. @test "[$TEST_FILE] VIRTUAL_HOST=wildcard.bats.*" {
  27. # WHEN
  28. prepare_web_container bats-wildcard-hosts-2 80 -e VIRTUAL_HOST=wildcard.bats.*
  29. # THEN
  30. assert_200 wildcard.bats.f00
  31. assert_200 wildcard.bats.bar
  32. assert_503 unexpected.host.bats
  33. }
  34. @test "[$TEST_FILE] VIRTUAL_HOST=~^foo\.bar\..*\.bats" {
  35. # WHEN
  36. prepare_web_container bats-wildcard-hosts-2 80 -e VIRTUAL_HOST=~^foo\.bar\..*\.bats
  37. # THEN
  38. assert_200 foo.bar.whatever.bats
  39. assert_200 foo.bar.why.not.bats
  40. assert_503 unexpected.host.bats
  41. }
  42. # assert that querying nginx-proxy with the given Host header produces a `HTTP 200` response
  43. # $1 Host HTTP header to use when querying nginx-proxy
  44. function assert_200 {
  45. local -r host=$1
  46. run curl_container $SUT_CONTAINER / --head --header "Host: $host"
  47. assert_output -l 0 $'HTTP/1.1 200 OK\r'
  48. }
  49. # assert that querying nginx-proxy with the given Host header produces a `HTTP 503` response
  50. # $1 Host HTTP header to use when querying nginx-proxy
  51. function assert_503 {
  52. local -r host=$1
  53. run curl_container $SUT_CONTAINER / --head --header "Host: $host"
  54. assert_output -l 0 $'HTTP/1.1 503 Service Temporarily Unavailable\r'
  55. }