| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | #!/usr/bin/env batsload test_helpersSUT_CONTAINER=bats-nginx-proxy-${TEST_FILE}function setup {	# make sure to stop any web container before each test so we don't	# have any unexpected container running with VIRTUAL_HOST or VIRUTAL_PORT set	stop_bats_containers web}@test "[$TEST_FILE] start a nginx-proxy container" {	# GIVEN	run nginxproxy $SUT_CONTAINER -v /var/run/docker.sock:/tmp/docker.sock:ro	assert_success	docker_wait_for_log $SUT_CONTAINER 9 "Watching docker events"}@test "[$TEST_FILE] nginx-proxy passes arbitrary header" {	# WHEN	prepare_web_container bats-host-1 80 -e VIRTUAL_HOST=web.bats	dockergen_wait_for_event $SUT_CONTAINER start bats-host-1	sleep 1	# THEN	run curl_container $SUT_CONTAINER /headers -H "Foo: Bar" -H "Host: web.bats"	assert_output -l 'Foo: Bar'}##### Testing the handling of X-Forwarded-For #####@test "[$TEST_FILE] nginx-proxy generates X-Forwarded-For" {	# WHEN	prepare_web_container bats-host-2 80 -e VIRTUAL_HOST=web.bats	dockergen_wait_for_event $SUT_CONTAINER start bats-host-2	sleep 1	# THEN	run curl_container $SUT_CONTAINER /headers -H "Host: web.bats"	assert_output -p 'X-Forwarded-For:'}@test "[$TEST_FILE] nginx-proxy passes X-Forwarded-For" {	# WHEN	prepare_web_container bats-host-3 80 -e VIRTUAL_HOST=web.bats	dockergen_wait_for_event $SUT_CONTAINER start bats-host-3	sleep 1	# THEN	run curl_container $SUT_CONTAINER /headers -H "X-Forwarded-For: 1.2.3.4" -H "Host: web.bats"	assert_output -p 'X-Forwarded-For: 1.2.3.4, '}##### Testing the handling of X-Forwarded-Proto #####@test "[$TEST_FILE] nginx-proxy generates X-Forwarded-Proto" {	# WHEN	prepare_web_container bats-host-4 80 -e VIRTUAL_HOST=web.bats	dockergen_wait_for_event $SUT_CONTAINER start bats-host-4	sleep 1	# THEN	run curl_container $SUT_CONTAINER /headers -H "Host: web.bats"	assert_output -l 'X-Forwarded-Proto: http'}@test "[$TEST_FILE] nginx-proxy passes X-Forwarded-Proto" {	# WHEN	prepare_web_container bats-host-5 80 -e VIRTUAL_HOST=web.bats	dockergen_wait_for_event $SUT_CONTAINER start bats-host-5	sleep 1	# THEN	run curl_container $SUT_CONTAINER /headers -H "X-Forwarded-Proto: https" -H "Host: web.bats"	assert_output -l 'X-Forwarded-Proto: https'}##### Testing the handling of X-Forwarded-Port #####@test "[$TEST_FILE] nginx-proxy generates X-Forwarded-Port" {	# WHEN	prepare_web_container bats-host-6 80 -e VIRTUAL_HOST=web.bats	dockergen_wait_for_event $SUT_CONTAINER start bats-host-6	sleep 1	# THEN	run curl_container $SUT_CONTAINER /headers -H "Host: web.bats"	assert_output -l 'X-Forwarded-Port: 80'}@test "[$TEST_FILE] nginx-proxy passes X-Forwarded-Port" {	# WHEN	prepare_web_container bats-host-7 80 -e VIRTUAL_HOST=web.bats	dockergen_wait_for_event $SUT_CONTAINER start bats-host-7	sleep 1	# THEN	run curl_container $SUT_CONTAINER /headers -H "X-Forwarded-Port: 1234" -H "Host: web.bats"	assert_output -l 'X-Forwarded-Port: 1234'}##### Other headers@test "[$TEST_FILE] nginx-proxy generates X-Real-IP" {	# WHEN	prepare_web_container bats-host-8 80 -e VIRTUAL_HOST=web.bats	dockergen_wait_for_event $SUT_CONTAINER start bats-host-8	sleep 1	# THEN	run curl_container $SUT_CONTAINER /headers -H "Host: web.bats"	assert_output -p 'X-Real-IP: '}@test "[$TEST_FILE] nginx-proxy passes Host" {	# WHEN	prepare_web_container bats-host-9 80 -e VIRTUAL_HOST=web.bats	dockergen_wait_for_event $SUT_CONTAINER start bats-host-9	sleep 1	# THEN	run curl_container $SUT_CONTAINER /headers -H "Host: web.bats"	assert_output -l 'Host: web.bats'}@test "[$TEST_FILE] nginx-proxy supresses Proxy for httpoxy protection" {	# WHEN	prepare_web_container bats-host-10 80 -e VIRTUAL_HOST=web.bats	dockergen_wait_for_event $SUT_CONTAINER start bats-host-10	sleep 1	# THEN	run curl_container $SUT_CONTAINER /headers -H "Proxy: tcp://foo.com" -H "Host: web.bats"	refute_output -l 'Proxy: tcp://foo.com'}@test "[$TEST_FILE] stop all bats containers" {	stop_bats_containers}
 |