Mercurial > hg > nginx-tests
annotate autoindex.t @ 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 | 8ac1faaddd2c |
children | f10f077a3174 |
rev | line source |
---|---|
108
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for autoindex module. |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
123
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
24 my $t = Test::Nginx->new()->has(qw/http autoindex/)->plan(15) |
108
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 ->write_file_expand('nginx.conf', <<'EOF'); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 %%TEST_GLOBALS%% |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 master_process off; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 daemon off; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 events { |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 } |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 http { |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 server { |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 listen 127.0.0.1:8080; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 server_name localhost; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 location / { |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 autoindex on; |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 } |
123
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
45 location /utf8/ { |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
46 autoindex on; |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
47 charset utf-8; |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
48 } |
108
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 } |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 } |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 EOF |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 my $d = $t->testdir(); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 mkdir("$d/test-dir"); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 symlink("$d/test-dir", "$d/test-dir-link"); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 $t->write_file('test-file', ''); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 symlink("$d/test-file", "$d/test-file-link"); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 |
123
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
62 $t->write_file('test-colon:blah', ''); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
63 $t->write_file('test-long-' . ('0' x 50), ''); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
64 $t->write_file('test-long-' . ('>' x 50), ''); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
65 $t->write_file('test-escape-url-%', ''); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
66 $t->write_file('test-escape-html-<>&', ''); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
67 |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
68 mkdir($d . '/utf8'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
69 $t->write_file('utf8/test-utf8-' . ("\xd1\x84" x 3), ''); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
70 $t->write_file('utf8/test-utf8-' . ("\xd1\x84" x 45), ''); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
71 $t->write_file('utf8/test-utf8-<>&-' . "\xd1\x84", ''); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
72 $t->write_file('utf8/test-utf8-<>&-' . ("\xd1\x84" x 45), ''); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
73 $t->write_file('utf8/test-utf8-' . ("\xd1\x84" x 3) . '-' . ('>' x 45), ''); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
74 |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
75 mkdir($d . '/test-dir-escape-<>&'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
76 |
108
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 $t->run(); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 ############################################################################### |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 my $r = http_get('/'); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 like($r, qr!href="test-file"!ms, 'file'); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 like($r, qr!href="test-file-link"!ms, 'symlink to file'); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 like($r, qr!href="test-dir/"!ms, 'directory'); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 like($r, qr!href="test-dir-link/"!ms, 'symlink to directory'); |
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 |
123
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
88 like($r, qr!href="./test-colon:blah"!ms, 'colon not scheme'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
89 like($r, qr!test-long-0{37}\.\.>!ms, 'long name'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
90 |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
91 like($r, qr!href="test-escape-url-%25"!ms, 'escaped url'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
92 |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
93 { |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
94 local $TODO = 'patches under review'; |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
95 |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
96 like($r, qr!test-escape-html-<>&!ms, 'escaped html'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
97 like($r, qr!test-long-(>){37}\.\.>!ms, 'long escaped html'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
98 |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
99 $r = http_get('/utf8/'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
100 |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
101 like($r, qr!test-utf8-(\xd1\x84){3}</a>!ms, 'utf8'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
102 like($r, qr!test-utf8-(\xd1\x84){37}\.\.!ms, 'utf8 long'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
103 like($r, qr!test-utf8-<>&-\xd1\x84</a>!ms, 'utf8 escaped'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
104 like($r, qr!test-utf8-<>&-(\xd1\x84){33}\.\.!ms, |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
105 'utf8 escaped long'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
106 like($r, qr!test-utf8-(\xd1\x84){3}-(>){33}\.\.!ms, 'utf8 long escaped'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
107 |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
108 like(http_get('/test-dir-escape-<>&/'), qr!test-dir-escape-<>&!ms, |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
109 'escaped title'); |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
110 |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
111 } |
8aa0dd396a83
Tests: add more autoindex tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
112 |
108
93a8f4202b16
Tests: add autoindex module tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
113 ############################################################################### |