annotate range_charset.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 d5bf5942a8b2
children 2cd00179f4b2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
373
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for range filter on proxied response with charset.
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 plan(skip_all => 'win32') if $^O eq 'MSWin32';
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 my $t = Test::Nginx->new()->has(qw/http proxy cache charset/)->plan(10)
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 ->write_file_expand('nginx.conf', <<'EOF');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30 %%TEST_GLOBALS%%
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32 daemon off;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 events {
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 }
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 http {
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 charset_map B A {
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 58 59; # X -> Y
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 }
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 proxy_cache_path %%TESTDIR%%/cache levels=1:2
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 keys_zone=NAME:1m;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 server {
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 listen 127.0.0.1:8080;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 server_name localhost;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 location / {
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 proxy_pass http://127.0.0.1:8081;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 proxy_cache NAME;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 proxy_cache_valid 200 1m;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 }
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 }
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 server {
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 listen 127.0.0.1:8081;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 server_name localhost;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 charset B;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 location /t2.html {
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 add_header X-Accel-Charset A;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 }
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 }
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 }
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 EOF
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 $t->write_file('t1.html',
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 $t->write_file('t2.html',
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 $t->run();
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 ###############################################################################
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 my $t1;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 # range request on proxied response with charset attribute in content-type
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 # NB: to get partial content, requests need to be served from cache
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 http_get('/t1.html');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 $t1 = http_get_range('/t1.html', 'Range: bytes=0-9, 10-19');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
87 like($t1, qr/ 206 /, 'charset - 206 partial reply');
373
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 like($t1, qr/Content-Type: multipart\/byteranges; boundary=\w+\x0d\x0a/,
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 'charset - content type');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 like($t1, qr/Content-Type: text\/html; charset=B(?!; charset)/,
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91 'charset - charset attribute');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92 like($t1, qr/X000XXXXXX/m, 'charset - content 0-9');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93 like($t1, qr/X001XXXXXX\x0d?$/m, 'charset - content 10-19');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 http_get('/t2.html');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96 $t1 = http_get_range('/t2.html', 'Range: bytes=0-9, 10-19');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
97 like($t1, qr/ 206 /, 'x-accel-charset - 206 partial reply');
373
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98 like($t1, qr/Content-Type: multipart\/byteranges; boundary=\w+\x0d\x0a/,
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99 'x-accel-charset - content type');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 like($t1, qr/Content-Type: text\/html; charset=A(?!; charset)/,
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101 'x-accel-charset - charset attribute');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102 like($t1, qr/Y000YYYYYY/m, 'x-accel-charset - content 0-9');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103 like($t1, qr/Y001YYYYYY\x0d?$/m, 'x-accel-charset - content 10-19');
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105 ###############################################################################
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 sub http_get_range {
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108 my ($url, $extra) = @_;
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 return http(<<EOF);
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 GET $url HTTP/1.1
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 Host: localhost
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 Connection: close
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 $extra
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115 EOF
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116 }
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117
1e6e216b06c2 Tests: range filter tests with charset.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 ###############################################################################