# HG changeset patch # User Maxim Dounin # Date 1262269386 -10800 # Node ID 8aa0dd396a839d13746eab083771f07efdaf6a4e # Parent 01e86a067f05a410c95544ce48b264784640d965 Tests: add more autoindex tests. This includes todo tests for bugs with utf-8 handling and html escaping in file names. diff --git a/autoindex.t b/autoindex.t --- a/autoindex.t +++ b/autoindex.t @@ -21,7 +21,7 @@ use Test::Nginx; select STDERR; $| = 1; select STDOUT; $| = 1; -my $t = Test::Nginx->new()->has(qw/http autoindex/)->plan(4) +my $t = Test::Nginx->new()->has(qw/http autoindex/)->plan(15) ->write_file_expand('nginx.conf', <<'EOF'); %%TEST_GLOBALS%% @@ -42,6 +42,10 @@ http { location / { autoindex on; } + location /utf8/ { + autoindex on; + charset utf-8; + } } } @@ -55,6 +59,21 @@ symlink("$d/test-dir", "$d/test-dir-link $t->write_file('test-file', ''); symlink("$d/test-file", "$d/test-file-link"); +$t->write_file('test-colon:blah', ''); +$t->write_file('test-long-' . ('0' x 50), ''); +$t->write_file('test-long-' . ('>' x 50), ''); +$t->write_file('test-escape-url-%', ''); +$t->write_file('test-escape-html-<>&', ''); + +mkdir($d . '/utf8'); +$t->write_file('utf8/test-utf8-' . ("\xd1\x84" x 3), ''); +$t->write_file('utf8/test-utf8-' . ("\xd1\x84" x 45), ''); +$t->write_file('utf8/test-utf8-<>&-' . "\xd1\x84", ''); +$t->write_file('utf8/test-utf8-<>&-' . ("\xd1\x84" x 45), ''); +$t->write_file('utf8/test-utf8-' . ("\xd1\x84" x 3) . '-' . ('>' x 45), ''); + +mkdir($d . '/test-dir-escape-<>&'); + $t->run(); ############################################################################### @@ -66,4 +85,29 @@ like($r, qr!href="test-file-link"!ms, 's like($r, qr!href="test-dir/"!ms, 'directory'); like($r, qr!href="test-dir-link/"!ms, 'symlink to directory'); +like($r, qr!href="./test-colon:blah"!ms, 'colon not scheme'); +like($r, qr!test-long-0{37}\.\.>!ms, 'long name'); + +like($r, qr!href="test-escape-url-%25"!ms, 'escaped url'); + +{ +local $TODO = 'patches under review'; + +like($r, qr!test-escape-html-<>&!ms, 'escaped html'); +like($r, qr!test-long-(>){37}\.\.>!ms, 'long escaped html'); + +$r = http_get('/utf8/'); + +like($r, qr!test-utf8-(\xd1\x84){3}!ms, 'utf8'); +like($r, qr!test-utf8-(\xd1\x84){37}\.\.!ms, 'utf8 long'); +like($r, qr!test-utf8-<>&-\xd1\x84!ms, 'utf8 escaped'); +like($r, qr!test-utf8-<>&-(\xd1\x84){33}\.\.!ms, + 'utf8 escaped long'); +like($r, qr!test-utf8-(\xd1\x84){3}-(>){33}\.\.!ms, 'utf8 long escaped'); + +like(http_get('/test-dir-escape-<>&/'), qr!test-dir-escape-<>&!ms, + 'escaped title'); + +} + ###############################################################################