annotate auth_request_satisfy.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 b86c05516e65
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
349
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for auth request module with satisfy directive.
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 use Socket qw/ CRLF /;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 BEGIN { use FindBin; chdir($FindBin::Bin); }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 use lib 'lib';
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 use Test::Nginx;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 ###############################################################################
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23 select STDERR; $| = 1;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 select STDOUT; $| = 1;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 my $t = Test::Nginx->new()
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 ->has(qw/http rewrite access auth_basic auth_request/)
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 ->plan(18);
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 $t->write_file_expand('nginx.conf', <<'EOF');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 %%TEST_GLOBALS%%
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 daemon off;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 events {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 http {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 %%TEST_GLOBALS_HTTP%%
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 server {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 listen 127.0.0.1:8080;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 server_name localhost;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 location / {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 return 444;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 location /all/allow {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 satisfy all;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 allow all;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 auth_request /auth;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 location /all/deny {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 satisfy all;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 deny all;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 auth_request /auth;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 location /all/basic {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 satisfy all;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 auth_basic "restricted";
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 auth_basic_user_file %%TESTDIR%%/htpasswd;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 auth_request /auth;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 location /any/allow {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 satisfy any;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 allow all;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 auth_request /auth;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 location /any/deny {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 satisfy any;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 deny all;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 auth_request /auth;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 location /any/basic {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 satisfy any;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 auth_basic "restricted";
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 auth_basic_user_file %%TESTDIR%%/htpasswd;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 auth_request /auth;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 location = /auth {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 if ($request_uri ~ "open$") {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 return 204;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 if ($request_uri ~ "unauthorized$") {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 return 401;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 if ($request_uri ~ "forbidden$") {
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 return 403;
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 }
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 EOF
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 $t->write_file('htpasswd', 'user:{PLAIN}secret' . "\n");
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 $t->run();
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 ###############################################################################
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 # satisfy all - first 401/403 wins
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 like(http_get('/all/allow+open'), qr/ 404 /, 'all allow+open');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112 like(http_get('/all/allow+unauthorized'), qr/ 401 /, 'all allow+unauthorized');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 like(http_get('/all/allow+forbidden'), qr/ 403 /, 'all allow+forbidden');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 like(http_get('/all/deny+open'), qr/ 403 /, 'all deny+open');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 like(http_get('/all/deny+unauthorized'), qr/ 403 /, 'all deny+unauthorized');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 like(http_get('/all/deny+forbidden'), qr/ 403 /, 'all deny+forbidden');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119 like(http_get('/all/basic+open'), qr/ 401 /, 'all basic+open');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120 like(http_get('/all/basic+unauthorized'), qr/ 401 /, 'all basic+unauthorized');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121 like(http_get('/all/basic+forbidden'), qr/ 401 /, 'all basic+forbidden');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
122
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
123 # satisfy any - first ok wins
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
124 # additionally, 403 shouldn't override 401 status
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
125
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
126 like(http_get('/any/allow+open'), qr/ 404 /, 'any allow+open');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
127 like(http_get('/any/allow+unauthorized'), qr/ 404 /, 'any allow+unauthorized');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
128 like(http_get('/any/allow+forbidden'), qr/ 404 /, 'any allow+forbidden');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
129
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
130 like(http_get('/any/deny+open'), qr/ 404 /, 'any deny+open');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
131 like(http_get('/any/deny+unauthorized'), qr/ 401 /, 'any deny+unauthorized');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
132 like(http_get('/any/deny+forbidden'), qr/ 403 /, 'any deny+forbidden');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
133
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
134 like(http_get('/any/basic+open'), qr/ 404 /, 'any basic+open');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
135 like(http_get('/any/basic+unauthorized'), qr/ 401 /, 'any basic+unauthorized');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
136 like(http_get('/any/basic+forbidden'), qr/ 401 /, 'any basic+forbidden');
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
137
918dc7aa50f1 Tests: tests for auth_request with satisfy.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
138 ###############################################################################