# 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