Apache-AuthTicket
view release on metacpan or search on metacpan
#!perl
#
# test AuthTicket authentication
use strict;
use warnings FATAL => 'all';
use lib qw(t/lib);
use Apache::Test '-withtestmore';
use Apache::TestRequest qw(GET POST);
if (not have_module('DBD::SQLite')) {
plan skip_all => 'DBD::SQLite is not installed';
}
elsif (not have_module('LWP::UserAgent')) {
plan skip_all => 'LWP::UserAgent is not installed';
}
else {
plan tests => 34;
}
# must match value in SQLite DB
my $Secret = 'mvkj39vek@#$R*njdea9@#';
my $CookieFormat = qr/[0-9a-f]{32}\-\-[A-Za-z0-9+\/]+/;
use_ok('Apache::AuthTicket::Base');
Apache::TestRequest::user_agent(
cookie_jar => {},
reset => 1,
requests_redirectable => 0);
# get login form
my $r = GET '/protected/index.html';
isa_ok $r, 'HTTP::Response';
is $r->code, 403, 'got 403 response';
like $r->content, qr/credential_0/, 'content contains credential_0';
like $r->content, qr/credential_0/, 'content contains credential_1';
# login
$r = POST '/login', [
destination => '/protected/index.html',
credential_0 => 'programmer',
credential_1 => 'secret' ];
isa_ok $r, 'HTTP::Response';
is $r->code, 302, 'got 302 response';
is $r->header('Location'), '/protected/index.html', 'Location header';
like $r->header('Set-Cookie'), qr/$CookieFormat/, 'response sets cookie';
# get the protected page.
$r = GET '/protected/index.html';
isa_ok $r, 'HTTP::Response';
is $r->code, 200, 'got 200 response';
like $r->content, qr/congratulations, you got the protected page/;
# logout
$r = GET '/protected/logout';
isa_ok $r, 'HTTP::Response';
is $r->code, 302, 'got 302 response from logout';
like $r->header('Set-Cookie'), qr/::AuthTicket_Protected=;\s+/, 'Cookie was cleared';
is $r->header('Location'), '/protected/index.html', 'Logout sets location header';
# make sure we really logged out.
$r = GET '/protected/index.html';
isa_ok $r, 'HTTP::Response';
is $r->code, 403, 'got 403 response';
( run in 0.653 second using v1.01-cache-2.11-cpan-39bf76dae61 )