Mercurial > hg > nginx-tests
diff http_absolute_redirect.t @ 1691:0d8531f744bc
Tests: added Location header escaping tests (ticket #882).
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 27 May 2021 13:07:46 +0300 |
parents | 766bcbb632ee |
children | 77a9e393ed46 |
line wrap: on
line diff
--- a/http_absolute_redirect.t +++ b/http_absolute_redirect.t @@ -3,7 +3,7 @@ # (C) Sergey Kandaurov # (C) Nginx, Inc. -# Tests for absolute_redirect directive. +# Tests for absolute_redirect directive and Location escaping. ############################################################################### @@ -49,6 +49,10 @@ http { proxy_pass http://127.0.0.1:8080; } + location "/auto sp/" { + proxy_pass http://127.0.0.1:8080; + } + location /return301 { return 301 /redirect; } @@ -68,6 +72,10 @@ http { proxy_pass http://127.0.0.1:8080; } + location "/auto sp/" { + proxy_pass http://127.0.0.1:8080; + } + location /return301 { return 301 /redirect; } @@ -81,8 +89,9 @@ http { EOF mkdir($t->testdir() . '/dir'); +mkdir($t->testdir() . '/dir sp'); -$t->run()->plan(10); +$t->run()->plan(18); ############################################################################### @@ -91,17 +100,63 @@ my $p = port(8080); like(get('on', '/dir'), qr!Location: http://on:$p/dir/\x0d?$!m, 'directory'); like(get('on', '/i/dir'), qr!Location: http://on:$p/i/dir/\x0d?$!m, 'directory alias'); + +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.21.0'); + +like(get('on', '/dir%20sp'), qr!Location: http://on:$p/dir%20sp/\x0d?$!m, + 'directory escaped'); +like(get('on', '/dir%20sp?a=b'), + qr!Location: http://on:$p/dir%20sp/\?a=b\x0d?$!m, + 'directory escaped args'); + +} + like(get('on', '/auto'), qr!Location: http://on:$p/auto/\x0d?$!m, 'auto'); like(get('on', '/auto?a=b'), qr!Location: http://on:$p/auto/\?a=b\x0d?$!m, 'auto args'); + +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.21.0'); + +like(get('on', '/auto%20sp'), qr!Location: http://on:$p/auto%20sp/\x0d?$!m, + 'auto escaped'); +like(get('on', '/auto%20sp?a=b'), + qr!Location: http://on:$p/auto%20sp/\?a=b\x0d?$!m, + 'auto escaped args'); + +} + like(get('on', '/return301'), qr!Location: http://on:$p/redirect\x0d?$!m, 'return'); like(get('off', '/dir'), qr!Location: /dir/\x0d?$!m, 'off directory'); like(get('off', '/i/dir'), qr!Location: /i/dir/\x0d?$!m, 'off directory alias'); + +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.21.0'); + +like(get('off', '/dir%20sp'), qr!Location: /dir%20sp/\x0d?$!m, + 'off directory escaped'); +like(get('off', '/dir%20sp?a=b'), qr!Location: /dir%20sp/\?a=b\x0d?$!m, + 'off directory escaped args'); + +} + like(get('off', '/auto'), qr!Location: /auto/\x0d?$!m, 'off auto'); like(get('off', '/auto?a=b'), qr!Location: /auto/\?a=b\x0d?$!m, 'off auto args'); + +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.21.0'); + +like(get('off', '/auto%20sp'), qr!Location: /auto%20sp/\x0d?$!m, + 'auto escaped'); +like(get('off', '/auto%20sp?a=b'), qr!Location: /auto%20sp/\?a=b\x0d?$!m, + 'auto escaped args'); + +} + like(get('off', '/return301'), qr!Location: /redirect\x0d?$!m, 'off return'); ###############################################################################