blob: 44c4c72571c24d007514cf16b53116498ace1e83 [file] [log] [blame] [raw]
# vi:filetype=
use lib 'lib';
use Test::Nginx::Socket;
repeat_each(2);
plan tests => repeat_each() * (2 * blocks() + 1);
no_long_string();
log_level('warn');
#master_on();
#workers(1);
run_tests();
__DATA__
=== TEST 1: sanity
--- http_config
postpone_output 1;
--- config
location /echo {
echo_after_body hello;
echo world;
}
--- request
GET /echo
--- response_body
world
hello
=== TEST 2: echo after proxy
--- config
location /echo {
echo_after_body hello;
proxy_pass http://127.0.0.1:$server_port$request_uri/more;
}
location /echo/more {
echo world;
}
--- request
GET /echo
--- response_body
world
hello
=== TEST 3: with variables
--- config
location /echo {
echo_after_body $request_method;
echo world;
}
--- request
GET /echo
--- response_body
world
GET
=== TEST 4: w/o args
--- config
location /echo {
echo_after_body;
echo world;
}
--- request
GET /echo
--- response_body eval
"world\n\n"
=== TEST 5: order is not important
--- config
location /reversed {
echo world;
echo_after_body hello;
}
--- request
GET /reversed
--- response_body
world
hello
=== TEST 6: multiple echo_after_body instances
--- config
location /echo {
echo_after_body hello;
echo_after_body world;
echo !;
}
--- request
GET /echo
--- response_body
!
hello
world
=== TEST 7: multiple echo_after_body instances with multiple echo cmds
--- config
location /echo {
echo_after_body hello;
echo_after_body world;
echo i;
echo say;
}
--- request
GET /echo
--- response_body
i
say
hello
world
=== TEST 8: echo-after-body & echo-before-body
--- config
location /mixed {
echo_before_body hello;
echo_after_body world;
echo_before_body hiya;
echo_after_body igor;
echo ////////;
}
--- request
GET /mixed
--- response_body
hello
hiya
////////
world
igor
=== TEST 9: echo around proxy
--- config
location /echo {
echo_before_body hello;
echo_before_body world;
#echo $scheme://$host:$server_port$request_uri/more;
proxy_pass $scheme://127.0.0.1:$server_port$request_uri/more;
echo_after_body hiya;
echo_after_body igor;
}
location /echo/more {
echo blah;
}
--- request
GET /echo
--- response_body
hello
world
blah
hiya
igor
=== TEST 10: with $echo_response_status
--- config
location /status {
echo_after_body "status: $echo_response_status";
return 404;
}
--- request
GET /status
--- response_body_like
.*404 Not Found.*
status: 404$
--- error_code: 404
=== TEST 11: in subrequests
--- config
location /main {
echo_location_async /hello;
}
location /hello {
echo_after_body 'world!';
echo 'hello';
}
--- request
GET /main
--- response_body
hello
world!
=== TEST 12: echo_after_body + gzip
--- config
gzip on;
gzip_min_length 1;
location /main {
echo_after_body 'world!';
echo_duplicate 1024 'hello';
}
--- request
GET /main
--- response_body_like
hello
--- SKIP
=== TEST 13: echo_after_body + proxy output
--- config
#gzip on;
#gzip_min_length 1;
location /main {
echo_after_body 'world';
proxy_pass http://127.0.0.1:$server_port/foo;
}
location /foo {
echo_duplicate 10 hello;
}
--- request
GET /main
--- response_body_like
^(?:hello){10}world$
=== TEST 14: in subrequests (we get last_in_chain set properly)
--- config
location /main {
echo_location_async /hello;
}
location /hello {
echo 'hello';
echo_after_body 'world!';
body_filter_by_lua '
local eof = ngx.arg[2]
if eof then
print("lua: eof found in body")
end
';
}
--- request
GET /main
--- response_body
hello
world!
--- log_level: notice
--- error_log
lua: eof found in body