273 строки
4.2 KiB
Plaintext
273 строки
4.2 KiB
Plaintext
# vim:set ft= ts=4 sw=4 et fdm=marker:
|
|
|
|
use Test::Nginx::Socket::Lua;
|
|
|
|
#worker_connections(1014);
|
|
#master_process_enabled(1);
|
|
log_level('warn');
|
|
|
|
#repeat_each(120);
|
|
repeat_each(2);
|
|
|
|
plan tests => repeat_each() * (blocks() * 2 + 7);
|
|
|
|
#no_diff();
|
|
#no_long_string();
|
|
|
|
run_tests();
|
|
|
|
__DATA__
|
|
|
|
=== TEST 1: no key found
|
|
--- config
|
|
location /nil {
|
|
content_by_lua '
|
|
ngx.say(ngx.blah_blah == nil and "nil" or "not nil")
|
|
';
|
|
}
|
|
--- request
|
|
GET /nil
|
|
--- response_body
|
|
nil
|
|
|
|
|
|
|
|
=== TEST 2: .status found
|
|
--- config
|
|
location /nil {
|
|
content_by_lua '
|
|
ngx.say(ngx.status == nil and "nil" or "not nil")
|
|
';
|
|
}
|
|
--- request
|
|
GET /nil
|
|
--- response_body
|
|
not nil
|
|
|
|
|
|
|
|
=== TEST 3: default to 0
|
|
--- config
|
|
location /nil {
|
|
content_by_lua '
|
|
ngx.say(ngx.status);
|
|
';
|
|
}
|
|
--- request
|
|
GET /nil
|
|
--- response_body
|
|
0
|
|
|
|
|
|
|
|
=== TEST 4: default to 0
|
|
--- config
|
|
location /nil {
|
|
content_by_lua '
|
|
ngx.say("blah");
|
|
ngx.say(ngx.status);
|
|
';
|
|
}
|
|
--- request
|
|
GET /nil
|
|
--- response_body
|
|
blah
|
|
200
|
|
|
|
|
|
|
|
=== TEST 5: set 201
|
|
--- config
|
|
location /201 {
|
|
content_by_lua '
|
|
ngx.status = 201;
|
|
ngx.say("created");
|
|
';
|
|
}
|
|
--- request
|
|
GET /201
|
|
--- response_body
|
|
created
|
|
--- error_code: 201
|
|
|
|
|
|
|
|
=== TEST 6: set "201"
|
|
--- config
|
|
location /201 {
|
|
content_by_lua '
|
|
ngx.status = "201";
|
|
ngx.say("created");
|
|
';
|
|
}
|
|
--- request
|
|
GET /201
|
|
--- response_body
|
|
created
|
|
--- error_code: 201
|
|
|
|
|
|
|
|
=== TEST 7: set "201.7"
|
|
--- config
|
|
location /201 {
|
|
content_by_lua '
|
|
ngx.status = "201.7";
|
|
ngx.say("created");
|
|
';
|
|
}
|
|
--- request
|
|
GET /201
|
|
--- response_body
|
|
created
|
|
--- error_code: 201
|
|
|
|
|
|
|
|
=== TEST 8: set "abc"
|
|
--- config
|
|
location /201 {
|
|
content_by_lua '
|
|
ngx.status = "abc";
|
|
ngx.say("created");
|
|
';
|
|
}
|
|
--- request
|
|
GET /201
|
|
--- response_body_like: 500 Internal Server Error
|
|
--- error_code: 500
|
|
|
|
|
|
|
|
=== TEST 9: set blah
|
|
--- config
|
|
location /201 {
|
|
content_by_lua '
|
|
ngx.blah = 201;
|
|
ngx.say("created");
|
|
';
|
|
}
|
|
--- request
|
|
GET /201
|
|
--- response_body
|
|
created
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 10: set ngx.status before headers are sent
|
|
--- config
|
|
location /t {
|
|
content_by_lua '
|
|
ngx.say("ok")
|
|
ngx.status = 201
|
|
';
|
|
}
|
|
--- request
|
|
GET /t
|
|
--- response_body
|
|
ok
|
|
--- error_code: 200
|
|
--- error_log eval
|
|
qr/\[error\] .*? attempt to set ngx\.status after sending out response headers/
|
|
|
|
|
|
|
|
=== TEST 11: http 1.0 and ngx.status
|
|
--- config
|
|
location /nil {
|
|
content_by_lua '
|
|
ngx.status = ngx.HTTP_UNAUTHORIZED
|
|
ngx.say("invalid request")
|
|
ngx.exit(ngx.HTTP_OK)
|
|
';
|
|
}
|
|
--- request
|
|
GET /nil HTTP/1.0
|
|
--- response_body
|
|
invalid request
|
|
--- error_code: 401
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 12: github issue #221: cannot modify ngx.status for responses from ngx_proxy
|
|
--- config
|
|
location = /t {
|
|
proxy_pass http://127.0.0.1:$server_port/;
|
|
header_filter_by_lua '
|
|
if ngx.status == 206 then
|
|
ngx.status = ngx.HTTP_OK
|
|
end
|
|
';
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- more_headers
|
|
Range: bytes=0-4
|
|
|
|
--- response_body chop
|
|
<html
|
|
|
|
--- error_code: 200
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 13: 101 response has a complete status line
|
|
--- config
|
|
location /t {
|
|
content_by_lua '
|
|
ngx.status = 101
|
|
ngx.send_headers()
|
|
';
|
|
}
|
|
--- request
|
|
GET /t
|
|
--- raw_response_headers_like: ^HTTP/1.1 101 Switching Protocols\r\n
|
|
--- error_code: 101
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 14: reading error status code
|
|
--- config
|
|
location = /t {
|
|
content_by_lua 'ngx.say("status = ", ngx.status)';
|
|
}
|
|
--- raw_request eval
|
|
"GET /t\r\n"
|
|
--- http09
|
|
--- response_body
|
|
status = 9
|
|
|
|
|
|
|
|
=== TEST 15: err status
|
|
--- config
|
|
location /nil {
|
|
content_by_lua '
|
|
ngx.exit(502)
|
|
';
|
|
body_filter_by_lua '
|
|
if ngx.arg[2] then
|
|
ngx.log(ngx.WARN, "ngx.status = ", ngx.status)
|
|
end
|
|
';
|
|
}
|
|
--- request
|
|
GET /nil
|
|
--- response_body_like: 502 Bad Gateway
|
|
--- error_code: 502
|
|
--- error_log
|
|
ngx.status = 502
|
|
--- no_error_log
|
|
[error]
|
|
|