annotate sub_filter.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 4465c1cf6f75
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 use Socket qw/ CRLF /;
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 BEGIN { use FindBin; chdir($FindBin::Bin); }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 use lib 'lib';
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 use Test::Nginx;
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 ###############################################################################
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23 select STDERR; $| = 1;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 select STDOUT; $| = 1;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http rewrite sub/)->plan(14)
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 ->write_file_expand('nginx.conf', <<'EOF');
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 %%TEST_GLOBALS%%
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 daemon off;
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 events {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 http {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 server {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 listen 127.0.0.1:8080;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 server_name localhost;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 sub_filter_types *;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 sub_filter foo bar;
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 location / {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 location /once {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 return 200 $arg_b;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 location /many {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 sub_filter_once off;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 return 200 $arg_b;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 location /complex {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 sub_filter abac _replaced;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 return 200 $arg_b;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 location /complex2 {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 sub_filter ababX _replaced;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 return 200 $arg_b;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 location /complex3 {
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 sub_filter aab _replaced;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 return 200 $arg_b;
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 }
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 EOF
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 $t->write_file('foo.html', 'foo');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 $t->write_file('foofoo.html', 'foofoo');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 $t->run();
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80
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 like(http_get('/foo.html'), qr/bar/, 'sub_filter');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 like(http_get('/foofoo.html'), qr/barfoo/, 'once default');
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 like(http_get('/once?b=foofoo'), qr/barfoo/, 'once');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 like(http_get('/many?b=foofoo'), qr/barbar/, 'many');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 like(http_get('/many?b=fo'), qr/fo/, 'incomplete');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 like(http_get('/many?b=foofo'), qr/barfo/, 'incomplete long');
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 like(http_get('/complex?b=abac'), qr/_replaced/, 'complex');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 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
93 like(http_get('/complex?b=ababac'), qr/replaced/, 'complex 2nd char');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 like(http_get('/complex2?b=ababX'), qr/_replaced/, 'complex2');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 like(http_get('/complex2?b=abababX'), qr/ab_replaced/, 'complex2 long');
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 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
97 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
98 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
99
6bee817c9e97 Tests: sub filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 ###############################################################################