Mercurial > hg > nginx-tests
view geo.t @ 239:5d178e27037c
Tests: test for proxy_cache with chunked response.
This covers p->buf_to_file bug as reported by Anatoli Marinov,
aka "cache file ... has md5 collision" alerts.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 29 Oct 2012 22:10:17 +0400 |
parents | 9d7805b05f0f |
children | a675a0d1d19d |
line wrap: on
line source
#!/usr/bin/perl # (C) Maxim Dounin # Tests for nginx geo module. ############################################################################### use warnings; use strict; use Test::More; BEGIN { use FindBin; chdir($FindBin::Bin); } use lib 'lib'; use Test::Nginx; ############################################################################### select STDERR; $| = 1; select STDOUT; $| = 1; my $t = Test::Nginx->new()->has(qw/http geo/); $t->write_file_expand('nginx.conf', <<'EOF'); %%TEST_GLOBALS%% daemon off; events { } http { %%TEST_GLOBALS_HTTP%% geo $geo { 127.0.0.0/8 loopback; 192.0.2.0/24 test; 0.0.0.0/0 world; } geo $arg_ip $geo_from_arg { default default; 127.0.0.0/8 loopback; 192.0.2.0/24 test; } geo $geo_proxy { default default; proxy 127.0.0.1/32; 127.0.0.0/8 loopback; 192.0.2.0/24 test; } geo $geo_ranges { ranges; default default; 127.0.0.0-127.255.255.255 loopback; 192.0.2.0-192.0.2.255 test; } server { listen 127.0.0.1:8080; server_name localhost; location / { add_header X-IP $remote_addr; add_header X-Geo $geo; add_header X-Arg $geo_from_arg; add_header X-XFF $geo_proxy; add_header X-Ran $geo_ranges; } } } EOF $t->write_file('1', ''); $t->run(); plan(skip_all => 'no 127.0.0.1 on host') if http_get('/1') !~ /X-IP: 127.0.0.1/m; $t->plan(7); ############################################################################### like(http_get('/1'), qr/^X-Geo: loopback/m, 'geo'); like(http_get('/1?ip=192.0.2.1'), qr/^X-Arg: test/m, 'geo from variable'); like(http_get('/1?ip=10.0.0.1'), qr/^X-Arg: default/m, 'geo default'); like(http_xff('192.0.2.1'), qr/^X-XFF: test/m, 'geo proxy'); like(http_xff('10.0.0.1'), qr/^X-XFF: default/m, 'geo proxy default'); like(http_xff('10.0.0.1, 192.0.2.1'), qr/^X-XFF: test/m, 'geo proxy long'); like(http_get('/1'), qr/^X-Ran: loopback/m, 'geo ranges'); ############################################################################### sub http_xff { my ($xff) = @_; return http(<<EOF); GET /1 HTTP/1.0 Host: localhost X-Forwarded-For: $xff EOF } ###############################################################################