2012-03-14 14:28:05 +04:00
|
|
|
# vim:set ft= ts=4 sw=4 et fdm=marker:
|
2013-12-06 02:46:51 +04:00
|
|
|
use Test::Nginx::Socket::Lua;
|
2012-03-14 14:28:05 +04:00
|
|
|
|
|
|
|
worker_connections(1014);
|
|
|
|
#master_on();
|
|
|
|
#workers(4);
|
|
|
|
#log_level('warn');
|
|
|
|
no_root_location();
|
|
|
|
|
|
|
|
#repeat_each(2);
|
|
|
|
#repeat_each(2);
|
|
|
|
|
|
|
|
plan tests => repeat_each() * (blocks() * 3);
|
|
|
|
|
|
|
|
our $HtmlDir = html_dir;
|
|
|
|
|
|
|
|
#no_diff();
|
|
|
|
no_long_string();
|
|
|
|
run_tests();
|
|
|
|
|
|
|
|
__DATA__
|
|
|
|
|
|
|
|
=== TEST 1: satisfy any
|
|
|
|
--- config
|
|
|
|
location /test {
|
|
|
|
satisfy any;
|
|
|
|
allow all;
|
|
|
|
access_by_lua 'ngx.exit(403)';
|
|
|
|
|
|
|
|
echo something important;
|
|
|
|
}
|
|
|
|
--- request
|
|
|
|
GET /test
|
|
|
|
--- more_headers
|
|
|
|
--- response_body
|
|
|
|
something important
|
|
|
|
--- no_error_log
|
|
|
|
[error]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== TEST 2: satisfy any
|
|
|
|
--- config
|
|
|
|
location /test {
|
|
|
|
satisfy any;
|
|
|
|
deny all;
|
|
|
|
access_by_lua 'ngx.exit(403)';
|
|
|
|
|
|
|
|
echo something important;
|
|
|
|
}
|
|
|
|
--- request
|
|
|
|
GET /test
|
|
|
|
--- more_headers
|
|
|
|
--- response_body_like: 403 Forbidden
|
|
|
|
--- error_code: 403
|
|
|
|
--- error_log
|
|
|
|
access forbidden by rule
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== TEST 3: satisfy any (explicit ngx.exit(0))
|
|
|
|
--- config
|
|
|
|
location /test {
|
|
|
|
satisfy any;
|
|
|
|
deny all;
|
|
|
|
access_by_lua 'ngx.exit(0)';
|
|
|
|
|
|
|
|
echo something important;
|
|
|
|
}
|
|
|
|
--- request
|
|
|
|
GET /test
|
|
|
|
--- more_headers
|
|
|
|
--- response_body
|
|
|
|
something important
|
|
|
|
--- error_code: 200
|
|
|
|
--- no_error_log
|
|
|
|
[error]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== TEST 4: satisfy any (simple return)
|
|
|
|
--- config
|
|
|
|
location /test {
|
|
|
|
satisfy any;
|
|
|
|
deny all;
|
|
|
|
access_by_lua return;
|
|
|
|
|
|
|
|
echo something important;
|
|
|
|
}
|
|
|
|
--- request
|
|
|
|
GET /test
|
|
|
|
--- more_headers
|
|
|
|
--- response_body
|
|
|
|
something important
|
|
|
|
--- error_code: 200
|
|
|
|
--- no_error_log
|
|
|
|
[error]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== TEST 5: satisfy any (declined)
|
|
|
|
--- config
|
|
|
|
location /test {
|
|
|
|
satisfy any;
|
|
|
|
deny all;
|
|
|
|
access_by_lua 'ngx.exit(ngx.DECLINED)';
|
|
|
|
|
|
|
|
echo something important;
|
|
|
|
}
|
|
|
|
--- request
|
|
|
|
GET /test
|
|
|
|
--- more_headers
|
|
|
|
--- response_body_like: 403 Forbidden
|
|
|
|
--- error_code: 403
|
|
|
|
--- error_log
|
2012-03-14 16:37:43 +04:00
|
|
|
access forbidden by rule
|
2012-03-14 14:28:05 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== TEST 6: satisfy any (declined, with I/O)
|
|
|
|
--- config
|
|
|
|
location /test {
|
|
|
|
satisfy any;
|
|
|
|
deny all;
|
|
|
|
access_by_lua 'ngx.location.capture("/echo") ngx.exit(ngx.DECLINED)';
|
|
|
|
|
|
|
|
echo something important;
|
|
|
|
}
|
|
|
|
|
|
|
|
location /echo {
|
|
|
|
echo hi;
|
|
|
|
#echo_sleep 0.01;
|
|
|
|
}
|
|
|
|
--- request
|
|
|
|
GET /test
|
|
|
|
--- more_headers
|
|
|
|
--- response_body_like: 403 Forbidden
|
|
|
|
--- error_code: 403
|
|
|
|
--- error_log
|
2012-03-14 16:37:43 +04:00
|
|
|
access forbidden by rule
|
2012-03-14 14:28:05 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== TEST 7: satisfy any (simple return, with I/O)
|
|
|
|
--- config
|
|
|
|
location /test {
|
|
|
|
satisfy any;
|
|
|
|
deny all;
|
|
|
|
access_by_lua 'ngx.location.capture("/echo") return';
|
|
|
|
|
|
|
|
echo something important;
|
|
|
|
}
|
|
|
|
|
|
|
|
location /echo {
|
|
|
|
echo hi;
|
|
|
|
}
|
|
|
|
--- request
|
|
|
|
GET /test
|
|
|
|
--- more_headers
|
|
|
|
--- response_body
|
|
|
|
something important
|
|
|
|
--- error_code: 200
|
|
|
|
--- no_error_log
|
|
|
|
[error]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== TEST 8: satisfy any - with I/O
|
|
|
|
--- config
|
|
|
|
location /test {
|
|
|
|
satisfy any;
|
|
|
|
deny all;
|
|
|
|
access_by_lua 'ngx.location.capture("/echo") ngx.exit(403)';
|
|
|
|
|
|
|
|
echo something important;
|
|
|
|
}
|
|
|
|
|
|
|
|
location /echo {
|
|
|
|
echo hi;
|
|
|
|
}
|
|
|
|
--- request
|
|
|
|
GET /test
|
|
|
|
--- more_headers
|
|
|
|
--- response_body_like: 403 Forbidden
|
|
|
|
--- error_code: 403
|
|
|
|
--- error_log
|
|
|
|
access forbidden by rule
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== TEST 9: satisfy any (explicit ngx.exit(0), with I/O)
|
|
|
|
--- config
|
|
|
|
location /test {
|
|
|
|
satisfy any;
|
|
|
|
deny all;
|
|
|
|
access_by_lua 'ngx.location.capture("/echo") ngx.exit(0)';
|
|
|
|
|
|
|
|
echo something important;
|
|
|
|
}
|
|
|
|
|
|
|
|
location /echo {
|
|
|
|
echo hi;
|
|
|
|
}
|
|
|
|
--- request
|
|
|
|
GET /test
|
|
|
|
--- more_headers
|
|
|
|
--- response_body
|
|
|
|
something important
|
|
|
|
--- error_code: 200
|
|
|
|
--- no_error_log
|
|
|
|
[error]
|
|
|
|
|