1 package User::SessionRestoring;
2 use base qw/Catalyst::Authentication::User::Hash/;
4 sub for_session { $_[0]->id }
5 sub store { $_[0]->{store} }
7 package AuthSessionTestApp;
11 Session::State::Cookie
14 Authentication::Store::Minimal
15 Authentication::Credential::Password
21 use Digest::MD5 qw/md5/;
26 my ( $self, $c ) = @_;
28 ok(!$c->sessionid, "no session id yet");
29 ok(!$c->user_exists, "no user exists");
30 ok(!$c->user, "no user yet");
31 ok($c->login( "foo", "s3cr3t" ), "can login with clear");
32 is( $c->user, $users->{foo}, "user object is in proper place");
36 my ( $self, $c ) = @_;
38 ok( $c->sessionid, "session ID was restored" );
39 ok( $c->user_exists, "user exists" );
40 ok( $c->user, "a user was also restored");
41 is_deeply( $c->user, $users->{foo}, "restored user is the right one (deep test - store might change identity)" );
44 $users->{bar} = delete $users->{foo};
48 my ( $self, $c ) = @_;
49 ok( $c->sessionid, "session ID was restored after user renamed" );
50 ok( $c->user_exists, "user appears to exist" );
51 ok( !$c->user, "user was not restored");
52 ok(scalar(@{ $c->error }), 'Error recorded');
53 ok( !$c->user_exists, "user no longer appears to exist" );
57 my ( $self, $c ) = @_;
58 ok($c->login( "bar", "s3cr3t" ), "can login with clear (new username)");
59 is( $c->user, $users->{bar}, "user object is in proper place");
63 sub fluffy_bunny : Local {
64 my ( $self, $c ) = @_;
66 ok( $c->session_is_valid, "session ID is restored after logout");
67 ok( !$c->user, "no user was restored after logout");
69 $c->delete_session("bah");
73 my ( $self, $c ) = @_;
75 ok( !$c->session_is_valid, "no session ID was restored");
76 $c->session->{definitely_not_a_user} = "moose";
80 sub butterfly : Local {
81 my ( $self, $c ) = @_;
83 ok( $c->session_is_valid, "valid session" );
84 ok( !$c->user_exists, "but no user exists" );
85 ok( !$c->user, "no user object either" );
88 __PACKAGE__->config->{'authentication'}{users} = $users = {
89 foo => User::SessionRestoring->new(
97 $users->{foo}{store} = __PACKAGE__->default_auth_store;