Mercurial > hg > nginx-tests
comparison http_server_name.t @ 683:49aea425392d
Tests: more tests for server_name directive.
Added tests for regex and wildcard values, multiple values, and multiple
directives.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Tue, 08 Sep 2015 15:12:34 +0300 |
parents | c68b7bbdf21a |
children | 26f58787c6b4 |
comparison
equal
deleted
inserted
replaced
682:c68b7bbdf21a | 683:49aea425392d |
---|---|
1 #!/usr/bin/perl | 1 #!/usr/bin/perl |
2 | 2 |
3 # (C) Maxim Dounin | 3 # (C) Maxim Dounin |
4 # (C) Andrey Zelenkov | |
5 # (C) Nginx, Inc. | |
4 | 6 |
5 # Tests for server_name selection. | 7 # Tests for server_name selection. |
6 | 8 |
7 ############################################################################### | 9 ############################################################################### |
8 | 10 |
9 use warnings; | 11 use warnings; |
10 use strict; | 12 use strict; |
11 | 13 |
12 use Test::More; | 14 use Test::More; |
13 | 15 |
16 use Socket qw/ CRLF /; | |
17 | |
14 BEGIN { use FindBin; chdir($FindBin::Bin); } | 18 BEGIN { use FindBin; chdir($FindBin::Bin); } |
15 | 19 |
16 use lib 'lib'; | 20 use lib 'lib'; |
17 use Test::Nginx; | 21 use Test::Nginx; |
18 | 22 |
21 select STDERR; $| = 1; | 25 select STDERR; $| = 1; |
22 select STDOUT; $| = 1; | 26 select STDOUT; $| = 1; |
23 | 27 |
24 plan(skip_all => 'win32') if $^O eq 'MSWin32'; | 28 plan(skip_all => 'win32') if $^O eq 'MSWin32'; |
25 | 29 |
26 my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(9) | 30 my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(18) |
27 ->write_file_expand('nginx.conf', <<'EOF'); | 31 ->write_file_expand('nginx.conf', <<'EOF'); |
28 | 32 |
29 %%TEST_GLOBALS%% | 33 %%TEST_GLOBALS%% |
30 | 34 |
31 daemon off; | 35 daemon off; |
47 } | 51 } |
48 } | 52 } |
49 | 53 |
50 server { | 54 server { |
51 listen 127.0.0.1:8080; | 55 listen 127.0.0.1:8080; |
56 server_name ""; | |
57 | |
58 location / { | |
59 add_header X-Server $server_name; | |
60 } | |
61 } | |
62 | |
63 server { | |
64 listen 127.0.0.1:8080; | |
52 server_name www.example.com; | 65 server_name www.example.com; |
53 | 66 |
54 location / { | 67 location / { |
55 add_header X-Server $server_name; | 68 add_header X-Server $server_name; |
56 } | 69 } |
80 server_name "~^(?P<name>www\p{N}+)\.example\.com$"; | 93 server_name "~^(?P<name>www\p{N}+)\.example\.com$"; |
81 | 94 |
82 location / { | 95 location / { |
83 add_header X-Server $server_name; | 96 add_header X-Server $server_name; |
84 add_header X-Match $name; | 97 add_header X-Match $name; |
98 } | |
99 } | |
100 | |
101 server { | |
102 listen 127.0.0.1:8080; | |
103 server_name many.example.com many2.example.com; | |
104 | |
105 location / { | |
106 add_header X-Server $server_name; | |
107 } | |
108 } | |
109 | |
110 server { | |
111 listen 127.0.0.1:8080; | |
112 server_name many3.example.com; | |
113 server_name many4.example.com; | |
114 | |
115 location / { | |
116 add_header X-Server $server_name; | |
117 } | |
118 } | |
119 | |
120 server { | |
121 listen 127.0.0.1:8080; | |
122 server_name *.wc.example.com; | |
123 | |
124 location / { | |
125 add_header X-Server $server_name; | |
126 } | |
127 } | |
128 | |
129 server { | |
130 listen 127.0.0.1:8080; | |
131 server_name wc2.example.*; | |
132 | |
133 location / { | |
134 add_header X-Server $server_name; | |
135 } | |
136 } | |
137 | |
138 server { | |
139 listen 127.0.0.1:8080; | |
140 server_name .dot.example.com; | |
141 | |
142 location / { | |
143 add_header X-Server $server_name; | |
85 } | 144 } |
86 } | 145 } |
87 } | 146 } |
88 | 147 |
89 EOF | 148 EOF |
92 $t->run(); | 151 $t->run(); |
93 | 152 |
94 ############################################################################### | 153 ############################################################################### |
95 | 154 |
96 like(http_server('xxx'), qr/X-Server: localhost/, 'default'); | 155 like(http_server('xxx'), qr/X-Server: localhost/, 'default'); |
156 unlike(http_server(), qr/X-Server/, 'empty'); | |
97 | 157 |
98 like(http_server('www.example.com'), qr/\QX-Server: www.example.com/, | 158 like(http_server('www.example.com'), qr/\QX-Server: www.example.com/, |
99 'www.example.com'); | 159 'www.example.com'); |
100 like(http_server('WWW.EXAMPLE.COM'), qr/\QX-Server: www.example.com/, | 160 like(http_server('WWW.EXAMPLE.COM'), qr/\QX-Server: www.example.com/, |
101 'www.example.com uppercase'); | 161 'www.example.com uppercase'); |
113 like(http_server('www01.example.com'), qr/X-Match: www01/, | 173 like(http_server('www01.example.com'), qr/X-Match: www01/, |
114 '\p{N} in named capture'); | 174 '\p{N} in named capture'); |
115 like(http_server('WWW01.EXAMPLE.COM'), qr/X-Match: www01/, | 175 like(http_server('WWW01.EXAMPLE.COM'), qr/X-Match: www01/, |
116 '\p{N} in named capture uppercase'); | 176 '\p{N} in named capture uppercase'); |
117 | 177 |
178 like(http_server('many.example.com'), qr/\QX-Server: many.example.com/, | |
179 'name row - first'); | |
180 like(http_server('many2.example.com'), qr/\QX-Server: many.example.com/, | |
181 'name row - second'); | |
182 | |
183 like(http_server('many3.example.com'), qr/\QX-Server: many3.example.com/, | |
184 'name list - first'); | |
185 like(http_server('many4.example.com'), qr/\QX-Server: many3.example.com/, | |
186 'name list - second'); | |
187 | |
188 like(http_server('www.wc.example.com'), | |
189 qr/\QX-Server: *.wc.example.com/, 'wildcard first'); | |
190 like(http_server('wc2.example.net'), | |
191 qr/\QX-Server: wc2.example.*/, 'wildcard last'); | |
192 | |
193 like(http_server('www.dot.example.com'), qr/\QX-Server: dot.example.com/, | |
194 'wildcard dot'); | |
195 like(http_server('dot.example.com'), qr/\QX-Server: dot.example.com/, | |
196 'wildcard dot empty'); | |
197 | |
118 ############################################################################### | 198 ############################################################################### |
119 | 199 |
120 sub http_server { | 200 sub http_server { |
121 my ($host) = @_; | 201 my ($host) = @_; |
122 return http(<<EOF); | 202 |
123 GET / HTTP/1.0 | 203 my $str = 'GET / HTTP/1.0' . CRLF . |
124 Host: $host | 204 (defined $host ? "Host: $host" . CRLF : '') . |
125 | 205 CRLF; |
126 EOF | 206 |
207 return http($str); | |
127 } | 208 } |
128 | 209 |
129 ############################################################################### | 210 ############################################################################### |