Mercurial > hg > nginx-tests
comparison geo.t @ 1014:61fbb879446a
Tests: geo delete tests.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Fri, 26 Aug 2016 16:31:29 +0300 |
parents | 8f92d97cf40e |
children | 1d205c07ef59 |
comparison
equal
deleted
inserted
replaced
1013:8f92d97cf40e | 1014:61fbb879446a |
---|---|
47 include geo.conf; | 47 include geo.conf; |
48 192.0.2.0/24 test; | 48 192.0.2.0/24 test; |
49 0.0.0.0/0 world; | 49 0.0.0.0/0 world; |
50 } | 50 } |
51 | 51 |
52 geo $geo_delete { | |
53 127.0.0.0/8 loopback; | |
54 192.0.2.0/24 test; | |
55 0.0.0.0/0 world; | |
56 delete 127.0.0.0/8; | |
57 } | |
58 | |
52 geo $arg_ip $geo_from_arg { | 59 geo $arg_ip $geo_from_arg { |
53 default default; | 60 default default; |
54 127.0.0.0/8 loopback; | 61 127.0.0.0/8 loopback; |
55 192.0.2.0/24 test; | 62 192.0.2.0/24 test; |
63 } | |
64 | |
65 geo $arg_ip $geo_arg_ranges { | |
66 ranges; | |
67 default default; | |
68 | |
69 # ranges with two /16 networks | |
70 # the latter network has greater two least octets | |
71 # (see 1301a58b5dac for details) | |
72 10.10.3.0-10.11.2.255 foo; | |
73 delete 10.10.3.0-10.11.2.255; | |
56 } | 74 } |
57 | 75 |
58 geo $geo_proxy { | 76 geo $geo_proxy { |
59 default default; | 77 default default; |
60 proxy 127.0.0.1; | 78 proxy 127.0.0.1; |
82 default default; | 100 default default; |
83 include geo-ranges.conf; | 101 include geo-ranges.conf; |
84 192.0.2.0-192.0.2.255 test; | 102 192.0.2.0-192.0.2.255 test; |
85 } | 103 } |
86 | 104 |
105 geo $geo_ranges_delete { | |
106 ranges; | |
107 default default; | |
108 127.0.0.0-127.0.0.255 test; | |
109 127.0.0.1-127.0.0.1 loopback; | |
110 delete 127.0.0.0-127.0.0.0; | |
111 delete 127.0.0.2-127.0.0.255; | |
112 delete 127.0.0.1-127.0.0.1; | |
113 } | |
114 | |
115 # delete range with two /16 | |
116 geo $geo_ranges_delete_2 { | |
117 ranges; | |
118 default default; | |
119 127.0.0.0-127.1.0.0 loopback; | |
120 delete 127.0.0.0-127.1.0.0; | |
121 } | |
122 | |
87 server { | 123 server { |
88 listen 127.0.0.1:8080; | 124 listen 127.0.0.1:8080; |
89 server_name localhost; | 125 server_name localhost; |
90 | 126 |
91 location / { | 127 location / { |
92 add_header X-IP $remote_addr; | 128 add_header X-IP $remote_addr; |
93 add_header X-Geo $geo; | 129 add_header X-Geo $geo; |
94 add_header X-Inc $geo_include; | 130 add_header X-Inc $geo_include; |
131 add_header X-Del $geo_delete; | |
95 add_header X-Ran $geo_ranges; | 132 add_header X-Ran $geo_ranges; |
96 add_header X-RIn $geo_ranges_include; | 133 add_header X-RIn $geo_ranges_include; |
97 add_header X-Arg $geo_from_arg; | 134 add_header X-Arg $geo_from_arg; |
135 add_header X-ARa $geo_arg_ranges; | |
98 add_header X-XFF $geo_proxy; | 136 add_header X-XFF $geo_proxy; |
99 add_header X-XFR $geo_proxy_recursive; | 137 add_header X-XFR $geo_proxy_recursive; |
100 } | 138 } |
139 | |
140 location /2 { | |
141 add_header X-RDe $geo_ranges_delete; | |
142 add_header X-RD2 $geo_ranges_delete_2; | |
143 } | |
101 } | 144 } |
102 } | 145 } |
103 | 146 |
104 EOF | 147 EOF |
105 | 148 |
106 $t->write_file('1', ''); | 149 $t->write_file('1', ''); |
150 $t->write_file('2', ''); | |
107 $t->write_file('geo.conf', '127.0.0.0/8 loopback;'); | 151 $t->write_file('geo.conf', '127.0.0.0/8 loopback;'); |
108 $t->write_file('geo-ranges.conf', '127.0.0.0-127.255.255.255 loopback;'); | 152 $t->write_file('geo-ranges.conf', '127.0.0.0-127.255.255.255 loopback;'); |
109 | 153 |
110 $t->run(); | 154 $t->run(); |
111 | 155 |
112 plan(skip_all => 'no 127.0.0.1 on host') | 156 plan(skip_all => 'no 127.0.0.1 on host') |
113 if http_get('/1') !~ /X-IP: 127.0.0.1/m; | 157 if http_get('/1') !~ /X-IP: 127.0.0.1/m; |
114 | 158 |
115 $t->plan(11); | 159 $t->plan(15); |
116 | 160 |
117 ############################################################################### | 161 ############################################################################### |
118 | 162 |
119 my $r = http_get('/1'); | 163 my $r = http_get('/1'); |
120 like($r, qr/^X-Geo: loopback/m, 'geo'); | 164 like($r, qr/^X-Geo: loopback/m, 'geo'); |
121 like($r, qr/^X-Inc: loopback/m, 'geo include'); | 165 like($r, qr/^X-Inc: loopback/m, 'geo include'); |
166 like($r, qr/^X-Del: world/m, 'geo delete'); | |
122 like($r, qr/^X-Ran: loopback/m, 'geo ranges'); | 167 like($r, qr/^X-Ran: loopback/m, 'geo ranges'); |
123 like($r, qr/^X-RIn: loopback/m, 'geo ranges include'); | 168 like($r, qr/^X-RIn: loopback/m, 'geo ranges include'); |
124 | 169 |
170 TODO: { | |
171 todo_skip 'use-after-free', 2 unless $ENV{TEST_NGINX_UNSAFE} | |
172 or $t->has_version('1.11.4'); | |
173 | |
174 like(http_get('/2'), qr/^X-RDe: default/m, 'geo ranges delete'); | |
175 like(http_get('/2'), qr/^X-RD2: default/m, 'geo ranges delete 2'); | |
176 | |
177 } | |
178 | |
125 like(http_get('/1?ip=192.0.2.1'), qr/^X-Arg: test/m, 'geo from variable'); | 179 like(http_get('/1?ip=192.0.2.1'), qr/^X-Arg: test/m, 'geo from variable'); |
126 like(http_get('/1?ip=10.0.0.1'), qr/^X-Arg: default/m, 'geo default'); | 180 like(http_get('/1?ip=10.0.0.1'), qr/^X-Arg: default/m, 'geo default'); |
181 | |
182 TODO: { | |
183 todo_skip 'use-after-free', 1 unless $ENV{TEST_NGINX_UNSAFE} | |
184 or $t->has_version('1.11.4'); | |
185 | |
186 like(http_get('/1?ip=10.11.2.1'), qr/^X-ARa: default/m, | |
187 'geo delete range from variable'); | |
188 | |
189 } | |
127 | 190 |
128 like(http_xff('192.0.2.1'), qr/^X-XFF: test/m, 'geo proxy'); | 191 like(http_xff('192.0.2.1'), qr/^X-XFF: test/m, 'geo proxy'); |
129 like(http_xff('10.0.0.1'), qr/^X-XFF: default/m, 'geo proxy default'); | 192 like(http_xff('10.0.0.1'), qr/^X-XFF: default/m, 'geo proxy default'); |
130 like(http_xff('10.0.0.1, 192.0.2.1'), qr/^X-XFF: test/m, 'geo proxy long'); | 193 like(http_xff('10.0.0.1, 192.0.2.1'), qr/^X-XFF: test/m, 'geo proxy long'); |
131 | 194 |