comparison geo.t @ 1015:1d205c07ef59

Tests: more geo ranges tests.
author Andrey Zelenkov <zelenkov@nginx.com>
date Fri, 26 Aug 2016 16:31:44 +0300
parents 61fbb879446a
children 2cf72e8a1a6b
comparison
equal deleted inserted replaced
1014:61fbb879446a 1015:1d205c07ef59
63 } 63 }
64 64
65 geo $arg_ip $geo_arg_ranges { 65 geo $arg_ip $geo_arg_ranges {
66 ranges; 66 ranges;
67 default default; 67 default default;
68 127.0.0.0-127.0.0.1 loopback;
68 69
69 # ranges with two /16 networks 70 # ranges with two /16 networks
70 # the latter network has greater two least octets 71 # the latter network has greater two least octets
71 # (see 1301a58b5dac for details) 72 # (see 1301a58b5dac for details)
72 10.10.3.0-10.11.2.255 foo; 73 10.10.3.0-10.11.2.255 foo;
74 10.12.3.0-10.13.2.255 foo2;
73 delete 10.10.3.0-10.11.2.255; 75 delete 10.10.3.0-10.11.2.255;
74 } 76 }
75 77
76 geo $geo_proxy { 78 geo $geo_proxy {
77 default default; 79 default default;
117 ranges; 119 ranges;
118 default default; 120 default default;
119 127.0.0.0-127.1.0.0 loopback; 121 127.0.0.0-127.1.0.0 loopback;
120 delete 127.0.0.0-127.1.0.0; 122 delete 127.0.0.0-127.1.0.0;
121 } 123 }
124
125 geo $geo_before {
126 ranges;
127 default default;
128 127.0.0.1-127.0.0.255 loopback;
129 127.0.0.0-127.0.0.0 test;
130 }
131
132 geo $geo_after {
133 ranges;
134 default default;
135 127.0.0.0-127.0.0.1 loopback;
136 127.0.0.2-127.0.0.255 test;
137 }
138
139 geo $geo_insert {
140 ranges;
141 default default;
142 127.0.0.0-127.0.0.255 test;
143 127.0.0.1-127.0.0.2 test2;
144 127.0.0.1-127.0.0.1 loopback;
145 }
146
147 geo $geo_insert_before {
148 ranges;
149 default default;
150 127.0.0.0-127.0.0.255 test;
151 127.0.0.0-127.0.0.1 loopback;
152 }
153
154 geo $geo_insert_after {
155 ranges;
156 default default;
157 127.0.0.0-127.0.0.255 test;
158 127.0.0.1-127.0.0.255 loopback;
159 }
122 160
123 server { 161 server {
124 listen 127.0.0.1:8080; 162 listen 127.0.0.1:8080;
125 server_name localhost; 163 server_name localhost;
126 164
129 add_header X-Geo $geo; 167 add_header X-Geo $geo;
130 add_header X-Inc $geo_include; 168 add_header X-Inc $geo_include;
131 add_header X-Del $geo_delete; 169 add_header X-Del $geo_delete;
132 add_header X-Ran $geo_ranges; 170 add_header X-Ran $geo_ranges;
133 add_header X-RIn $geo_ranges_include; 171 add_header X-RIn $geo_ranges_include;
172 add_header X-ABe $geo_before;
173 add_header X-AAf $geo_after;
174 add_header X-Ins $geo_insert;
175 add_header X-IBe $geo_insert_before;
176 add_header X-IAf $geo_insert_after;
134 add_header X-Arg $geo_from_arg; 177 add_header X-Arg $geo_from_arg;
135 add_header X-ARa $geo_arg_ranges; 178 add_header X-ARa $geo_arg_ranges;
136 add_header X-XFF $geo_proxy; 179 add_header X-XFF $geo_proxy;
137 add_header X-XFR $geo_proxy_recursive; 180 add_header X-XFR $geo_proxy_recursive;
138 } 181 }
154 $t->run(); 197 $t->run();
155 198
156 plan(skip_all => 'no 127.0.0.1 on host') 199 plan(skip_all => 'no 127.0.0.1 on host')
157 if http_get('/1') !~ /X-IP: 127.0.0.1/m; 200 if http_get('/1') !~ /X-IP: 127.0.0.1/m;
158 201
159 $t->plan(15); 202 $t->plan(22);
160 203
161 ############################################################################### 204 ###############################################################################
162 205
163 my $r = http_get('/1'); 206 my $r = http_get('/1');
164 like($r, qr/^X-Geo: loopback/m, 'geo'); 207 like($r, qr/^X-Geo: loopback/m, 'geo');
174 like(http_get('/2'), qr/^X-RDe: default/m, 'geo ranges delete'); 217 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'); 218 like(http_get('/2'), qr/^X-RD2: default/m, 'geo ranges delete 2');
176 219
177 } 220 }
178 221
222 like($r, qr/^X-ABe: loopback/m, 'geo ranges add before');
223 like($r, qr/^X-AAf: loopback/m, 'geo ranges add after');
224 like($r, qr/^X-Ins: loopback/m, 'geo ranges insert');
225 like($r, qr/^X-IBe: loopback/m, 'geo ranges insert before');
226 like($r, qr/^X-IAf: loopback/m, 'geo ranges insert after');
227
179 like(http_get('/1?ip=192.0.2.1'), qr/^X-Arg: test/m, 'geo from variable'); 228 like(http_get('/1?ip=192.0.2.1'), qr/^X-Arg: test/m, 'geo from variable');
180 like(http_get('/1?ip=10.0.0.1'), qr/^X-Arg: default/m, 'geo default'); 229 like(http_get('/1?ip=10.0.0.1'), qr/^X-Arg: default/m, 'geo default');
230 like(http_get('/1?ip=10.0.0.1'), qr/^X-ARa: default/m, 'geo ranges default');
231 like(http_get('/1?ip=10.13.2.1'), qr/^X-ARa: foo2/m, 'geo ranges add');
181 232
182 TODO: { 233 TODO: {
183 todo_skip 'use-after-free', 1 unless $ENV{TEST_NGINX_UNSAFE} 234 todo_skip 'use-after-free', 1 unless $ENV{TEST_NGINX_UNSAFE}
184 or $t->has_version('1.11.4'); 235 or $t->has_version('1.11.4');
185 236