274 строки
5.1 KiB
Plaintext
274 строки
5.1 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('debug'); # to ensure any log-level can be outputed
|
|
|
|
repeat_each(2);
|
|
|
|
plan tests => repeat_each() * (blocks() * 2 + 2);
|
|
|
|
#no_diff();
|
|
#no_long_string();
|
|
run_tests();
|
|
|
|
__DATA__
|
|
|
|
=== TEST 1: test reading request body
|
|
--- config
|
|
location /echo_body {
|
|
lua_need_request_body on;
|
|
content_by_lua '
|
|
ngx.print(ngx.var.request_body or "nil")
|
|
';
|
|
}
|
|
--- request eval
|
|
"POST /echo_body
|
|
hello\x00\x01\x02
|
|
world\x03\x04\xff"
|
|
--- response_body eval
|
|
"hello\x00\x01\x02
|
|
world\x03\x04\xff"
|
|
|
|
|
|
|
|
=== TEST 2: test not reading request body
|
|
--- config
|
|
location /echo_body {
|
|
lua_need_request_body off;
|
|
content_by_lua '
|
|
ngx.print(ngx.var.request_body or "nil")
|
|
';
|
|
}
|
|
--- request eval
|
|
"POST /echo_body
|
|
hello\x00\x01\x02
|
|
world\x03\x04\xff"
|
|
--- response_body eval
|
|
"nil"
|
|
|
|
|
|
|
|
=== TEST 3: test default setting (not reading request body)
|
|
--- config
|
|
location /echo_body {
|
|
content_by_lua '
|
|
ngx.print(ngx.var.request_body or "nil")
|
|
';
|
|
}
|
|
--- request eval
|
|
"POST /echo_body
|
|
hello\x00\x01\x02
|
|
world\x03\x04\xff"
|
|
--- response_body eval
|
|
"nil"
|
|
|
|
|
|
|
|
=== TEST 4: test main conf
|
|
--- http_config
|
|
lua_need_request_body on;
|
|
--- config
|
|
location /echo_body {
|
|
content_by_lua '
|
|
ngx.print(ngx.var.request_body or "nil")
|
|
';
|
|
}
|
|
--- request eval
|
|
"POST /echo_body
|
|
hello\x00\x01\x02
|
|
world\x03\x04\xff"
|
|
--- response_body eval
|
|
"hello\x00\x01\x02
|
|
world\x03\x04\xff"
|
|
|
|
|
|
|
|
=== TEST 5: test server conf
|
|
--- config
|
|
lua_need_request_body on;
|
|
|
|
location /echo_body {
|
|
content_by_lua '
|
|
ngx.print(ngx.var.request_body or "nil")
|
|
';
|
|
}
|
|
--- request eval
|
|
"POST /echo_body
|
|
hello\x00\x01\x02
|
|
world\x03\x04\xff"
|
|
--- response_body eval
|
|
"hello\x00\x01\x02
|
|
world\x03\x04\xff"
|
|
|
|
|
|
|
|
=== TEST 6: test override main conf
|
|
--- http_config
|
|
lua_need_request_body on;
|
|
--- config
|
|
location /echo_body {
|
|
lua_need_request_body off;
|
|
content_by_lua '
|
|
ngx.print(ngx.var.request_body or "nil")
|
|
';
|
|
}
|
|
--- request eval
|
|
"POST /echo_body
|
|
hello\x00\x01\x02
|
|
world\x03\x04\xff"
|
|
--- response_body eval
|
|
"nil"
|
|
|
|
|
|
|
|
=== TEST 7: test override server conf
|
|
--- config
|
|
lua_need_request_body on;
|
|
|
|
location /echo_body {
|
|
lua_need_request_body off;
|
|
content_by_lua '
|
|
ngx.print(ngx.var.request_body or "nil")
|
|
';
|
|
}
|
|
--- request eval
|
|
"POST /echo_body
|
|
hello\x00\x01\x02
|
|
world\x03\x04\xff"
|
|
--- response_body eval
|
|
"nil"
|
|
|
|
|
|
|
|
=== TEST 8: test override server conf
|
|
--- config
|
|
location /proxy {
|
|
proxy_pass http://127.0.0.1:$server_port/hi;
|
|
}
|
|
location /hi {
|
|
echo_request_body;
|
|
}
|
|
location /echo_body {
|
|
lua_need_request_body off;
|
|
content_by_lua '
|
|
ngx.say(ngx.var.request_body or "nil")
|
|
local res = ngx.location.capture(
|
|
"/proxy",
|
|
{ method = ngx.HTTP_POST,
|
|
body = ngx.var.request_body })
|
|
|
|
ngx.say(res.status)
|
|
';
|
|
}
|
|
--- request eval
|
|
"POST /echo_body
|
|
"
|
|
--- response_body
|
|
nil
|
|
200
|
|
|
|
|
|
|
|
=== TEST 9: empty POST body
|
|
--- config
|
|
location /proxy {
|
|
proxy_pass http://127.0.0.1:$server_port/hi;
|
|
}
|
|
location /hi {
|
|
echo_request_body;
|
|
}
|
|
location /echo_body {
|
|
lua_need_request_body on;
|
|
content_by_lua '
|
|
ngx.say(ngx.var.request_body or "nil")
|
|
local res = ngx.location.capture(
|
|
"/proxy",
|
|
{ method = ngx.HTTP_POST,
|
|
body = ngx.var.request_body })
|
|
|
|
ngx.say(res.status)
|
|
';
|
|
}
|
|
--- request eval
|
|
"POST /echo_body
|
|
"
|
|
--- response_body
|
|
nil
|
|
200
|
|
|
|
|
|
|
|
=== TEST 10: on disk request body
|
|
--- config
|
|
location /proxy {
|
|
proxy_pass http://127.0.0.1:$server_port/hi;
|
|
}
|
|
location /hi {
|
|
echo_request_body;
|
|
}
|
|
location /echo_body {
|
|
lua_need_request_body on;
|
|
|
|
client_max_body_size 100k;
|
|
client_body_buffer_size 1;
|
|
sendfile on;
|
|
|
|
content_by_lua '
|
|
local res = ngx.location.capture(
|
|
"/proxy",
|
|
{ method = ngx.HTTP_POST,
|
|
body = ngx.var.request_body })
|
|
ngx.print(res.body)
|
|
';
|
|
}
|
|
--- request eval
|
|
"POST /echo_body
|
|
" . ('a' x 1024)
|
|
--- response_body chomp
|
|
|
|
|
|
|
|
=== TEST 11: no modify main request content-length
|
|
--- config
|
|
location /foo {
|
|
content_by_lua '
|
|
ngx.location.capture("/other", {body = "hello"})
|
|
ngx.say(ngx.req.get_headers()["Content-Length"] or "nil")
|
|
';
|
|
}
|
|
location /other {
|
|
echo hi;
|
|
}
|
|
--- request
|
|
POST /foo
|
|
hi
|
|
--- response_body
|
|
2
|
|
|
|
|
|
|
|
=== TEST 12: Expect: 100-Continue
|
|
--- config
|
|
location /echo_body {
|
|
lua_need_request_body on;
|
|
content_by_lua '
|
|
ngx.print(ngx.var.request_body or "nil")
|
|
';
|
|
}
|
|
--- request
|
|
POST /echo_body
|
|
hello world
|
|
--- more_headers
|
|
Expect: 100-Continue
|
|
--- ignore_response
|
|
--- no_error_log
|
|
[error]
|
|
[alert]
|
|
http finalize request: 500, "/echo_body?" a:1, c:2
|
|
http finalize request: 500, "/echo_body?" a:1, c:0
|
|
--- log_level: debug
|
|
|