Mercurial > hg > nginx-tests
annotate sub_filter_perl.t @ 431:05c46688b54b
Tests: ssl_password_file.t fixes.
Make sure to always specify listen socket in all servers as the
default vary (under root, nginx will try to listen on 80). Make sure
to detect if an https request was processed by http.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 09 Jul 2014 05:19:51 +0400 |
parents | 847ea345becb |
children | b86c05516e65 |
rev | line source |
---|---|
304 | 1 #!/usr/bin/perl |
2 | |
3 # (C) Maxim Dounin | |
4 | |
5 # Tests for sub filter, extended tests using embedded perl. | |
6 | |
7 ############################################################################### | |
8 | |
9 use warnings; | |
10 use strict; | |
11 | |
12 use Test::More; | |
13 | |
14 use Socket qw/ CRLF /; | |
15 | |
16 BEGIN { use FindBin; chdir($FindBin::Bin); } | |
17 | |
18 use lib 'lib'; | |
19 use Test::Nginx; | |
20 | |
21 ############################################################################### | |
22 | |
23 select STDERR; $| = 1; | |
24 select STDOUT; $| = 1; | |
25 | |
314
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http sub perl/)->plan(22) |
304 | 27 ->write_file_expand('nginx.conf', <<'EOF'); |
28 | |
29 %%TEST_GLOBALS%% | |
30 | |
31 daemon off; | |
32 | |
33 events { | |
34 } | |
35 | |
36 http { | |
37 %%TEST_GLOBALS_HTTP%% | |
38 | |
39 server { | |
40 listen 127.0.0.1:8080; | |
41 server_name localhost; | |
42 | |
43 sub_filter_types *; | |
44 sub_filter foobarbaz replaced; | |
45 | |
46 location / { | |
47 perl 'sub { | |
48 my $r = shift; | |
49 $r->send_http_header("text/html"); | |
50 return OK if $r->header_only; | |
51 $r->print("foo"); | |
52 $r->flush(); | |
53 $r->print("bar"); | |
54 $r->flush(); | |
55 $r->print("baz"); | |
56 return OK; | |
57 }'; | |
58 } | |
59 | |
60 location /multi { | |
61 sub_filter aab _replaced; | |
62 perl 'sub { | |
63 my $r = shift; | |
64 $r->send_http_header("text/html"); | |
65 return OK if $r->header_only; | |
66 $r->print($r->variable("arg_a")); | |
67 $r->print($r->variable("arg_b")); | |
68 return OK; | |
69 }'; | |
70 } | |
314
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
71 |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
72 location /short { |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
73 sub_filter ab _replaced; |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
74 perl 'sub { |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
75 my $r = shift; |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
76 $r->send_http_header("text/html"); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
77 return OK if $r->header_only; |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
78 $r->print($r->variable("arg_a")); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
79 $r->print($r->variable("arg_b")); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
80 return OK; |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
81 }'; |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
82 } |
304 | 83 } |
84 } | |
85 | |
86 EOF | |
87 | |
88 $t->run(); | |
89 | |
90 ############################################################################### | |
91 | |
92 like(http_get('/flush'), qr/^replaced$/m, 'flush'); | |
93 | |
94 like(http_get('/multi?a=a&b=ab'), qr/^_replaced$/m, 'aab in a + ab'); | |
95 like(http_get('/multi?a=a&b=aaab'), qr/^aa_replaced$/m, 'aab in a + aaab'); | |
314
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
96 like(http_get('/multi?a=a&b=aab'), qr/^a_replaced$/m, 'aab in a + aab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
97 like(http_get('/multi?a=a&b=aaaab'), qr/^aaa_replaced$/m, 'aab in a + aaaab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
98 like(http_get('/multi?a=aa&b=ab'), qr/^a_replaced$/m, 'aab in aa + ab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
99 like(http_get('/multi?a=aa&b=aab'), qr/^aa_replaced$/m, 'aab in aa + aab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
100 like(http_get('/multi?a=aa&b=aaab'), qr/^aaa_replaced$/m, 'aab in aa + aaab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
101 like(http_get('/multi?a=aa&b=aaaab'), qr/^aaaa_replaced$/m, 'aab in aa + aaaab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
102 |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
103 # full backtracking |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
104 |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
105 like(http_get('/multi?a=aa&b=xaaab'), qr/^aaxa_replaced$/m, 'aab in aa + xaaab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
106 like(http_get('/multi?a=aa&b=axaaab'), qr/^aaaxa_replaced$/m, |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
107 'aab in aa + axaaab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
108 like(http_get('/multi?a=aa&b=aaxaaab'), qr/^aaaaxa_replaced$/m, |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
109 'aab in aa + aaxaaab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
110 |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
111 # short pattern |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
112 |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
113 like(http_get('/short?a=a&b=b'), qr/^_replaced$/m, 'ab in a + b'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
114 like(http_get('/short?a=a&b=ab'), qr/^a_replaced$/m, 'ab in a + ab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
115 like(http_get('/short?a=a&b=aab'), qr/^aa_replaced$/m, 'ab in a + aab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
116 like(http_get('/short?a=a&b=aaab'), qr/^aaa_replaced$/m, 'ab in a + aaab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
117 like(http_get('/short?a=a&b=aaaab'), qr/^aaaa_replaced$/m, 'ab in a + aaaab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
118 |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
119 like(http_get('/short?a=aa&b=b'), qr/^a_replaced$/m, 'ab in aa + b'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
120 like(http_get('/short?a=aa&b=ab'), qr/^aa_replaced$/m, 'ab in aa + ab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
121 like(http_get('/short?a=aa&b=aab'), qr/^aaa_replaced$/m, 'ab in aa + aab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
122 like(http_get('/short?a=aa&b=aaab'), qr/^aaaa_replaced$/m, 'ab in aa + aaab'); |
eb6f293b512b
Tests: improve sub_filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
304
diff
changeset
|
123 like(http_get('/short?a=aa&b=aaaab'), qr/^aaaaa_replaced$/m, 'ab in aa + aaaab'); |
304 | 124 |
125 ############################################################################### |