fix Module::Install without . in @INC
[catagits/Catalyst-Plugin-Authentication.git] / t / lib / AuthTestApp / Controller / Root.pm
CommitLineData
d055ce0c 1package AuthTestApp::Controller::Root;
2use strict;
3use warnings;
4use base qw/ Catalyst::Controller /;
5
6__PACKAGE__->config( namespace => '' );
7
8use Test::More;
9use Test::Exception;
10
11use Digest::MD5 qw/md5/;
e8b9ffa9 12use Digest::SHA qw/sha1_base64/;
d055ce0c 13
14sub number_of_elements { return scalar @_ }
15
16sub moose : Local {
fb90f091 17 my ( $self, $c ) = @_;
d055ce0c 18
fb90f091 19 is(number_of_elements($c->user), 1, "Array undef");
20 is($c->user, undef, "no user, returns undef");
21 ok(!$c->user, "no user");
22 ok($c->login( "foo", "s3cr3t" ), "can login with clear");
23 is( $c->user, $AuthTestApp::users->{foo}, "user object is in proper place");
d055ce0c 24
fb90f091 25 ok( !$c->user->roles, "no roles for foo" );
26 my @new = qw/foo bar gorch/;
27 $c->user->roles( @new );
28 is_deeply( [ $c->user->roles ], \@new, "roles set as array");
d055ce0c 29
fb90f091 30 $c->logout;
31 ok(!$c->user, "no more user, after logout");
d055ce0c 32
fb90f091 33 ok($c->login( "bar", "s3cr3t" ), "can login with crypted");
34 is( $c->user, $AuthTestApp::users->{bar}, "user object is in proper place");
35 $c->logout;
d055ce0c 36
fb90f091 37 ok($c->login("gorch", "s3cr3t"), "can login with hashed");
38 is( $c->user, $AuthTestApp::users->{gorch}, "user object is in proper place");
39 $c->logout;
d055ce0c 40
fb90f091 41 ok($c->login("shabaz", "s3cr3t"), "can login with base64 hashed");
42 is( $c->user, $AuthTestApp::users->{shabaz}, "user object is in proper place");
43 $c->logout;
d055ce0c 44
fb90f091 45 ok($c->login("sadeek", "s3cr3t"), "can login with padded base64 hashed");
46 is( $c->user, $AuthTestApp::users->{sadeek}, "user object is in proper place");
47 $c->logout;
d055ce0c 48
fb90f091 49 ok(!$c->login( "bar", "bad pass" ), "can't login with bad password");
50 ok(!$c->user, "no user");
d055ce0c 51
fb90f091 52 throws_ok { $c->login( "baz", "foo" ) } qr/support.*mechanism/, "can't login without any supported mech";
d055ce0c 53
fb90f091 54 $c->res->body( "ok" );
d055ce0c 55}
56
57