BEGIN{
use_ok(
"Net::HTTPServer"
);
use_ok(
"Net::HTTPServer::Session"
);
use_ok(
"Net::HTTPServer::Request"
);
}
my
$server
= new Net::HTTPServer(
sessions
=>1,
datadir
=>
"t/sessions"
,
log
=>
"t/access.log"
);
ok(
defined
(
$server
),
"new()"
);
isa_ok(
$server
,
"Net::HTTPServer"
);
my
$request
= new Net::HTTPServer::Request();
ok(
defined
(
$request
),
"new()"
);
isa_ok(
$request
,
"Net::HTTPServer::Request"
);
is_deeply(
$request
->Cookie(), {},
"No cookies"
);
is_deeply(
$request
->Env(), {},
"No environment"
);
is_deeply(
$request
->Header(), {},
"No headers"
);
is(
$request
->Method(),
undef
,
"No method"
);
is(
$request
->Path(),
undef
,
"No path"
);
is(
$request
->Request(),
undef
,
"No request"
);
is(
$request
->URL(),
undef
,
"No URL"
);
my
$file1
=
&readFile
(
"t/requests/req1"
);
my
$request1
=
new Net::HTTPServer::Request(
request
=>
$file1
,
server
=>
$server
,
);
ok(
defined
(
$request1
),
"new()"
);
isa_ok(
$request1
,
"Net::HTTPServer::Request"
);
is_deeply(
$request1
->Cookie(), {},
"No cookies"
);
is_deeply(
$request1
->Env(), {},
"No environment"
);
is_deeply(
$request1
->Header(),
{
"host"
=>
"localhost:8001"
,
"user-agent"
=>
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040624 Debian/1.7-2"
,
"accept"
=>
"text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
,
"accept-encoding"
=>
"gzip,deflate"
,
"accept-charset"
=>
"ISO-8859-1,utf-8;q=0.7,*;q=0.7"
,
"keep-alive"
=>
"300"
,
"connection"
=>
"keep-alive"
,
},
"Some headers"
);
is(
$request1
->Method(),
"GET"
,
"method == GET"
);
is(
$request1
->Path(),
"/"
,
"path == /"
);
is(
$request1
->Request(),
$file1
,
"Requests match"
);
is(
$request1
->URL(),
"/"
,
"URL == /"
);
is(
$request1
->Header(
"test"
),
undef
,
"Header(test) = undef"
);
is(
$request1
->Header(
"Host"
),
"localhost:8001"
,
"Header(Host) = localhost:8001"
);
is(
$request1
->Header(
"host"
),
"localhost:8001"
,
"Header(host) = localhost:8001"
);
is(
$request1
->Header(
"HOST"
),
"localhost:8001"
,
"Header(HOST) = localhost:8001"
);
my
$file2
=
&readFile
(
"t/requests/req2"
);
my
$request2
=
new Net::HTTPServer::Request(
request
=>
$file2
,
server
=>
$server
,
);
ok(
defined
(
$request2
),
"new()"
);
isa_ok(
$request2
,
"Net::HTTPServer::Request"
);
is_deeply(
$request2
->Cookie(), {},
"No cookies"
);
is_deeply(
$request2
->Env(), {},
"No environment"
);
is_deeply(
$request2
->Header(),
{
"host"
=>
"localhost:8001"
,
"user-agent"
=>
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040624 Debian/1.7-2"
,
"accept"
=>
"image/png,*/*;q=0.5"
,
"accept-encoding"
=>
"gzip,deflate"
,
"accept-charset"
=>
"ISO-8859-1,utf-8;q=0.7,*;q=0.7"
,
"keep-alive"
=>
"300"
,
"connection"
=>
"keep-alive"
,
"authorization"
=>
'Digest username="foo", realm="Test", nonce="MTA4ODcxNzc1Njo5YjNjMDA2NmYzZjVjMGU5OGEwOTg0YTk2YzBiZmFkMA==", uri="/perl-logo.jpg", algorithm=MD5, response="3f0d34d8e103b2a57b3f86a74cbea3cc", qop=auth, nc=00000001, cnonce="bd25b487957ed9a2"'
,
},
"Some headers"
);
is(
$request2
->Method(),
"GET"
,
"method == GET"
);
is(
$request2
->Path(),
"/perl-logo.jpg"
,
"path == /perl-logo.jpg"
);
is(
$request2
->Request(),
$file2
,
"Requests match"
);
is(
$request2
->URL(),
"/perl-logo.jpg"
,
"URL == /perl-logo.jpg"
);
my
$file3
=
&readFile
(
"t/requests/req3"
);
my
$request3
=
new Net::HTTPServer::Request(
request
=>
$file3
,
server
=>
$server
,
);
ok(
defined
(
$request3
),
"new()"
);
isa_ok(
$request3
,
"Net::HTTPServer::Request"
);
is_deeply(
$request3
->Cookie(),
{
"NETHTTPSERVERSESSION"
=>
"ea209023f1f3908dd9a39c256be04e55"
,
},
"One cookie"
);
is_deeply(
$request3
->Env(), {},
"No environment"
);
is_deeply(
$request3
->Header(),
{
"host"
=>
"localhost:8001"
,
"user-agent"
=>
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040624 Debian/1.7-2"
,
"accept"
=>
"text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
,
"accept-encoding"
=>
"gzip,deflate"
,
"accept-charset"
=>
"ISO-8859-1,utf-8;q=0.7,*;q=0.7"
,
"keep-alive"
=>
"300"
,
"connection"
=>
"keep-alive"
,
"authorization"
=>
'Digest username="foo", realm="Test", nonce="MTA4ODcxNzg2Mzo5YmE3MWZjN2EzOGIzOWM5YWJhZjFiM2RkNjkyNTU4MQ==", uri="/session", algorithm=MD5, response="baa2e104080fb5964e0dfcc4cb2280ff", qop=auth, nc=00000002, cnonce="29d500603edc385b"'
,
"cache-control"
=>
"max-age=0"
,
"cookie"
=>
"NETHTTPSERVERSESSION=ea209023f1f3908dd9a39c256be04e55"
,
},
"Some headers"
);
is(
$request3
->Method(),
"GET"
,
"method == GET"
);
is(
$request3
->Path(),
"/session"
,
"path == /session"
);
is(
$request3
->Request(),
$file3
,
"Requests match"
);
is(
$request3
->URL(),
"/session"
,
"URL == /session"
);
is(
$request3
->Cookie(
"test"
),
undef
,
"cookie(test) == undef"
);
is(
$request3
->Cookie(
"NETHTTPSERVERSESSION"
),
"ea209023f1f3908dd9a39c256be04e55"
,
"cookie(NETHTTPSERVERSESSION) == ea209023f1f3908dd9a39c256be04e55"
);
File::Copy::cp(
"t/req_sessions/ea209023f1f3908dd9a39c256be04e55"
,
"t/sessions/ea209023f1f3908dd9a39c256be04e55"
);
my
$session
=
$request3
->Session();
ok(
defined
(
$session
),
"Session()"
);
isa_ok(
$session
,
"Net::HTTPServer::Session"
);
ok( !
$session
->Exists(
"test"
),
"test does not exist"
);
ok(
$session
->Exists(
"foo"
),
"foo exists"
);
ok(
$session
->Exists(
"bar"
),
"bar exists"
);
is(
$session
->Get(
"foo"
),
"bar"
,
"foo = bar"
);
is_deeply(
$session
->Get(
"bar"
), [
"1"
,
"2"
,
"b"
],
"bar = [1,2,b]"
);
my
$file4
=
&readFile
(
"t/requests/req4"
);
my
$request4
=
new Net::HTTPServer::Request(
request
=>
$file4
,
server
=>
$server
,
);
ok(
defined
(
$request4
),
"new()"
);
isa_ok(
$request4
,
"Net::HTTPServer::Request"
);
is_deeply(
$request4
->Cookie(),
{
"NETHTTPSERVERSESSION"
=>
"ea209023f1f3908dd9a39c256be04e55"
,
},
"One cookie"
);
is_deeply(
$request4
->Env(),
{
"file1"
=>
"/home/reatmon/devel/diff_test/test"
,
"file2"
=>
"/home/reatmon/devel/diff_test/test2"
,
},
"Two vars"
);
is_deeply(
$request4
->Header(),
{
"host"
=>
"localhost:8001"
,
"user-agent"
=>
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040624 Debian/1.7-2"
,
"accept"
=>
"text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
,
"accept-encoding"
=>
"gzip,deflate"
,
"accept-charset"
=>
"ISO-8859-1,utf-8;q=0.7,*;q=0.7"
,
"keep-alive"
=>
"300"
,
"connection"
=>
"keep-alive"
,
"authorization"
=>
'Digest username="foo", realm="Test", nonce="MTA4ODcxODkxMzo5YmE3MWZjN2EzOGIzOWM5YWJhZjFiM2RkNjkyNTU4MQ==", uri="/foo/bar.pl", algorithm=MD5, response="ecf1ef3fcc82d9cab6849fa986118311", qop=auth, nc=00000003, cnonce="2a1b2b1e0723ba9e"'
,
"cookie"
=>
"NETHTTPSERVERSESSION=ea209023f1f3908dd9a39c256be04e55"
,
"content-length"
=>
"102"
,
"content-type"
=>
"application/x-www-form-urlencoded"
,
},
"Some headers"
);
is(
$request4
->Method(),
"POST"
,
"method == POST"
);
is(
$request4
->Path(),
"/foo/bar.pl"
,
"path == /foo/bar.pl"
);
is(
$request4
->Request(),
$file4
,
"Requests match"
);
is(
$request4
->URL(),
"/foo/bar.pl"
,
"URL == /foo/bar.pl"
);
is(
$request4
->Env(
"test"
),
undef
,
"env(test) == undef"
);
is(
$request4
->Env(
"file1"
),
"/home/reatmon/devel/diff_test/test"
,
"env(file1) == /home/reatmon/devel/diff_test/test"
);
is(
$request4
->Env(
"file2"
),
"/home/reatmon/devel/diff_test/test2"
,
"env(file2) == /home/reatmon/devel/diff_test/test2"
);
my
$file5
=
&readFile
(
"t/requests/req5"
);
my
$request5
=
new Net::HTTPServer::Request(
request
=>
$file5
,
server
=>
$server
,
);
ok(
defined
(
$request5
),
"new()"
);
isa_ok(
$request5
,
"Net::HTTPServer::Request"
);
is_deeply(
$request5
->Cookie(),
{
"NETHTTPSERVERSESSION"
=>
"ea209023f1f3908dd9a39c256be04e55"
,
},
"One cookie"
);
is_deeply(
$request5
->Env(),
{
"test1"
=>
"foo"
,
"test2"
=>
"bar"
,
},
"Two vars"
);
is_deeply(
$request5
->Header(),
{
"host"
=>
"localhost:8001"
,
"user-agent"
=>
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040624 Debian/1.7-2"
,
"accept"
=>
"text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
,
"accept-encoding"
=>
"gzip,deflate"
,
"accept-charset"
=>
"ISO-8859-1,utf-8;q=0.7,*;q=0.7"
,
"keep-alive"
=>
"300"
,
"connection"
=>
"keep-alive"
,
"authorization"
=>
'Digest username="foo", realm="Test", nonce="MTA4ODcxODk1ODo5YmE3MWZjN2EzOGIzOWM5YWJhZjFiM2RkNjkyNTU4MQ==", uri="/env.pl?test1=foo&test2=bar", algorithm=MD5, response="ed962b59fa90def8432cf04916539a2a", qop=auth, nc=00000001, cnonce="1e0d10d8225dc588"'
,
"cookie"
=>
"NETHTTPSERVERSESSION=ea209023f1f3908dd9a39c256be04e55"
,
},
"Some headers"
);
is(
$request5
->Method(),
"GET"
,
"method == GET"
);
is(
$request5
->Path(),
"/env.pl"
,
"path == /env.pl"
);
is(
$request5
->Request(),
$file5
,
"Requests match"
);
is(
$request5
->URL(),
"/env.pl?test1=foo&test2=bar"
,
"URL == /env.pl?test1=foo&test2=bar"
);
is(
$request5
->Env(
"test"
),
undef
,
"env(test) == undef"
);
is(
$request5
->Env(
"test1"
),
"foo"
,
"env(test1) == foo"
);
is(
$request5
->Env(
"test2"
),
"bar"
,
"env(test2) == bar"
);
sub
readFile
{
my
$file
=
shift
;
open
(FILE,
$file
);
my
$data
=
join
(
""
,<FILE>);
close
(FILE);
return
$data
;
}