Initial Commit
This commit is contained in:
568
headers-more-nginx-module-0.32/t/sanity.t
Normal file
568
headers-more-nginx-module-0.32/t/sanity.t
Normal file
@@ -0,0 +1,568 @@
|
||||
# vi:filetype=
|
||||
|
||||
use lib 'lib';
|
||||
use Test::Nginx::Socket;
|
||||
|
||||
repeat_each(2);
|
||||
|
||||
plan tests => repeat_each() * 113;
|
||||
|
||||
#master_on();
|
||||
#workers(2);
|
||||
log_level("warn");
|
||||
no_diff;
|
||||
|
||||
run_tests();
|
||||
|
||||
__DATA__
|
||||
|
||||
=== TEST 1: simple set (1 arg)
|
||||
--- config
|
||||
location /foo {
|
||||
echo hi;
|
||||
more_set_headers 'X-Foo: Blah';
|
||||
}
|
||||
--- request
|
||||
GET /foo
|
||||
--- response_headers
|
||||
X-Foo: Blah
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 2: simple set (2 args)
|
||||
--- config
|
||||
location /foo {
|
||||
echo hi;
|
||||
more_set_headers 'X-Foo: Blah' 'X-Bar: hi';
|
||||
}
|
||||
--- request
|
||||
GET /foo
|
||||
--- response_headers
|
||||
X-Foo: Blah
|
||||
X-Bar: hi
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 3: two sets in a single location
|
||||
--- config
|
||||
location /two {
|
||||
echo hi;
|
||||
more_set_headers 'X-Foo: Blah'
|
||||
more_set_headers 'X-Bar: hi';
|
||||
}
|
||||
--- request
|
||||
GET /two
|
||||
--- response_headers
|
||||
X-Foo: Blah
|
||||
X-Bar: hi
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 4: two sets in a single location (for 404 too)
|
||||
--- config
|
||||
location /two {
|
||||
more_set_headers 'X-Foo: Blah'
|
||||
more_set_headers 'X-Bar: hi';
|
||||
return 404;
|
||||
}
|
||||
--- request
|
||||
GET /two
|
||||
--- response_headers
|
||||
X-Foo: Blah
|
||||
X-Bar: hi
|
||||
--- response_body_like: 404 Not Found
|
||||
--- error_code: 404
|
||||
|
||||
|
||||
|
||||
=== TEST 5: set a header then clears it (500)
|
||||
--- config
|
||||
location /two {
|
||||
more_set_headers 'X-Foo: Blah';
|
||||
more_set_headers 'X-Foo:';
|
||||
return 500;
|
||||
}
|
||||
--- request
|
||||
GET /two
|
||||
--- response_headers
|
||||
! X-Foo
|
||||
! X-Bar
|
||||
--- response_body_like: 500 Internal Server Error
|
||||
--- error_code: 500
|
||||
|
||||
|
||||
|
||||
=== TEST 6: set a header only when 500 (matched)
|
||||
--- config
|
||||
location /bad {
|
||||
more_set_headers -s 500 'X-Mine: Hiya';
|
||||
more_set_headers -s 404 'X-Yours: Blah';
|
||||
return 500;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-Mine: Hiya
|
||||
! X-Yours
|
||||
--- response_body_like: 500 Internal Server Error
|
||||
--- error_code: 500
|
||||
|
||||
|
||||
|
||||
=== TEST 7: set a header only when 500 (not matched with 200)
|
||||
--- config
|
||||
location /bad {
|
||||
more_set_headers -s 500 'X-Mine: Hiya';
|
||||
more_set_headers -s 404 'X-Yours: Blah';
|
||||
echo hello;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
! X-Mine
|
||||
! X-Yours
|
||||
--- response_body
|
||||
hello
|
||||
--- error_code: 200
|
||||
|
||||
|
||||
|
||||
=== TEST 8: set a header only when 500 (not matched with 404)
|
||||
--- config
|
||||
location /bad {
|
||||
more_set_headers -s 500 'X-Mine: Hiya';
|
||||
more_set_headers -s 404 'X-Yours: Blah';
|
||||
return 404;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
! X-Mine
|
||||
X-Yours: Blah
|
||||
--- response_body_like: 404 Not Found
|
||||
--- error_code: 404
|
||||
|
||||
|
||||
|
||||
=== TEST 9: more conditions
|
||||
--- config
|
||||
location /bad {
|
||||
more_set_headers -s '503 404' 'X-Mine: Hiya';
|
||||
more_set_headers -s ' 404 413 ' 'X-Yours: Blah';
|
||||
return 503;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-Mine: Hiya
|
||||
! X-Yours
|
||||
--- response_body_like: 503 Service
|
||||
--- error_code: 503
|
||||
|
||||
|
||||
|
||||
=== TEST 10: more conditions
|
||||
--- config
|
||||
location /bad {
|
||||
more_set_headers -s '503 404' 'X-Mine: Hiya';
|
||||
more_set_headers -s ' 404 413 ' 'X-Yours: Blah';
|
||||
return 404;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-Mine: Hiya
|
||||
X-Yours: Blah
|
||||
--- response_body_like: 404 Not Found
|
||||
--- error_code: 404
|
||||
|
||||
|
||||
|
||||
=== TEST 11: more conditions
|
||||
--- config
|
||||
location /bad {
|
||||
more_set_headers -s '503 404' 'X-Mine: Hiya';
|
||||
more_set_headers -s ' 404 413 ' 'X-Yours: Blah';
|
||||
return 413;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
! X-Mine
|
||||
X-Yours: Blah
|
||||
--- response_body_like: 413 Request Entity Too Large
|
||||
--- error_code: 413
|
||||
|
||||
|
||||
|
||||
=== TEST 12: simple -t
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/css';
|
||||
more_set_headers -t 'text/css' 'X-CSS: yes';
|
||||
echo hi;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-CSS: yes
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 13: simple -t (not matched)
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/plain';
|
||||
more_set_headers -t 'text/css' 'X-CSS: yes';
|
||||
echo hi;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
! X-CSS
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 14: multiple -t (not matched)
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/plain';
|
||||
more_set_headers -t 'text/javascript' -t 'text/css' 'X-CSS: yes';
|
||||
echo hi;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
! X-CSS
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 15: multiple -t (matched)
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/plain';
|
||||
more_set_headers -t 'text/javascript' -t 'text/plain' 'X-CSS: yes';
|
||||
echo hi;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-CSS: yes
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 16: multiple -t (matched)
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/javascript';
|
||||
more_set_headers -t 'text/javascript' -t 'text/plain' 'X-CSS: yes';
|
||||
echo hi;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-CSS: yes
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 17: multiple -t (matched) with extra spaces
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/javascript';
|
||||
more_set_headers -t ' text/javascript ' -t 'text/plain' 'X-CSS: yes';
|
||||
echo hi;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-CSS: yes
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 18: multiple -t merged
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/javascript';
|
||||
more_set_headers -t ' text/javascript text/plain' 'X-CSS: yes';
|
||||
echo hi;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-CSS: yes
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 19: multiple -t merged (2)
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/plain';
|
||||
more_set_headers -t ' text/javascript text/plain' 'X-CSS: yes';
|
||||
echo hi;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-CSS: yes
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 20: multiple -s option in a directive (not matched)
|
||||
--- config
|
||||
location /bad {
|
||||
more_set_headers -s 404 -s 500 'X-status: howdy';
|
||||
echo hi;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
! X-status
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 21: multiple -s option in a directive (matched 404)
|
||||
--- config
|
||||
location /bad {
|
||||
more_set_headers -s 404 -s 500 'X-status: howdy';
|
||||
return 404;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-status: howdy
|
||||
--- response_body_like: 404 Not Found
|
||||
--- error_code: 404
|
||||
|
||||
|
||||
|
||||
=== TEST 22: multiple -s option in a directive (matched 500)
|
||||
--- config
|
||||
location /bad {
|
||||
more_set_headers -s 404 -s 500 'X-status: howdy';
|
||||
return 500;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-status: howdy
|
||||
--- response_body_like: 500 Internal Server Error
|
||||
--- error_code: 500
|
||||
|
||||
|
||||
|
||||
=== TEST 23: -s mixed with -t
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/html';
|
||||
more_set_headers -s 404 -s 200 -t 'text/html' 'X-status: howdy2';
|
||||
return 404;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-status: howdy2
|
||||
--- response_body_like: 404 Not Found
|
||||
--- error_code: 404
|
||||
|
||||
|
||||
|
||||
=== TEST 24: -s mixed with -t
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/html';
|
||||
more_set_headers -s 404 -s 200 -t 'text/plain' 'X-status: howdy2';
|
||||
return 404;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
! X-status
|
||||
--- response_body_like: 404 Not Found
|
||||
--- error_code: 404
|
||||
|
||||
|
||||
|
||||
=== TEST 25: -s mixed with -t
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/html';
|
||||
more_set_headers -s 404 -s 200 -t 'text/html' 'X-status: howdy2';
|
||||
echo hi;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-status: howdy2
|
||||
--- response_body
|
||||
hi
|
||||
--- error_code: 200
|
||||
|
||||
|
||||
|
||||
=== TEST 26: -s mixed with -t
|
||||
--- config
|
||||
location /bad {
|
||||
default_type 'text/html';
|
||||
more_set_headers -s 500 -s 200 -t 'text/html' 'X-status: howdy2';
|
||||
return 404;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
! X-status
|
||||
--- response_body_like: 404 Not Found
|
||||
--- error_code: 404
|
||||
|
||||
|
||||
|
||||
=== TEST 27: merge from the upper level
|
||||
--- config
|
||||
more_set_headers -s 404 -t 'text/html' 'X-status2: howdy3';
|
||||
location /bad {
|
||||
default_type 'text/html';
|
||||
more_set_headers -s 500 -s 200 -t 'text/html' 'X-status: howdy2';
|
||||
return 404;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-status2: howdy3
|
||||
! X-status
|
||||
--- response_body_like: 404 Not Found
|
||||
--- error_code: 404
|
||||
|
||||
|
||||
|
||||
=== TEST 28: merge from the upper level
|
||||
--- config
|
||||
more_set_headers -s 404 -t 'text/html' 'X-status2: howdy3';
|
||||
location /bad {
|
||||
default_type 'text/html';
|
||||
more_set_headers -s 500 -s 200 -t 'text/html' 'X-status: howdy2';
|
||||
echo yeah;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
! X-status2
|
||||
X-status: howdy2
|
||||
--- response_body
|
||||
yeah
|
||||
--- error_code: 200
|
||||
|
||||
|
||||
|
||||
=== TEST 29: override settings by inheritance
|
||||
--- config
|
||||
more_set_headers -s 404 -t 'text/html' 'X-status: yeah';
|
||||
location /bad {
|
||||
default_type 'text/html';
|
||||
more_set_headers -s 404 -t 'text/html' 'X-status: nope';
|
||||
return 404;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-status: nope
|
||||
--- response_body_like: 404 Not Found
|
||||
--- error_code: 404
|
||||
|
||||
|
||||
|
||||
=== TEST 30: append settings by inheritance
|
||||
--- config
|
||||
more_set_headers -s 404 -t 'text/html' 'X-status: yeah';
|
||||
location /bad {
|
||||
default_type 'text/html';
|
||||
more_set_headers -s 404 -t 'text/html' 'X-status2: nope';
|
||||
return 404;
|
||||
}
|
||||
--- request
|
||||
GET /bad
|
||||
--- response_headers
|
||||
X-status: yeah
|
||||
X-status2: nope
|
||||
--- response_body_like: 404 Not Found
|
||||
--- error_code: 404
|
||||
|
||||
|
||||
|
||||
=== TEST 31: clear headers with wildcard
|
||||
--- config
|
||||
location = /backend {
|
||||
add_header X-Hidden-One "i am hidden";
|
||||
add_header X-Hidden-Two "me 2";
|
||||
echo hi;
|
||||
}
|
||||
location /hello {
|
||||
more_clear_headers 'X-Hidden-*';
|
||||
proxy_pass http://127.0.0.1:$server_port/backend;
|
||||
}
|
||||
--- request
|
||||
GET /hello
|
||||
--- response_headers
|
||||
! X-Hidden-One
|
||||
! X-Hidden-Two
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 32: clear duplicate headers
|
||||
--- config
|
||||
location = /backend {
|
||||
add_header pragma no-cache;
|
||||
add_header pragma no-cache;
|
||||
echo hi;
|
||||
}
|
||||
location /hello {
|
||||
more_clear_headers 'pragma';
|
||||
proxy_pass http://127.0.0.1:$server_port/backend;
|
||||
}
|
||||
--- request
|
||||
GET /hello
|
||||
--- response_headers
|
||||
!pragma
|
||||
--- response_body
|
||||
hi
|
||||
|
||||
|
||||
|
||||
=== TEST 33: HTTP 0.9 (set)
|
||||
--- config
|
||||
location /foo {
|
||||
more_set_headers 'X-Foo: howdy';
|
||||
echo ok;
|
||||
}
|
||||
--- raw_request eval
|
||||
"GET /foo\r\n"
|
||||
--- response_headers
|
||||
! X-Foo
|
||||
--- response_body
|
||||
ok
|
||||
--- http09
|
||||
|
||||
Reference in New Issue
Block a user