| # vi:filetype= |
| |
| use lib 'lib'; |
| use Test::Nginx::Socket; |
| |
| plan tests => 2 * blocks(); |
| |
| #$Test::Nginx::LWP::LogLevel = 'debug'; |
| |
| run_tests(); |
| |
| __DATA__ |
| |
| === TEST 1: sanity (hit) |
| --- config |
| location ^~ /if { |
| set $res miss; |
| if ($arg_val ~* '^a') { |
| set $res hit; |
| echo $res; |
| } |
| echo $res; |
| } |
| --- request |
| GET /if?val=abc |
| --- response_body |
| hit |
| |
| |
| |
| === TEST 2: sanity (miss) |
| --- config |
| location ^~ /if { |
| set $res miss; |
| if ($arg_val ~* '^a') { |
| set $res hit; |
| echo $res; |
| } |
| echo $res; |
| } |
| --- request |
| GET /if?val=bcd |
| --- response_body |
| miss |
| |
| |
| |
| === TEST 3: proxy in if (hit) |
| --- config |
| location ^~ /if { |
| set $res miss; |
| if ($arg_val ~* '^a') { |
| set $res hit; |
| proxy_pass $scheme://127.0.0.1:$server_port/foo?res=$res; |
| } |
| proxy_pass $scheme://127.0.0.1:$server_port/foo?res=$res; |
| } |
| location /foo { |
| echo "res = $arg_res"; |
| } |
| --- request |
| GET /if?val=abc |
| --- response_body |
| res = hit |
| |
| |
| |
| === TEST 4: proxy in if (miss) |
| --- config |
| location ^~ /if { |
| set $res miss; |
| if ($arg_val ~* '^a') { |
| set $res hit; |
| proxy_pass $scheme://127.0.0.1:$server_port/foo?res=$res; |
| } |
| proxy_pass $scheme://127.0.0.1:$server_port/foo?res=$res; |
| } |
| location /foo { |
| echo "res = $arg_res"; |
| } |
| --- request |
| GET /if?val=bcd |
| --- response_body |
| res = miss |
| |
| |
| |
| === TEST 5: if too long url (hit) |
| --- config |
| location /foo { |
| if ($request_uri ~ '.{20,}') { |
| echo too long; |
| } |
| echo ok; |
| } |
| --- request |
| GET /foo?a=12345678901234567890 |
| --- response_body |
| too long |
| |
| |
| |
| === TEST 6: if too long url (miss) |
| --- config |
| location /foo { |
| if ($request_uri ~ '.{20,}') { |
| echo too long; |
| } |
| echo ok; |
| } |
| --- request |
| GET /foo?a=1234567890 |
| --- response_body |
| ok |
| |
| |
| |
| === TEST 7: echo should be inherited by if blocks |
| --- config |
| location /foo { |
| if ($uri ~ 'foo') { |
| } |
| echo ok; |
| } |
| --- request |
| GET /foo |
| --- response_body |
| ok |
| |
| |
| |
| === TEST 8: echo_after_body and echo_before_body should be inherited by if blocks |
| --- config |
| location /foo { |
| if ($uri ~ 'foo') { |
| } |
| echo_before_body -n 'hello'; |
| echo_location /comma; |
| echo_after_body 'world'; |
| } |
| |
| location = /comma { |
| internal; |
| echo -n ', '; |
| } |
| --- request |
| GET /foo |
| --- response_body |
| hello, world |
| |