Mercurial > hg > nginx-tests
annotate not_modified_proxy.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 | f5f2a66853a9 |
children | 907e89fba9c3 |
rev | line source |
---|---|
418
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for not modified filter module and it's interaction with proxy. |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 # |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 # Notably, requests which are proxied should be skipped (that is, if |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 # a backend returned 200, we should pass 200 to a client without any |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 # attempts to handle conditional headers in the request), but responses |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 # from cache should be handled. |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 ############################################################################### |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 use warnings; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 use strict; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::More; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 BEGIN { use FindBin; chdir($FindBin::Bin); } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 use lib 'lib'; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 use Test::Nginx; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 ############################################################################### |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 select STDERR; $| = 1; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 select STDOUT; $| = 1; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 plan(skip_all => 'win32') if $^O eq 'MSWin32'; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 my $t = Test::Nginx->new()->has(qw/http proxy cache/)->plan(9) |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 ->write_file_expand('nginx.conf', <<'EOF'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 %%TEST_GLOBALS%% |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 daemon off; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 events { |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 http { |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 %%TEST_GLOBALS_HTTP%% |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 proxy_cache_path %%TESTDIR%%/cache keys_zone=one:1m; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 proxy_set_header If-Modified-Since ""; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 proxy_set_header If-None-Match ""; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 server { |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 listen 127.0.0.1:8080; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 server_name localhost; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 location / { |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 location /etag { |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 add_header Last-Modified ""; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 location /proxy/ { |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 proxy_pass http://127.0.0.1:8080/; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 location /cache/ { |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 proxy_pass http://127.0.0.1:8080/; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 proxy_cache one; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 proxy_cache_valid 200 1y; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 EOF |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 $t->write_file('t', ''); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 $t->write_file('etag', ''); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 $t->run(); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 ############################################################################### |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 my ($t1, $lm, $etag); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 $t1 = http_get('/cache/t'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 $t1 =~ /Last-Modified: (.*)/; $lm = $1; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 $t1 =~ /ETag: (.*)/; $etag = $1; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 like(http_get_ims('/t', $lm), qr/ 304 /, 'if-modified-since'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 like(http_get_ims('/proxy/t', $lm), qr/ 200 /, 'ims proxy ignored'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 like(http_get_ims('/cache/t', $lm), qr/ 304 /, 'ims from cache'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 like(http_get_inm('/t', $etag), qr/ 304 /, 'if-none-match'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 like(http_get_inm('/proxy/t', $etag), qr/ 200 /, 'inm proxy ignored'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 like(http_get_inm('/cache/t', $etag), qr/ 304 /, 'inm from cache'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 # backend response with ETag only, no Last-Modified |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
96 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 $t1 = http_get('/cache/etag'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
98 $t1 =~ /ETag: (.*)/; $etag = $1; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
100 like(http_get_inm('/etag', $etag), qr/ 304 /, 'if-none-match etag only'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 like(http_get_inm('/proxy/etag', $etag), qr/ 200 /, 'inm etag proxy ignored'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 TODO: { |
419
f5f2a66853a9
Tests: adjust entity tag TODOs.
Maxim Dounin <mdounin@mdounin.ru>
parents:
418
diff
changeset
|
104 local $TODO = 'not yet' unless $t->has_version('1.7.3'); |
418
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
105 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
106 like(http_get_inm('/cache/etag', $etag), qr/ 304 /, 'inm etag from cache'); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
107 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
108 } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
109 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
110 ############################################################################### |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
111 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
112 sub http_get_ims { |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
113 my ($url, $ims) = @_; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
114 return http(<<EOF); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
115 GET $url HTTP/1.0 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
116 Host: localhost |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
117 If-Modified-Since: $ims |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
118 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
119 EOF |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
120 } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
121 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
122 sub http_get_inm { |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
123 my ($url, $inm) = @_; |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
124 return http(<<EOF); |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
125 GET $url HTTP/1.0 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
126 Host: localhost |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
127 If-None-Match: $inm |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
128 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
129 EOF |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
130 } |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
131 |
861e6cad6299
Tests: tests for not modified filter with proxy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
132 ############################################################################### |