comparison http-server-name.t @ 114:44b281ac4bc6

Tests: add server name tests, including fancy regex ones. With test config nginx will fail to start as of 0.8.28 due to incorrect conversion of regular expressions to lowercase. Patch was discussed on mailing list and will be included in next release.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 30 Nov 2009 14:47:17 +0300
parents
children cb1b04d8de29
comparison
equal deleted inserted replaced
113:5d31f920eda9 114:44b281ac4bc6
1 #!/usr/bin/perl
2
3 # (C) Maxim Dounin
4
5 # Tests for server_name selection.
6
7 ###############################################################################
8
9 use warnings;
10 use strict;
11
12 use Test::More;
13
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
15
16 use lib 'lib';
17 use Test::Nginx;
18
19 ###############################################################################
20
21 select STDERR; $| = 1;
22 select STDOUT; $| = 1;
23
24 my $t = Test::Nginx->new()->has('rewrite')
25 ->write_file_expand('nginx.conf', <<'EOF');
26
27 %%TEST_GLOBALS%%
28
29 master_process off;
30 daemon off;
31
32 events {
33 }
34
35 http {
36 %%TEST_GLOBALS_HTTP%%
37
38 server {
39 listen 127.0.0.1:8080;
40 server_name localhost;
41
42 location / {
43 add_header X-Server $server_name;
44 return 204;
45 }
46 }
47
48 server {
49 listen 127.0.0.1:8080;
50 server_name www.example.com;
51
52 location / {
53 add_header X-Server $server_name;
54 return 204;
55 }
56 }
57
58 server {
59 listen 127.0.0.1:8080;
60 server_name ~^EXAMPLE\.COM$;
61
62 location / {
63 add_header X-Server $server_name;
64 return 204;
65 }
66 }
67
68 server {
69 listen 127.0.0.1:8080;
70 server_name ~^(?P<name>.+)\Q.example.com\E$;
71
72 location / {
73 add_header X-Server $server_name;
74 add_header X-Match $name;
75 return 204;
76 }
77 }
78
79 server {
80 listen 127.0.0.1:8080;
81 server_name "~^(?<name>www\p{N}+)\.example\.com$";
82
83 location / {
84 add_header X-Server $server_name;
85 add_header X-Match $name;
86 return 204;
87 }
88 }
89 }
90
91 EOF
92
93 eval {
94
95 $t->run();
96
97 };
98
99 if ($@) {
100 plan(skip_all => 'not patched yet');
101 }
102
103 $t->plan(9);
104
105 ###############################################################################
106
107 sub http_server($) {
108 my ($host) = @_;
109 return http(<<EOF);
110 GET / HTTP/1.0
111 Host: $host
112
113 EOF
114 }
115
116 ###############################################################################
117
118 like(http_server('xxx'), qr/X-Server: localhost/, 'default');
119
120 like(http_server('www.example.com'), qr/\QX-Server: www.example.com/,
121 'www.example.com');
122 like(http_server('WWW.EXAMPLE.COM'), qr/\QX-Server: www.example.com/,
123 'www.example.com uppercase');
124
125 like(http_server('example.com'), qr/\QX-Server: ~^EXAMPLE\.COM$/,
126 'example.com regex');
127 like(http_server('EXAMPLE.COM'), qr/\QX-Server: ~^EXAMPLE\.COM$/,
128 'example.com regex uppercase');
129
130 like(http_server('blah.example.com'), qr/X-Match: blah/,
131 '(P<name>.*).example.com named capture');
132 like(http_server('BLAH.EXAMPLE.COM'), qr/X-Match: blah/,
133 '(P<name>.*).example.com named capture uppercase');
134
135 like(http_server('www01.example.com'), qr/X-Match: www01/,
136 '\p{N} in named capture');
137 like(http_server('WWW01.EXAMPLE.COM'), qr/X-Match: www01/,
138 '\p{N} in named capture uppercase');
139
140 ###############################################################################