annotate userid.t @ 605:a77f19282f63

Tests: switched to using headers to test variables in userid.t. Tests might behave incorrectly due to the delay in writing to log. Made tests stricter for different endianness. While here, improved style.
author Andrey Zelenkov <zelenkov@nginx.com>
date Thu, 11 Jun 2015 20:56:19 +0300
parents b96c4739ca85
children 0597ca82c26a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
2
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
3 # (C) Andrey Zelenkov
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
5
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
6 # Tests for userid filter module.
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
7
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
8 ###############################################################################
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
9
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
10 use warnings;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
11 use strict;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
12
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
13 use Test::More;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
14
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
15 use Config;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
16 use MIME::Base64;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
17 use Time::Local;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
18
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
19 BEGIN { use FindBin; chdir($FindBin::Bin); }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
20
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
21 use lib 'lib';
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
22 use Test::Nginx;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
23
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
24 ###############################################################################
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
25
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
26 select STDERR; $| = 1;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
27 select STDOUT; $| = 1;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
28
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
29 my $t = Test::Nginx->new()->has(qw/http userid map/)->plan(33);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
30
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
31 $t->write_file_expand('nginx.conf', <<'EOF');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
32
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
33 %%TEST_GLOBALS%%
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
34
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
35 daemon off;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
36
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
37 events {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
38 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
39
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
40 http {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
41 %%TEST_GLOBALS_HTTP%%
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
42
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
43 map $args $uid_reset {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
44 default 0;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
45 value 1;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
46 log log;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
47 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
48
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
49 server {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
50 listen 127.0.0.1:8080;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
51 server_name localhost;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
52
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
53 add_header X-Got $uid_got;
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
54 add_header X-Reset $uid_reset;
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
55 add_header X-Set $uid_set;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
56 userid on;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
57
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
58 location / {
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
59 error_log %%TESTDIR%%/error_reset.log info;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
60 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
61
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
62 location /name {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
63 userid_name test;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
64 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
65
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
66 location /path {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
67 userid_path /0123456789;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
68
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
69 location /path/r {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
70 userid_path /9876543210;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
71 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
72 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
73
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
74 location /domain {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
75 userid_domain test.domain;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
76 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
77
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
78 location /mark_off {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
79 userid_mark off;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
80 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
81 location /mark_eq {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
82 userid_mark =;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
83 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
84 location /mark_let {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
85 userid_mark t;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
86 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
87 location /mark_num {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
88 userid_mark 9;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
89 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
90
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
91 location /expires_time {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
92 add_header X-Msec $msec;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
93 userid_expires 100;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
94 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
95 location /expires_max {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
96 userid_expires max;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
97
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
98 location /expires_max/off {
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
99 userid_expires off;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
100 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
101 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
102 location /expires_off {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
103 userid_expires off;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
104 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
105
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
106 location /p3p {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
107 userid_p3p policyref="/w3c/p3p.xml";
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
108 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
109
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
110 location /service {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
111 userid_service 65534;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
112 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
113
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
114 location /cv1 {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
115 userid v1;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
116 userid_mark t;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
117 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
118
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
119 location /clog {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
120 userid log;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
121 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
122
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
123 location /coff {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
124 userid off;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
125 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
126 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
127 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
128
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
129 EOF
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
130
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
131 $t->write_file('index.html', '');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
132 $t->write_file('expires_time', '');
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
133 $t->write_file('service', '');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
134 $t->write_file('cv1', '');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
135 $t->write_file('clog', '');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
136 $t->write_file('coff', '');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
137 $t->run();
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
138
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
139 ###############################################################################
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
140
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
141 # userid
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
142
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
143 like(http_get('/'), qr/Set-Cookie:/, 'cookie on');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
144 like(http_get('/cv1'), qr/Set-Cookie:/, 'cookie v1');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
145 unlike(http_get('/clog'), qr/Set-Cookie:/, 'cookie log');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
146 unlike(http_get('/coff'), qr/Set-Cookie:/, 'cookie off');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
147
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
148 # default
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
149
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
150 my %cookie = get_cookie('/');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
151 isnt($cookie{'uid'}, undef, 'name default');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
152 is($cookie{'path'}, '/', 'path default');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
153 is($cookie{'domain'}, undef, 'domain default');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
154 is($cookie{'expires'}, undef, 'expires default');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
155 like($cookie{'uid'}, '/\w+={0,2}$/', 'mark default');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
156 unlike(http_get('/'), qr/P3P/, 'p3p default');
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
157 like(http_get('/'), qr/X-Reset: 0/, 'uid reset variable default');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
158
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
159 # name, path, domain and p3p
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
160
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
161 isnt(get_cookie('/name', 'test'), undef, 'name');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
162 is(get_cookie('/path', 'path'), '/0123456789', 'path');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
163 is(get_cookie('/domain', 'domain'), 'test.domain', 'domain');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
164 like(http_get('/p3p'), qr!P3P: policyref="/w3c/p3p.xml"!, 'p3p');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
165
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
166 # mark
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
167
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
168 like(get_cookie('/mark_off', 'uid'), '/\w+={0,2}$/', 'mark off');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
169 like(get_cookie('/mark_eq', 'uid'), '/==$/', 'mark equal');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
170 like(get_cookie('/mark_let', 'uid'), '/t=$/', 'mark letter');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
171 like(get_cookie('/mark_num', 'uid'), '/9=$/', 'mark number');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
172
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
173 # expires
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
174
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
175 my $r = http_get('/expires_time');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
176 my ($t1) = $r =~ /X-Msec: (\d+)/;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
177 is(expires2timegm(cookie($r, 'expires')), $t1 + 100, 'expires time');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
178 is(get_cookie('/expires_max', 'expires'), 'Thu, 31-Dec-37 23:55:55 GMT',
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
179 'expires max');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
180 is(get_cookie('/expires_off', 'expires'), undef, 'expires off');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
181
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
182 # redefinition
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
183
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
184 unlike(http_get('/expires_max/off'), qr/expires/, 'redefine expires');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
185 like(http_get('/path/r'), qr!/9876543210!, 'redefine path');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
186
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
187 # requests
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
188
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
189 $r = http_get('/');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
190 my ($uid) = uid_set($r);
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
191 isnt($uid, undef, 'uid set variable');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
192
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
193 $r = send_uid('/', cookie($r, 'uid'));
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
194 is(uid_got($r), $uid, 'uid got variable');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
195 unlike($r, qr/Set-Cookie:/, 'same path request');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
196
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
197 $r = send_uid('/coff', $uid);
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
198 unlike($r, qr/Set-Cookie:/, 'other path request');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
199
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
200 $r = send_uid('/?value', $uid);
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
201 like($r, qr/Set-Cookie:/, 'uid reset variable value');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
202
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
203 # service
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
204
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
205 is(substr(uid_set(http_get('/cv1')), 0, 8), '00000000', 'service default v1');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
206
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
207 my $bigendian = $Config{byteorder} eq '12345678' ? 0 : 1;
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
208 my $addr = $bigendian ? "7F000001" : "0100007F";
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
209 is(substr(uid_set(http_get('/')), 0, 8), $addr, 'service default v2');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
210
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
211 $addr = $bigendian ? "0000FFFE" : "FEFF0000";
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
212 is(substr(uid_set(http_get('/service')), 0, 8), $addr, 'service custom');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
213
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
214 # reset log
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
215
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
216 send_uid('/?log', cookie($r, 'uid'));
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
217
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
218 $t->stop();
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
219
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
220 like($t->read_file('error_reset.log'),
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
221 '/userid cookie "uid=\w+" was reset/m', 'uid reset variable log');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
222
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
223 ###############################################################################
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
224
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
225 sub cookie {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
226 my ($r, $key) = @_;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
227 my %cookie;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
228
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
229 $r =~ /(Set-Cookie:[^\x0d]*).*\x0d\x0a?\x0d/ms;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
230 if ($1) {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
231 %cookie = $1 =~ /(\w+)=([^;]+)/g;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
232 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
233
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
234 return $cookie{$key} if defined $key;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
235 return %cookie;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
236 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
237
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
238 sub get_cookie {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
239 my ($url, $key) = @_;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
240 return cookie(http_get($url), $key);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
241 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
242
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
243 sub expires2timegm {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
244 my ($e) = @_;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
245 my %months = (Jan => 0, Feb => 1, Mar => 2, Apr => 3, May =>4, Jun => 5,
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
246 Jul => 6, Aug => 7, Sep => 8, Oct => 9, Nov => 10, Dec => 11);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
247
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
248 my ($w, $date, $time) = split(" ", $e);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
249 my ($day, $month, $year) = split("-", $date);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
250 my ($hour, $min, $sec) = split(":", $time);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
251
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
252 return timegm($sec, $min, $hour, $day, $months{$month}, $year);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
253 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
254
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
255 sub uid_set {
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
256 my ($r) = @_;
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
257 my ($uid) = $r =~ /X-Set: uid=(.*)\n/m;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
258 return $uid;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
259 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
260
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
261 sub uid_got {
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
262 my ($r) = @_;
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
263 my ($uid) = $r =~ /X-Got: uid=(.*)\n/m;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
264 return $uid;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
265 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
266
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
267 sub send_uid {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
268 my ($url, $uid) = @_;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
269 return http(<<EOF);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
270 GET $url HTTP/1.0
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
271 Host: localhost
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
272 Cookie: uid=$uid
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
273
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
274 EOF
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
275 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
276
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
277 ###############################################################################