| # vim:set ft= ts=4 sw=4 et fdm=marker: |
| use lib 'lib'; |
| use Test::Nginx::Socket::Lua; |
| |
| #worker_connections(1014); |
| #master_on(); |
| #workers(2); |
| #log_level('warn'); |
| |
| repeat_each(2); |
| #repeat_each(1); |
| |
| plan tests => repeat_each() * (blocks() * 3 + 2); |
| |
| #no_diff(); |
| #no_long_string(); |
| run_tests(); |
| |
| __DATA__ |
| |
| === TEST 1: set_by_lua (if fails) |
| --- config |
| location /t { |
| set $true $arg_a; |
| if ($true) { |
| set_by_lua $true 'return tonumber(ngx.var["true"]) + 1'; |
| break; |
| } |
| set $true "empty"; |
| |
| echo "[$true]"; |
| } |
| --- request |
| GET /t |
| --- response_body |
| [empty] |
| --- no_error_log |
| [error] |
| |
| |
| |
| === TEST 2: set_by_lua (if true) |
| --- config |
| location /t { |
| set $true $arg_a; |
| if ($true) { |
| set_by_lua $true 'return tonumber(ngx.var["true"]) + 1'; |
| break; |
| } |
| set $true "blah"; |
| |
| echo "[$true]"; |
| } |
| --- request |
| GET /t?a=2 |
| --- response_body |
| [3] |
| --- no_error_log |
| [error] |
| |
| |
| |
| === TEST 3: content_by_lua inherited by location if |
| --- config |
| location /t { |
| set $true 1; |
| if ($true) { |
| # nothing |
| } |
| |
| content_by_lua 'ngx.say("hello world")'; |
| } |
| --- request |
| GET /t |
| --- response_body |
| hello world |
| --- no_error_log |
| [error] |
| |
| |
| |
| === TEST 4: rewrite_by_lua inherited by location if |
| --- config |
| location /t { |
| set $true 1; |
| if ($true) { |
| # nothing |
| } |
| |
| rewrite_by_lua 'ngx.say("hello world") ngx.exit(200)'; |
| } |
| --- request |
| GET /t |
| --- response_body |
| hello world |
| --- no_error_log |
| [error] |
| |
| |
| |
| === TEST 5: access_by_lua inherited by location if |
| --- config |
| location /t { |
| set $true 1; |
| if ($true) { |
| # nothing |
| } |
| |
| access_by_lua 'ngx.say("hello world") ngx.exit(200)'; |
| } |
| --- request |
| GET /t |
| --- response_body |
| hello world |
| --- no_error_log |
| [error] |
| |
| |
| |
| === TEST 6: log_by_lua inherited by location if |
| --- config |
| location /t { |
| set $true 1; |
| if ($true) { |
| # nothing |
| } |
| |
| log_by_lua 'ngx.log(ngx.WARN, "from log by lua")'; |
| echo hello world; |
| } |
| --- request |
| GET /t |
| --- response_body |
| hello world |
| --- no_error_log |
| [error] |
| --- error_log |
| from log by lua |
| |
| |
| |
| === TEST 7: header_filter_by_lua inherited by location if |
| --- config |
| location /t { |
| set $true 1; |
| if ($true) { |
| # nothing |
| } |
| |
| header_filter_by_lua 'ngx.header.Foo = "bah"'; |
| echo hello world; |
| } |
| --- request |
| GET /t |
| --- response_body |
| hello world |
| --- response_headers |
| Foo: bah |
| --- no_error_log |
| [error] |
| |
| |
| |
| === TEST 8: body_filter_by_lua inherited by location if |
| --- config |
| location /t { |
| set $true 1; |
| if ($true) { |
| # nothing |
| } |
| |
| body_filter_by_lua 'ngx.arg[1] = string.upper(ngx.arg[1])'; |
| echo hello world; |
| } |
| --- request |
| GET /t |
| --- response_body |
| HELLO WORLD |
| --- no_error_log |
| [error] |
| |
| |
| |
| === TEST 9: if is evil for ngx_proxy |
| This test case requires the following patch for the nginx core: |
| http://mailman.nginx.org/pipermail/nginx-devel/2012-June/002374.html |
| --- config |
| location /proxy-pass-uri { |
| proxy_pass http://127.0.0.1:$TEST_NGINX_SERVER_PORT/; |
| |
| set $true 1; |
| |
| if ($true) { |
| # nothing |
| } |
| } |
| --- request |
| GET /proxy-pass-uri |
| --- response_body_like: It works! |
| --- no_error_log |
| [error] |
| |