Tag old version. Update trunk to new version with additional tests
[catagits/Catalyst-Authentication-Credential-HTTP-Proxy.git] / t / basic.t
CommitLineData
19c14a20 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More 'no_plan';
7use Test::MockObject::Extends;
8use Test::MockObject;
9use Test::Exception;
52262613 10use Scalar::Util qw/blessed/;
19c14a20 11
12use Catalyst::Plugin::Authentication::User::Hash;
13
14my $m;
15BEGIN { use_ok( $m = "Catalyst::Plugin::Authentication::Credential::TypeKey" ) }
16
52262613 17# from 01-verify.t in Authen-TypeKey-0.04
18my %user = (
209fb56b 19 ts => '1091163746',
52262613 20 email => 'bentwo@stupidfool.org',
21 name => 'Melody',
22 nick => 'foobar baz',
23);
24
19c14a20 25my $req = Test::MockObject->new;
26$req->set_always( params => {} );
27$req->mock( param => sub { $_[0]->params->{ $_[1] } } );
28
29my $tk = Test::MockObject->new;
209fb56b 30$tk->mock(
31 "verify",
32 sub {
33 my ( $self, $p ) = @_;
34
35 if ( blessed($p) ) {
36 return \%user if ( $p->param("sig") );
37 }
38 else {
39 return \%user if ( $p->{sig} );
40 }
41 }
42);
19c14a20 43
44my $store = Test::MockObject->new;
209fb56b 45$store->mock( get_user =>
4332afab 46 sub { shift; Catalyst::Plugin::Authentication::User::Hash->new($_[2]) } );
19c14a20 47
48my $c = Test::MockObject::Extends->new($m);
49$c->set_always( config => {} );
50my $config = $c->config->{authentication}{typekey} ||= {};
51
52$c->set_always( req => $req );
53$c->set_always( request => $req );
54$c->set_false("debug");
55
56my $authenticated;
57$c->mock( set_authenticated => sub { $authenticated = $_[1] } );
d7c20e94 58$c->mock( logout => sub { undef $authenticated } );
19c14a20 59
60can_ok( $m, "setup" );
61
62$c->setup;
63
64isa_ok( $config->{typekey_object},
65 "Authen::TypeKey", '$c->config->{authentication}{typekey}{obj}' );
66
67$config->{typekey_object} = $tk;
68
69can_ok( $m, "authenticate_typekey" );
70
71lives_ok {
72 $c->authenticate_typekey;
73 }
74 "can try to auth with no args, no params";
75
76ok( !$c->called("set_authenticated"), "nothing was authenticated" );
19c14a20 77
78$_->clear for $c, $tk;
79
209fb56b 80%{ $req->params } = my %vars =
81 ( %user, sig => 'GWwAIXbkb2xNrQO2e/r2LDl14ek=:U5+tDsPM0+EXeKzFWsosizG7+VU=',
82 );
19c14a20 83
84lives_ok {
85 $c->authenticate_typekey;
86 }
87 "can try to auth, no args, all params";
88
89$tk->called_ok("verify");
90$c->called_ok( "set_authenticated", "authenticated" );
91
92$_->clear for $c, $tk;
93
94%{ $req->params } = ();
95$config->{auth_store} = $store;
96
97lives_ok {
98 $c->authenticate_typekey(%vars);
99 }
100 "can try to auth with args";
101
102$tk->called_ok("verify");
103$c->called_ok( "set_authenticated", "authenticated" );
209fb56b 104$store->called_ok( "get_user", "user retrieved from store" );
19c14a20 105
106$_->clear for $c, $tk, $store;
107
108$tk->set_false("verify");
109
19c14a20 110lives_ok {
111 $c->authenticate_typekey(%vars);
112 }
113 "can try to auth with args";
114
115$tk->called_ok("verify");
209fb56b 116ok( !$c->called("set_authenticated"), "authenticated" );
117ok( !$store->called("get_user"), "no user retrieved from store" );
118
119$c->logout;
19c14a20 120
209fb56b 121$tk->set_true("verify");
122$c->clear;
123
124ok(
125 $c->authenticate_typekey(
126 my $user = Catalyst::Plugin::Authentication::User::Hash->new(
127 typekey_credentials => { %vars }
128 )
129 ),
130 "can authenticate with user object"
131);
19c14a20 132
209fb56b 133$c->called_ok("set_authenticated");