mirror of
https://github.com/thib8956/nginx-proxy
synced 2024-11-22 11:56:31 +00:00
140 lines
3.9 KiB
Bash
140 lines
3.9 KiB
Bash
#!/usr/bin/env bats
|
|
load test_helpers
|
|
SUT_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
|
|
}
|