Mercurial > hg > nginx-tests
changeset 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 | 29f0e926c15f |
children | f6795e2e6a4b |
files | dav.t http_absolute_redirect.t |
diffstat | 2 files changed, 73 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/dav.t Tue May 25 16:50:14 2021 +0300 +++ b/dav.t Thu May 27 13:07:46 2021 +0300 @@ -21,7 +21,7 @@ select STDERR; $| = 1; select STDOUT; $| = 1; -my $t = Test::Nginx->new()->has(qw/http dav/)->plan(27); +my $t = Test::Nginx->new()->has(qw/http dav/)->plan(28); $t->write_file_expand('nginx.conf', <<'EOF'); @@ -108,6 +108,21 @@ is(-s $t->testdir() . '/file', 10, 'put file extra data size'); +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.21.0'); + +$r = http(<<EOF . '0123456789'); +PUT /file%20sp HTTP/1.1 +Host: localhost +Connection: close +Content-Length: 10 + +EOF + +like($r, qr!Location: /file%20sp\x0d?$!ms, 'put file escaped'); + +} + # 201 replies contain body, response should indicate it's empty $r = http(<<EOF);
--- a/http_absolute_redirect.t Tue May 25 16:50:14 2021 +0300 +++ b/http_absolute_redirect.t Thu May 27 13:07:46 2021 +0300 @@ -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 @@ 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 @@ 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 @@ EOF mkdir($t->testdir() . '/dir'); +mkdir($t->testdir() . '/dir sp'); -$t->run()->plan(10); +$t->run()->plan(18); ############################################################################### @@ -91,17 +100,63 @@ 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'); ###############################################################################