annotate sub_filter.t @ 540:481d705b8610

Tests: SSL support in mail backends. Socket is now embedded into every mail module. Socket methods are wrapped where appropriate. The new "SSL" extra flag specifies to accept connection over SSL.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 03 Apr 2015 00:11:38 +0300
parents b86c05516e65
children 907e89fba9c3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
304
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for sub filter.
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
452
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http rewrite sub/)->plan(22)
304
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 ->write_file_expand('nginx.conf', <<'EOF');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 %%TEST_GLOBALS%%
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29 daemon off;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31 events {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 http {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 %%TEST_GLOBALS_HTTP%%
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 server {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 listen 127.0.0.1:8080;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 server_name localhost;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 sub_filter_types *;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 sub_filter foo bar;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 location / {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 location /once {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 return 200 $arg_b;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 location /many {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 sub_filter_once off;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 return 200 $arg_b;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 location /complex {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 sub_filter abac _replaced;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 return 200 $arg_b;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 location /complex2 {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 sub_filter ababX _replaced;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 return 200 $arg_b;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 location /complex3 {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 sub_filter aab _replaced;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 return 200 $arg_b;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 }
452
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
70
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
71 location /single {
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
72 sub_filter A B;
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
73 return 200 $arg_b;
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
74 }
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
75
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
76 location /single/many {
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
77 sub_filter A B;
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
78 sub_filter_once off;
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
79 return 200 $arg_b;
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
80 }
304
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 EOF
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 $t->write_file('foo.html', 'foo');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 $t->write_file('foofoo.html', 'foofoo');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 $t->run();
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 ###############################################################################
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 like(http_get('/foo.html'), qr/bar/, 'sub_filter');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 like(http_get('/foofoo.html'), qr/barfoo/, 'once default');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 like(http_get('/once?b=foofoo'), qr/barfoo/, 'once');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 like(http_get('/many?b=foofoo'), qr/barbar/, 'many');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 like(http_get('/many?b=fo'), qr/fo/, 'incomplete');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 like(http_get('/many?b=foofo'), qr/barfo/, 'incomplete long');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 like(http_get('/complex?b=abac'), qr/_replaced/, 'complex');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 like(http_get('/complex?b=abaabac'), qr/aba_replaced/, 'complex 1st char');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 like(http_get('/complex?b=ababac'), qr/replaced/, 'complex 2nd char');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 like(http_get('/complex2?b=ababX'), qr/_replaced/, 'complex2');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 like(http_get('/complex2?b=abababX'), qr/ab_replaced/, 'complex2 long');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 like(http_get('/complex3?b=aab'), qr/_replaced/, 'complex3 aab in aab');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 like(http_get('/complex3?b=aaab'), qr/a_replaced/, 'complex3 aab in aaab');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 like(http_get('/complex3?b=aaaab'), qr/aa_replaced/, 'complex3 aab in aaaab');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108
452
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
109 TODO: {
454
11d324ee4def Tests: fixed sub filter version check.
Sergey Kandaurov <pluknet@nginx.com>
parents: 452
diff changeset
110 local $TODO = 'not yet' unless $t->has_version('1.7.5');
452
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
111
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
112 SKIP: {
454
11d324ee4def Tests: fixed sub filter version check.
Sergey Kandaurov <pluknet@nginx.com>
parents: 452
diff changeset
113 skip 'leaves coredump', 8 unless $t->has_version('1.7.5')
452
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
114 or $ENV{TEST_NGINX_UNSAFE};
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
115
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
116 like(http_get('/single?b=A'), qr/B/, 'single only');
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
117 like(http_get('/single?b=AA'), qr/BA/, 'single begin');
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
118 like(http_get('/single?b=CAAC'), qr/CBAC/, 'single middle');
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
119 like(http_get('/single?b=CA'), qr/CB/, 'single end');
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
120
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
121 like(http_get('/single/many?b=A'), qr/B/, 'single many only');
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
122 like(http_get('/single/many?b=AA'), qr/BB/, 'single many begin');
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
123 like(http_get('/single/many?b=CAAC'), qr/CBBC/, 'single many middle');
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
124 like(http_get('/single/many?b=CA'), qr/CB/, 'single many end');
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
125
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
126 }
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
127
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
128 }
4465c1cf6f75 Tests: sub filter tests for single character matching.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
129
304
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
130 ###############################################################################