Annotation of embedaddon/lighttpd/tests/mod-auth.t, revision 1.1.1.1
1.1 misho 1: #!/usr/bin/env perl
2: BEGIN {
3: # add current source dir to the include-path
4: # we need this for make distcheck
5: (my $srcdir = $0) =~ s,/[^/]+$,/,;
6: unshift @INC, $srcdir;
7: }
8:
9: use strict;
10: use IO::Socket;
11: use Test::More tests => 17;
12: use LightyTest;
13:
14: my $tf = LightyTest->new();
15: my $t;
16:
17: ok($tf->start_proc == 0, "Starting lighttpd") or die();
18:
19: $t->{REQUEST} = ( <<EOF
20: GET /server-status HTTP/1.0
21: EOF
22: );
23: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 401 } ];
24: ok($tf->handle_http($t) == 0, 'Missing Auth-token');
25:
26: $t->{REQUEST} = ( <<EOF
27: GET /server-status HTTP/1.0
28: Authorization: Basic \x80mFuOmphb
29: EOF
30: );
31: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 401 } ];
32: ok($tf->handle_http($t) == 0, 'Basic-Auth: Invalid base64 Auth-token');
33:
34: $t->{REQUEST} = ( <<EOF
35: GET /server-status HTTP/1.0
36: Authorization: Basic amFuOmphb
37: EOF
38: );
39: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 401 } ];
40: ok($tf->handle_http($t) == 0, 'Basic-Auth: Wrong Auth-token');
41:
42: $t->{REQUEST} = ( <<EOF
43: GET /server-config HTTP/1.0
44: Authorization: Basic amFuOmphbg==
45: EOF
46: );
47: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
48: ok($tf->handle_http($t) == 0, 'Basic-Auth: Valid Auth-token - plain');
49:
50: $t->{REQUEST} = ( <<EOF
51: GET /server-config HTTP/1.0
52: Host: auth-htpasswd.example.org
53: Authorization: Basic ZGVzOmRlcw==
54: EOF
55: );
56: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
57: ok($tf->handle_http($t) == 0, 'Basic-Auth: Valid Auth-token - htpasswd (des)');
58:
59: $t->{REQUEST} = ( <<EOF
60: GET /server-config HTTP/1.0
61: Host: auth-htpasswd.example.org
62: Authorization: basic ZGVzOmRlcw==
63: EOF
64: );
65: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
66: ok($tf->handle_http($t) == 0, 'Basic-Auth: Valid Auth-token - htpasswd (des) (lowercase)');
67:
68: $t->{REQUEST} = ( <<EOF
69: GET /server-config HTTP/1.0
70: Host: auth-htpasswd.example.org
71: Authorization: Basic c2hhOnNoYQ==
72: EOF
73: );
74: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
75: ok($tf->handle_http($t) == 0, 'Basic-Auth: Valid Auth-token - htpasswd (sha)');
76:
77: $t->{REQUEST} = ( <<EOF
78: GET /server-config HTTP/1.0
79: Host: auth-htpasswd.example.org
80: Authorization: Basic c2hhOnNoYg==
81: EOF
82: );
83: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 401 } ];
84: ok($tf->handle_http($t) == 0, 'Basic-Auth: Valid Auth-token - htpasswd (sha, wrong password)');
85:
86:
87: SKIP: {
88: skip "no md5 for crypt under cygwin", 1 if $^O eq 'cygwin';
89: $t->{REQUEST} = ( <<EOF
90: GET /server-config HTTP/1.0
91: Host: auth-htpasswd.example.org
92: Authorization: Basic bWQ1Om1kNQ==
93: EOF
94: );
95: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
96: ok($tf->handle_http($t) == 0, 'Basic-Auth: Valid Auth-token - htpasswd (md5)');
97: }
98:
99: $t->{REQUEST} = ( <<EOF
100: GET /server-config HTTP/1.0
101: Authorization: Basic bWQ1Om1kNA==
102: EOF
103: );
104: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 401 } ];
105: ok($tf->handle_http($t) == 0, 'Basic-Auth: Valid Auth-token');
106:
107: ## this should not crash
108: $t->{REQUEST} = ( <<EOF
109: GET /server-status HTTP/1.0
110: User-Agent: Wget/1.9.1
111: Authorization: Digest username="jan", realm="jan", nonce="9a5428ccc05b086a08d918e73b01fc6f",
112: uri="/server-status", response="ea5f7d9a30b8b762f9610ccb87dea74f"
113: EOF
114: );
115: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 401 } ];
116: ok($tf->handle_http($t) == 0, 'Digest-Auth: missing qop, no crash');
117:
118: ## this should not crash
119: $t->{REQUEST} = ( <<EOF
120: GET /server-status HTTP/1.0
121: User-Agent: Wget/1.9.1
122: Authorization: Digest username="jan", realm="jan",
123: nonce="b1d12348b4620437c43dd61c50ae4639",
124: uri="/MJ-BONG.xm.mpc", qop=auth, noncecount=00000001",
125: cnonce="036FCA5B86F7E7C4965C7F9B8FE714B7",
126: response="29B32C2953C763C6D033C8A49983B87E"
127: EOF
128: );
129: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 400 } ];
130: ok($tf->handle_http($t) == 0, 'Digest-Auth: missing nc (noncecount instead), no crash');
131:
132: $t->{REQUEST} = ( <<EOF
133: GET /server-status HTTP/1.0
134: Authorization: Basic =
135: EOF
136: );
137: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 401 } ];
138: ok($tf->handle_http($t) == 0, 'Basic-Auth: Invalid Base64');
139:
140:
141: $t->{REQUEST} = ( <<EOF
142: GET /server-status HTTP/1.0
143: User-Agent: Wget/1.9.1
144: Authorization: Digest username="jan", realm="jan",
145: nonce="b1d12348b4620437c43dd61c50ae4639", algorithm="md5-sess",
146: uri="/MJ-BONG.xm.mpc", qop=auth, noncecount=00000001",
147: cnonce="036FCA5B86F7E7C4965C7F9B8FE714B7",
148: nc="asd",
149: response="29B32C2953C763C6D033C8A49983B87E"
150: EOF
151: );
152: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 401 } ];
153: ok($tf->handle_http($t) == 0, 'Digest-Auth: md5-sess + missing cnonce');
154:
155: $t->{REQUEST} = ( <<EOF
156: GET /server-status HTTP/1.0
157: User-Agent: Wget/1.9.1
158: Authorization: Digest username="jan", realm="jan",
159: nonce="b1d12348b4620437c43dd61c50ae4639", algorithm="md5-sess",
160: uri="/MJ-BONG.xm.mpc", qop=auth, noncecount=00000001",
161: cnonce="036FCA5B86F7E7C4965C7F9B8FE714B7",
162: nc="asd",
163: response="29B32C2953C763C6D033C8A49983B87E"
164: EOF
165: );
166: $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 401 } ];
167: ok($tf->handle_http($t) == 0, 'Digest-Auth: trailing WS');
168:
169:
170:
171: ok($tf->stop_proc == 0, "Stopping lighttpd");
172:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>