changeset 123:8aa0dd396a83

Tests: add more autoindex tests. This includes todo tests for bugs with utf-8 handling and html escaping in file names.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 31 Dec 2009 17:23:06 +0300
parents 01e86a067f05
children 6edd29865109
files autoindex.t
diffstat 1 files changed, 45 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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}\.\.&gt;!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-&lt;&gt;&amp;!ms, 'escaped html');
+like($r, qr!test-long-(&gt;){37}\.\.&gt;!ms, 'long escaped html');
+
+$r = http_get('/utf8/');
+
+like($r, qr!test-utf8-(\xd1\x84){3}</a>!ms, 'utf8');
+like($r, qr!test-utf8-(\xd1\x84){37}\.\.!ms, 'utf8 long');
+like($r, qr!test-utf8-&lt;&gt;&amp;-\xd1\x84</a>!ms, 'utf8 escaped');
+like($r, qr!test-utf8-&lt;&gt;&amp;-(\xd1\x84){33}\.\.!ms,
+	'utf8 escaped long');
+like($r, qr!test-utf8-(\xd1\x84){3}-(&gt;){33}\.\.!ms, 'utf8 long escaped');
+
+like(http_get('/test-dir-escape-<>&/'), qr!test-dir-escape-&lt;&gt;&amp;!ms,
+	'escaped title');
+
+}
+
 ###############################################################################