lua-nginx-module/t/024-access/exec.t

352 строки
6.1 KiB
Plaintext

# vim:set ft= ts=4 sw=4 et fdm=marker:
use Test::Nginx::Socket::Lua;
repeat_each(2);
#repeat_each(1);
plan tests => blocks() * repeat_each() * 2;
#no_diff();
#no_long_string();
run_tests();
__DATA__
=== TEST 1: sanity
--- config
location /read {
access_by_lua '
ngx.exec("/hi");
ngx.say("Hi");
';
}
location /hi {
echo "Hello";
}
--- request
GET /read
--- response_body
Hello
=== TEST 2: empty uri arg
--- config
location /read {
access_by_lua '
ngx.exec("");
ngx.say("Hi");
';
content_by_lua 'ngx.exit(ngx.OK)';
}
location /hi {
echo "Hello";
}
--- request
GET /read
--- response_body_like: 500 Internal Server Error
--- error_code: 500
=== TEST 3: no arg
--- config
location /read {
access_by_lua '
ngx.exec();
ngx.say("Hi");
';
content_by_lua 'ngx.exit(ngx.OK)';
}
location /hi {
echo "Hello";
}
--- request
GET /read
--- response_body_like: 500 Internal Server Error
--- error_code: 500
=== TEST 4: too many args
--- config
location /read {
access_by_lua '
ngx.exec(1, 2, 3, 4);
ngx.say("Hi");
';
content_by_lua 'ngx.exit(ngx.OK)';
}
location /hi {
echo "Hello";
}
--- request
GET /read
--- response_body_like: 500 Internal Server Error
--- error_code: 500
=== TEST 5: null uri
--- config
location /read {
access_by_lua '
ngx.exec(nil)
ngx.say("Hi")
';
content_by_lua 'ngx.exit(ngx.OK)';
}
location /hi {
echo "Hello";
}
--- request
GET /read
--- response_body_like: 500 Internal Server Error
--- error_code: 500
=== TEST 6: user args
--- config
location /read {
access_by_lua '
ngx.exec("/hi", "Yichun Zhang")
ngx.say("Hi")
';
content_by_lua 'ngx.exit(ngx.OK)';
}
location /hi {
echo Hello $query_string;
}
--- request
GET /read
--- response_body
Hello Yichun Zhang
=== TEST 7: args in uri
--- config
location /read {
access_by_lua '
ngx.exec("/hi?agentzh")
ngx.say("Hi")
';
content_by_lua 'ngx.exit(ngx.OK)';
}
location /hi {
echo Hello $query_string;
}
--- request
GET /read
--- response_body
Hello agentzh
=== TEST 8: args in uri and user args
--- config
location /read {
access_by_lua '
ngx.exec("/hi?a=Yichun", "b=Zhang")
ngx.say("Hi")
';
content_by_lua 'ngx.exit(ngx.OK)';
}
location /hi {
echo Hello $query_string;
}
--- request
GET /read
--- response_body
Hello a=Yichun&b=Zhang
=== TEST 9: args in uri and user args
--- config
location /read {
access_by_lua '
ngx.exec("@hi?a=Yichun", "b=Zhang")
ngx.say("Hi")
';
content_by_lua 'ngx.exit(ngx.OK)';
}
location @hi {
echo Hello $query_string;
}
--- request
GET /read
--- response_body
Hello
=== TEST 10: exec after location capture
--- config
location /test {
access_by_lua_file 'html/test.lua';
echo world;
}
location /a {
echo "hello";
}
location /b {
echo "hello";
}
--- user_files
>>> test.lua
ngx.location.capture('/a')
ngx.exec('/b')
--- request
GET /test
--- response_body
hello
=== TEST 11: exec after (named) location capture
--- config
location /test {
access_by_lua_file 'html/test.lua';
}
location /a {
echo "hello";
}
location @b {
echo "hello";
}
--- user_files
>>> test.lua
ngx.location.capture('/a')
ngx.exec('@b')
--- request
GET /test
--- response_body
hello
=== TEST 12: github issue #40: 2 Subrequest calls when using access_by_lua, ngx.exec and echo_location
--- config
location = /hi {
echo hello;
}
location /sub {
proxy_pass http://127.0.0.1:$server_port/hi;
}
location /p{
#content_by_lua '
#local res = ngx.location.capture("/sub")
#ngx.print(res.body)
#';
echo_location /sub;
}
location /lua {
access_by_lua '
ngx.exec("/p")
';
}
--- request
GET /lua
--- response_body
hello
--- timeout: 3
=== TEST 13: github issue #40: 2 Subrequest calls when using access_by_lua, ngx.exec and echo_location (named location)
--- config
location = /hi {
echo hello;
}
location /sub {
proxy_pass http://127.0.0.1:$server_port/hi;
}
location @p {
#content_by_lua '
#local res = ngx.location.capture("/sub")
#ngx.print(res.body)
#';
echo_location /sub;
}
location /lua {
access_by_lua '
ngx.exec("@p")
';
}
--- request
GET /lua
--- response_body
hello
=== TEST 14: github issue #40: 2 Subrequest calls when using access_by_lua, ngx.exec and echo_location (post subrequest)
--- config
location = /hi {
echo hello;
}
location /sub {
proxy_pass http://127.0.0.1:$server_port/hi;
}
location /p{
#content_by_lua '
#local res = ngx.location.capture("/sub")
#ngx.print(res.body)
#';
echo_location /sub;
}
location /blah {
echo blah;
}
location /lua {
access_by_lua '
ngx.location.capture("/blah")
ngx.exec("/p")
';
}
--- request
GET /lua
--- response_body
hello
=== TEST 15: access_by_lua + ngx.exec + subrequest capture
--- config
location /main {
access_by_lua '
res = ngx.location.capture("/test_loc");
ngx.print("hello, ", res.body)
';
content_by_lua return;
}
location /test_loc {
rewrite_by_lua '
ngx.exec("@proxy")
';
}
location @proxy {
#echo proxy;
proxy_pass http://127.0.0.1:$server_port/foo;
}
location /foo {
echo bah;
}
--- request
GET /main
--- response_body
hello, bah