comparison server_tokens.t @ 869:f528369414aa

Tests: added tests for server_tokens directive.
author Andrey Zelenkov <zelenkov@nginx.com>
date Tue, 15 Mar 2016 17:02:33 +0300
parents
children 56994b4ce142
comparison
equal deleted inserted replaced
868:d2cb9ed7412e 869:f528369414aa
1 #!/usr/bin/perl
2
3 # (C) Andrey Zelenkov
4 # (C) Nginx, Inc.
5
6 # Tests for server_tokens directive.
7
8 ###############################################################################
9
10 use warnings;
11 use strict;
12
13 use Test::More;
14
15 use Socket qw/ $CRLF /;
16
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
18
19 use lib 'lib';
20 use Test::Nginx;
21
22 ###############################################################################
23
24 select STDERR; $| = 1;
25 select STDOUT; $| = 1;
26
27 my $t = Test::Nginx->new()->has(qw/http rewrite/)
28 ->write_file_expand('nginx.conf', <<'EOF');
29
30 %%TEST_GLOBALS%%
31
32 daemon off;
33
34 events {
35 }
36
37 http {
38 %%TEST_GLOBALS_HTTP%%
39
40 map $arg_st $server_tokens {
41 default $arg_st;
42 }
43
44 server {
45 listen 127.0.0.1:8080;
46
47 location /200 {
48 return 200;
49 }
50
51 location /404 {
52 return 404;
53 }
54
55 location /off {
56 server_tokens off;
57
58 location /off/200 {
59 return 200;
60 }
61
62 location /off/404 {
63 return 404;
64 }
65 }
66
67 location /on {
68 server_tokens on;
69
70 location /on/200 {
71 return 200;
72 }
73
74 location /on/404 {
75 return 404;
76 }
77 }
78
79 location /empty {
80 server_tokens "";
81
82 location /empty/200 {
83 return 200;
84 }
85
86 location /empty/404 {
87 return 404;
88 }
89 }
90
91 location /var {
92 server_tokens $server_tokens;
93
94 location /var/200 {
95 return 200;
96 }
97
98 location /var/404 {
99 return 404;
100 }
101 }
102 }
103 }
104
105 EOF
106
107 $t->try_run('no server_tokens variable support')->plan(21);
108
109 ###############################################################################
110
111 like(http_get('/200'), qr/Server: nginx\/\d+\.\d+\.\d+/, 'tokens default 200');
112 like(http_get('/404'), qr/Server: nginx\/\d+\.\d+\.\d+/, 'tokens default 404');
113 like(http_body('/404'), qr/nginx\/\d+\.\d+\.\d+/, 'tokens default 404 body');
114
115 like(http_get('/off/200'), qr/Server: nginx${CRLF}/, 'tokens off 200');
116 like(http_get('/off/404'), qr/Server: nginx${CRLF}/, 'tokens off 404');
117 like(http_body('/off/404'), qr/nginx(?!\/)/, 'tokens off 404 body');
118
119 like(http_get('/on/200'), qr/Server: nginx\/\d+\.\d+\.\d+/, 'tokens on 200');
120 like(http_get('/on/404'), qr/Server: nginx\/\d+\.\d+\.\d+/, 'tokens on 404');
121 like(http_body('/on/404'), qr/nginx\/\d+\.\d+\.\d+/, 'tokens on 404 body');
122
123 unlike(http_get('/empty/200'), qr/Server:/, 'tokens empty 200');
124 unlike(http_get('/empty/404'), qr/Server:/, 'tokens empty 404');
125 unlike(http_body('/empty/404'), qr/nginx/, 'tokens empty 404 body');
126
127 like(http_get('/var/200?st=off'), qr/Server: nginx${CRLF}/,
128 'tokens var off 200');
129 like(http_get('/var/404?st=off'), qr/Server: nginx${CRLF}/,
130 'tokens var off 404');
131 like(http_body('/var/404?st=off'), qr/nginx(?!\/)/, 'tokens var off 404 body');
132
133 like(http_get('/var/200?st=on'), qr/Server: nginx\/\d+\.\d+\.\d+/,
134 'tokens var on 200');
135 like(http_get('/var/404?st=on'), qr/Server: nginx\/\d+\.\d+\.\d+/,
136 'tokens var on 404');
137 like(http_body('/var/404?st=on'), qr/nginx\/\d+\.\d+\.\d+/,
138 'tokens var on 404 body');
139
140 unlike(http_get('/var/200'), qr/Server:/, 'tokens var empty 200');
141 unlike(http_get('/var/404'), qr/Server:/, 'tokens var empty 404');
142 unlike(http_body('/var/404'), qr/nginx/, 'tokens var empty 404 body');
143
144 ###############################################################################
145
146 sub http_body {
147 my ($uri) = shift;
148 return http_get($uri) =~ /.*?\x0d\x0a?\x0d\x0a?(.*)/ms && $1;
149 }
150
151 ###############################################################################