9 eval { require Catalyst::Plugin::Session; require Catalyst::Plugin::Session::State::Cookie };
10 plan skip_all => "This test needs Catalyst::Plugin::Session and Catalyst::Plugin::Session::State::Cookie installed" if $@;
15 package User::SessionRestoring;
16 use base qw/Catalyst::Plugin::Authentication::User::Hash/;
18 sub for_session { $_[0]->id }
19 sub store { $_[0]->{store} }
25 Session::State::Cookie
28 Authentication::Store::Minimal
29 Authentication::Credential::Password
35 use Digest::MD5 qw/md5/;
40 my ( $self, $c ) = @_;
42 ok(!$c->sessionid, "no session id yet");
43 ok(!$c->user, "no user yet");
44 ok($c->login( "foo", "s3cr3t" ), "can login with clear");
45 is( $c->user, $users->{foo}, "user object is in proper place");
49 my ( $self, $c ) = @_;
51 ok( $c->sessionid, "session ID was restored" );
52 ok( $c->user, "a user was also restored");
53 is_deeply( $c->user, $users->{foo}, "restored user is the right one (deep test - store might change identity)" );
55 $c->delete_session("bah");
58 sub fluffy_bunny : Local {
59 my ( $self, $c ) = @_;
61 ok( !$c->sessionid, "no session ID was restored");
62 ok( !$c->user, "no user was restored");
65 __PACKAGE__->config->{authentication}{users} = $users = {
66 foo => User::SessionRestoring->new(
74 $users->{foo}{store} = __PACKAGE__->default_auth_store;
77 use Test::WWW::Mechanize::Catalyst qw/AuthTestApp/; # for the cookie support
79 my $m = Test::WWW::Mechanize::Catalyst->new;
81 $m->get_ok("http://localhost/moose", "get ok");
82 $m->get_ok("http://localhost/elk", "get ok");
83 $m->get_ok("http://localhost/fluffy_bunny", "get ok");