Mercurial > hg > nginx-tests
annotate http_disable_symlinks.t @ 203:b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 14 Feb 2012 19:41:44 +0400 |
parents | 067b6cb4793d |
children | d838248b643a |
rev | line source |
---|---|
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
2 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
3 # (C) Andrey Belov |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
4 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
5 # Tests for disable_symlinks directive. |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
6 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
7 ############################################################################### |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
8 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
9 use warnings; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
10 use strict; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
11 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
12 use Test::More; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
13 use POSIX; |
202
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
14 use Cwd qw/ realpath /; |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
15 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
16 BEGIN { use FindBin; chdir($FindBin::Bin); } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
17 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
18 use lib 'lib'; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
19 use Test::Nginx; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
20 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
22 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
25 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http rewrite/) |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
27 ->write_file_expand('nginx.conf', <<'EOF'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
28 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
30 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
31 daemon off; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
32 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
33 events { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
34 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
35 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
36 http { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_HTTP%% |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
38 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
39 server { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
40 listen 127.0.0.1:8080; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
41 server_name s1; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
42 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
43 location /on/ { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
44 disable_symlinks on; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
45 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
46 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
47 location /not_owner/ { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
48 disable_symlinks if_not_owner; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
49 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
50 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
51 location /try_on/ { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
52 disable_symlinks on; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
53 try_files $uri $uri.html =404; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
54 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
55 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
56 location /try_not_owner/ { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
57 disable_symlinks if_not_owner; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
58 try_files $uri $uri.txt =404; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
59 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
60 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
61 location /if_on/ { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
62 disable_symlinks on; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
63 if (-f $request_filename) { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
64 return 204; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
65 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
66 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
67 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
68 location /if_not_owner/ { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
69 disable_symlinks if_not_owner; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
70 if (-f $request_filename) { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
71 return 204; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
72 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
73 } |
203
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
74 |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
75 location /complex/1/ { |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
76 disable_symlinks on; |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
77 alias %%TESTDIR%%/./cached/../; |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
78 } |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
79 |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
80 location /complex/2/ { |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
81 disable_symlinks on; |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
82 alias %%TESTDIR%%//./cached/..//; |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
83 } |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
84 |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
85 location /complex/3/ { |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
86 disable_symlinks on; |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
87 alias ///%%TESTDIR%%//./cached/..//; |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
88 } |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
89 |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
90 location ~ (.+/)tail$ { |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
91 disable_symlinks on; |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
92 alias %%TESTDIR%%/$1; |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
93 } |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
94 |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
95 location /dir { |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
96 disable_symlinks on; |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
97 try_files $uri/ =404; |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
98 } |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
99 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
100 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
101 server { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
102 listen 127.0.0.1:8080; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
103 server_name s2; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
104 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
105 open_file_cache max=16 inactive=60s; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
106 open_file_cache_valid 30s; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
107 open_file_cache_min_uses 1; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
108 open_file_cache_errors on; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
109 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
110 location /cached-off/ { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
111 disable_symlinks off; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
112 alias %%TESTDIR%%/cached/; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
113 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
114 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
115 location /cached-on/ { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
116 disable_symlinks on; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
117 alias %%TESTDIR%%/cached/; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
118 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
119 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
120 location /cached-if-not-owner/ { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
121 disable_symlinks if_not_owner; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
122 alias %%TESTDIR%%/cached/; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
123 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
124 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
125 location / { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
126 disable_symlinks off; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
127 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
128 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
129 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
130 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
131 EOF |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
132 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
133 eval { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
134 open OLDERR, ">&", \*STDERR; close STDERR; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
135 $t->run(); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
136 open STDERR, ">&", \*OLDERR; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
137 }; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
138 plan(skip_all => 'no disable_symlinks') if $@; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
139 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
140 my $uid = getuid(); |
202
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
141 my ($extfile) = grep { -f "$_" && $uid != (stat($_))[4] } |
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
142 ('/etc/resolv.conf', '/etc/protocols', '/etc/host.conf'); |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
143 |
202
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
144 plan(skip_all => 'no external file found') |
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
145 if !defined $extfile; |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
146 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
147 my $d = $t->testdir(); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
148 |
202
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
149 plan(skip_all => 'cannot test under symlink') |
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
150 if $d ne realpath($d); |
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
151 |
203
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
152 $t->plan(23); |
202
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
153 |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
154 mkdir("$d/on"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
155 mkdir("$d/not_owner"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
156 mkdir("$d/try_on"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
157 mkdir("$d/try_not_owner"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
158 mkdir("$d/if_on"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
159 mkdir("$d/if_not_owner"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
160 mkdir("$d/cached"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
161 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
162 $t->write_file("empty.html", ""); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
163 symlink("empty.html", "$d/link"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
164 symlink($extfile, "$d/link2"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
165 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
166 $t->write_file("on/empty.html", ""); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
167 symlink("empty.html", "$d/on/link"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
168 symlink($extfile, "$d/on/link2"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
169 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
170 $t->write_file("not_owner/empty.html", ""); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
171 symlink("empty.html", "$d/not_owner/link"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
172 symlink($extfile, "$d/not_owner/link2"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
173 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
174 $t->write_file("try_on/try.html", "LOCAL TRY"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
175 symlink($extfile, "$d/try_on/try"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
176 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
177 $t->write_file("try_not_owner/try.html", "LOCAL TRY"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
178 symlink($extfile, "$d/try_not_owner/try"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
179 symlink("try.html", "$d/try_not_owner/try.txt"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
180 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
181 $t->write_file("if_on/empty.html", ""); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
182 symlink("empty.html", "$d/if_on/link"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
183 symlink($extfile, "$d/if_on/link2"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
184 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
185 $t->write_file("if_not_owner/empty.html", ""); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
186 symlink("empty.html", "$d/if_not_owner/link"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
187 symlink($extfile, "$d/if_not_owner/link2"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
188 |
203
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
189 mkdir("$d/dir"); |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
190 symlink("dir", "$d/dirlink"); |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
191 |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
192 symlink($extfile, "$d/cached/link"); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
193 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
194 ############################################################################### |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
195 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
196 like(http_get_host('s1', '/link'), qr!200 OK!, 'static (off, same uid)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
197 like(http_get_host('s1', '/link2'), qr!200 OK!, 'static (off, other uid)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
198 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
199 like(http_get_host('s1', '/on/link'), qr!403 Forbidden!, |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
200 'static (on, same uid)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
201 like(http_get_host('s1', '/on/link2'), qr!403 Forbidden!, |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
202 'static (on, other uid)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
203 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
204 like(http_get_host('s1', '/not_owner/link'), qr!200 OK!, |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
205 'static (if_not_owner, same uid)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
206 like(http_get_host('s1', '/not_owner/link2'), qr!403 Forbidden!, |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
207 'static (if_not_owner, other uid)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
208 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
209 like(http_get_host('s1', '/try_on/try'), qr/LOCAL TRY/, |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
210 'try_files (on)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
211 like(http_get_host('s1', '/try_not_owner/try'), qr/LOCAL TRY/, |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
212 'try_files (if_not_owner)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
213 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
214 like(http_get_host('s1', '/if_on/link'), qr!403 Forbidden!, |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
215 'if (on, same uid)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
216 like(http_get_host('s1', '/if_on/link2'), qr!403 Forbidden!, |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
217 'if (on, other uid)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
218 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
219 like(http_get_host('s1', '/if_not_owner/link'), qr!204 No Content!, |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
220 'if (if_not_owner, same uid)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
221 like(http_get_host('s1', '/if_not_owner/link2'), qr!403 Forbidden!, |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
222 'if (if_not_owner, other uid)'); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
223 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
224 like(http_get_host('s2', '/cached-off/link'), qr!200 OK!, |
202
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
225 'open_file_cache (pass 1)'); |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
226 like(http_get_host('s2', '/cached-on/link'), qr!403 Forbidden!, |
202
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
227 'open_file_cache (pass 2)'); |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
228 like(http_get_host('s2', '/cached-off/link'), qr!200 OK!, |
202
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
229 'open_file_cache (pass 3)'); |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
230 like(http_get_host('s2', '/cached-if-not-owner/link'), qr!403 Forbidden!, |
202
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
231 'open_file_cache (pass 4)'); |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
232 like(http_get_host('s2', '/cached-off/link'), qr!200 OK!, |
202
067b6cb4793d
Tests: cleanup disable_symlinks tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
201
diff
changeset
|
233 'open_file_cache (pass 5)'); |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
234 |
203
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
235 like(http_get('/complex/1/empty.html'), qr!200 OK!, 'complex root 1'); |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
236 like(http_get('/complex/2/empty.html'), qr!200 OK!, 'complex root 2'); |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
237 like(http_get('/complex/3/empty.html'), qr!200 OK!, 'complex root 3'); |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
238 |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
239 like(http_get('/link/tail'), qr!403 !, 'file with trailing /'); |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
240 like(http_get('/dirlink'), qr!404 !, 'directory without /'); |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
241 like(http_get('/dirlink/'), qr!404 !, 'directory with trailing /'); |
b6a4770e47ea
Tests: disable_symlinks tests for complex cases.
Maxim Dounin <mdounin@mdounin.ru>
parents:
202
diff
changeset
|
242 |
201
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
243 ############################################################################### |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
244 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
245 sub http_get_host { |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
246 my ($host, $url) = @_; |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
247 return http(<<EOF); |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
248 GET $url HTTP/1.0 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
249 Host: $host |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
250 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
251 EOF |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
252 } |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
253 |
fc297a64142e
Tests: disable_symlinks directive tests added.
Andrey Belov <defan@nginx.com>
parents:
diff
changeset
|
254 ############################################################################### |