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 ###############################################################################