Mercurial > hg > nginx-tests
annotate realip.t @ 445:62d1f96c5ff4
Tests: syslog "if=" tests.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 06 Aug 2014 13:31:55 +0400 |
parents | a9621dbbd0d4 |
children | dc2f8aac0553 |
rev | line source |
---|---|
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for nginx realip module. |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
217
ea574aae77cb
Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents:
216
diff
changeset
|
24 my $t = Test::Nginx->new()->has(qw/http realip/); |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 $t->write_file_expand('nginx.conf', <<'EOF'); |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 %%TEST_GLOBALS%% |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 |
249
6a0d934950bc
Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
247
diff
changeset
|
30 daemon off; |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 events { |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 http { |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
38 add_header X-IP $remote_addr; |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 real_ip_header X-Forwarded-For; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 server { |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 listen 127.0.0.1:8080; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 server_name localhost; |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
45 location /1 { |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
46 set_real_ip_from 127.0.0.1/32; |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
47 set_real_ip_from 10.0.1.0/24; |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
48 real_ip_recursive off; |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
49 } |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
50 |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
51 location /2 { |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
52 set_real_ip_from 127.0.0.1/32; |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
53 set_real_ip_from 10.0.1.0/24; |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
54 real_ip_recursive on; |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 EOF |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 $t->write_file('1', ''); |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
62 $t->write_file('2', ''); |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 $t->run(); |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 |
217
ea574aae77cb
Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents:
216
diff
changeset
|
65 plan(skip_all => 'no 127.0.0.1 on host') |
ea574aae77cb
Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents:
216
diff
changeset
|
66 if http_get('/1') !~ /X-IP: 127.0.0.1/m; |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 |
247
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
68 $t->plan(6); |
217
ea574aae77cb
Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents:
216
diff
changeset
|
69 |
ea574aae77cb
Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents:
216
diff
changeset
|
70 ############################################################################### |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
72 like(http_xff('/1', '192.0.2.1'), qr/^X-IP: 192.0.2.1/m, 'realip'); |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
73 like(http_xff('/1', '10.0.0.1, 192.0.2.1'), qr/^X-IP: 192.0.2.1/m, |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
74 'realip multi'); |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
75 like(http_xff('/1', '192.0.2.1, 10.0.1.1, 127.0.0.1'), |
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
76 qr/^X-IP: 127.0.0.1/m, 'realip recursive off'); |
247
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
77 like(http_xff('/2', '10.0.1.1, 192.0.2.1, 127.0.0.1'), |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
78 qr/^X-IP: 192.0.2.1/m, 'realip recursive on'); |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 |
247
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
80 like(http(<<EOF), qr/^X-IP: 10.0.1.1/m, 'realip multi xff recursive off'); |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
81 GET /1 HTTP/1.0 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
82 Host: localhost |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
83 X-Forwarded-For: 192.0.2.1 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
84 X-Forwarded-For: 127.0.0.1, 10.0.1.1 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
85 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
86 EOF |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
87 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
88 like(http(<<EOF), qr/^X-IP: 192.0.2.1/m, 'realip multi xff recursive on'); |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
89 GET /2 HTTP/1.0 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
90 Host: localhost |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
91 X-Forwarded-For: 10.0.1.1 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
92 X-Forwarded-For: 192.0.2.1 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
93 X-Forwarded-For: 127.0.0.1 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
94 |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
95 EOF |
bf6b05f03458
Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents:
245
diff
changeset
|
96 |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 ############################################################################### |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
98 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 sub http_xff { |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
100 my ($uri, $xff) = @_; |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 return http(<<EOF); |
245
7189255c1b91
Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents:
217
diff
changeset
|
102 GET $uri HTTP/1.0 |
216
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 Host: localhost |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
104 X-Forwarded-For: $xff |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
105 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
106 EOF |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
107 } |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
108 |
f2f37a52e42e
Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
109 ############################################################################### |