annotate auth_request.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 4ac60aad723e
children 907e89fba9c3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for auth request module.
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
323
d48de852157c Tests: auth_request assorted fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 322
diff changeset
12 use Test::More;
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
323
d48de852157c Tests: auth_request assorted fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 322
diff changeset
14 use Socket qw/ CRLF /;
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 BEGIN { use FindBin; chdir($FindBin::Bin); }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 use lib 'lib';
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 use Test::Nginx;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 ###############################################################################
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23 select STDERR; $| = 1;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 select STDOUT; $| = 1;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 my $t = Test::Nginx->new()
508
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
27 ->has(qw/http rewrite proxy cache fastcgi auth_basic auth_request/)
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
28 ->plan(19);
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 $t->write_file_expand('nginx.conf', <<'EOF');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 %%TEST_GLOBALS%%
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
323
d48de852157c Tests: auth_request assorted fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 322
diff changeset
34 daemon off;
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 events {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 http {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 %%TEST_GLOBALS_HTTP%%
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
508
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
42 proxy_cache_path %%TESTDIR%%/cache levels=1:2
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
43 keys_zone=NAME:1m;
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
44
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 server {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 listen 127.0.0.1:8080;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 server_name localhost;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 location / {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 return 444;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 location /open {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 auth_request /auth-open;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 location = /auth-open {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 return 204;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 location /open-static {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 auth_request /auth-open-static;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 location = /auth-open-static {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 # nothing, use static file
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 location /unauthorized {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 auth_request /auth-unauthorized;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 location = /auth-unauthorized {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 return 401;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 location /forbidden {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 auth_request /auth-forbidden;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 location = /auth-forbidden {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 return 403;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 location /error {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 auth_request /auth-error;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 location = /auth-error {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 return 404;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 location /off {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 auth_request off;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 location /proxy {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 auth_request /auth-proxy;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 location = /auth-proxy {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 proxy_pass http://127.0.0.1:8080/auth-basic;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 proxy_pass_request_body off;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 proxy_set_header Content-Length "";
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 location = /auth-basic {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 auth_basic "restricted";
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 auth_basic_user_file %%TESTDIR%%/htpasswd;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 location = /proxy-double {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 proxy_pass http://127.0.0.1:8080/auth-error;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 proxy_intercept_errors on;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108 error_page 404 = /proxy-double-fallback;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 client_body_buffer_size 4k;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 location = /proxy-double-fallback {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112 auth_request /auth-proxy-double;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 proxy_pass http://127.0.0.1:8080/auth-open;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 location = /auth-proxy-double {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 proxy_pass http://127.0.0.1:8080/auth-open;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 proxy_pass_request_body off;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118 proxy_set_header Content-Length "";
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120
508
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
121 location /proxy-cache {
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
122 auth_request /auth-proxy-cache;
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
123 }
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
124 location = /auth-proxy-cache {
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
125 proxy_pass http://127.0.0.1:8080/auth-basic;
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
126 proxy_pass_request_body off;
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
127 proxy_set_header Content-Length "";
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
128 proxy_cache NAME;
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
129 proxy_cache_valid 1m;
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
130 }
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
131
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
132 location /fastcgi {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
133 auth_request /auth-fastcgi;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
134 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
135 location = /auth-fastcgi {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
136 fastcgi_pass 127.0.0.1:8081;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
137 fastcgi_pass_request_body off;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
138 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
139 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
140 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
141
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
142 EOF
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
143
333
e7647a966212 Tests: use {PLAIN} passwords on win32 to unbreak auth_request.t.
Maxim Dounin <mdounin@mdounin.ru>
parents: 331
diff changeset
144 $t->write_file('htpasswd', 'user:{PLAIN}secret' . "\n");
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
145 $t->write_file('auth-basic', 'INVISIBLE');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
146 $t->write_file('auth-open-static', 'INVISIBLE');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
147 $t->run();
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
148
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
149 ###############################################################################
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
150
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
151 like(http_get('/open'), qr/ 404 /, 'auth open');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
152 like(http_get('/unauthorized'), qr/ 401 /, 'auth unauthorized');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
153 like(http_get('/forbidden'), qr/ 403 /, 'auth forbidden');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
154 like(http_get('/error'), qr/ 500 /, 'auth error');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
155 like(http_get('/off'), qr/ 404 /, 'auth off');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
156
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
157 like(http_post('/open'), qr/ 404 /, 'auth post open');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
158 like(http_post('/unauthorized'), qr/ 401 /, 'auth post unauthorized');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
159
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
160 like(http_get('/open-static'), qr/ 404 /, 'auth open static');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
161 unlike(http_get('/open-static'), qr/INVISIBLE/, 'auth static no content');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
162
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
163 like(http_get('/proxy'), qr/ 401 /, 'proxy auth unauthorized');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
164 like(http_get('/proxy'), qr/WWW-Authenticate: Basic realm="restricted"/,
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
165 'proxy auth has www-authenticate');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
166 like(http_get_auth('/proxy'), qr/ 404 /, 'proxy auth pass');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
167 unlike(http_get_auth('/proxy'), qr/INVISIBLE/, 'proxy auth no content');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
168
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
169 like(http_post('/proxy'), qr/ 401 /, 'proxy auth post');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
170
508
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
171 TODO: {
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
172 local $TODO = 'not yet' unless $t->has_version('1.7.3');
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
173
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
174 like(http_get_auth('/proxy-cache'), qr/ 404 /, 'proxy auth with cache');
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
175
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
176 }
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
177
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
178 like(http_get('/proxy-cache'), qr/ 404 /, 'proxy auth cached');
4ac60aad723e Tests: test for auth request with proxy cache.
Sergey Kandaurov <pluknet@nginx.com>
parents: 333
diff changeset
179
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
180 # Consider the following scenario:
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
181 #
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
182 # 1. proxy_pass reads request body, then goes to fallback via error_page
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
183 # 2. auth request uses proxy_pass, and upstream module closes request body file
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
184 # in ngx_http_upstream_send_response()
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
185 # 3. oops: fallback has no body
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
186 #
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
187 # To prevent this we always allocate fake request body for auth request.
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
188 #
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
189 # Note that this doesn't happen when using header_only as relevant code
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
190 # in ngx_http_upstream_send_response() isn't reached. It may be reached
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
191 # with proxy_cache or proxy_store, but they will shutdown client connection
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
192 # in case of header_only and hence do not work for us at all.
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
193
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
194 like(http_post_big('/proxy-double'), qr/ 204 /, 'proxy auth with body read');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
195
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
196 SKIP: {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
197 eval { require FCGI; };
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
198 skip 'FCGI not installed', 2 if $@;
331
241acee85fd1 Tests: skip FCGI use on win32.
Maxim Dounin <mdounin@mdounin.ru>
parents: 323
diff changeset
199 skip 'win32', 2 if $^O eq 'MSWin32';
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
200
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
201 $t->run_daemon(\&fastcgi_daemon);
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
202 $t->waitforsocket('127.0.0.1:8081');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
203
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
204 like(http_get('/fastcgi'), qr/ 404 /, 'fastcgi auth open');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
205 unlike(http_get('/fastcgi'), qr/INVISIBLE/, 'fastcgi auth no content');
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
206 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
207
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
208 ###############################################################################
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
209
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
210 sub http_get_auth {
323
d48de852157c Tests: auth_request assorted fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 322
diff changeset
211 my ($url, %extra) = @_;
d48de852157c Tests: auth_request assorted fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 322
diff changeset
212 return http(<<EOF, %extra);
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
213 GET $url HTTP/1.0
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
214 Host: localhost
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
215 Authorization: Basic dXNlcjpzZWNyZXQ=
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
216
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
217 EOF
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
218 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
219
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
220 sub http_post {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
221 my ($url, %extra) = @_;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
222
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
223 my $p = "POST $url HTTP/1.0" . CRLF .
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
224 "Host: localhost" . CRLF .
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
225 "Content-Length: 10" . CRLF .
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
226 CRLF .
323
d48de852157c Tests: auth_request assorted fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 322
diff changeset
227 "1234567890";
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
228
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
229 return http($p, %extra);
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
230 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
231
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
232 sub http_post_big {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
233 my ($url, %extra) = @_;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
234
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
235 my $p = "POST $url HTTP/1.0" . CRLF .
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
236 "Host: localhost" . CRLF .
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
237 "Content-Length: 10240" . CRLF .
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
238 CRLF .
323
d48de852157c Tests: auth_request assorted fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 322
diff changeset
239 ("1234567890" x 1024);
322
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
240
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
241 return http($p, %extra);
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
242 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
243
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
244 ###############################################################################
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
245
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
246 sub fastcgi_daemon {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
247 my $socket = FCGI::OpenSocket('127.0.0.1:8081', 5);
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
248 my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV,
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
249 $socket);
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
250
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
251 while ($request->Accept() >= 0) {
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
252 print <<EOF;
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
253 Content-Type: text/html
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
254
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
255 INVISIBLE
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
256 EOF
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
257 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
258
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
259 FCGI::CloseSocket($socket);
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
260 }
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
261
67c348ba1768 Tests: auth request tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
262 ###############################################################################