3 package Catalyst::Plugin::Session::Test::Store;
10 use Test::More tests => 19;
20 my $backend = $args{backend};
21 my $cfg = $args{config};
23 my $p = "Session::Store::$backend";
24 use_ok( my $m = "Catalyst::Plugin::$p" );
26 isa_ok( bless( {}, $m ), "Catalyst::Plugin::Session::Store" );
29 package Catalyst::Plugin::SessionStateTest;
30 use base qw/Catalyst::Plugin::Session::State/;
36 ${ ref($c) . "::session_id" };
41 ${ ref($c) . "::session_id" } = $sid;
44 sub delete_session_id {
46 undef ${ ref($c) . "::session_id" };
52 package SessionStoreTest;
53 use Catalyst qw/Session SessionStateTest/;
61 sub create_session : Global {
62 my ( $self, $c ) = @_;
63 ok( !$c->session_is_valid, "no session id yet" );
64 ok( $c->session, "session created" );
65 ok( $c->session_is_valid, "with a session id" );
67 $c->session->{magic} = "møøse";
70 sub recover_session : Global {
71 my ( $self, $c ) = @_;
72 ok( $c->session_is_valid, "session id exists" );
73 is( $c->sessionid, our $session_id,
74 "and is the one we saved in the last action" );
75 ok( $c->session, "a session exists" );
76 is( $c->session->{magic},
78 "and it contains what we put in on the last attempt" );
79 $c->delete_session("user logout");
82 sub after_session : Global {
83 my ( $self, $c ) = @_;
84 ok( !$c->session_is_valid, "no session id" );
85 ok( !$c->session->{magic}, "session data not restored" );
86 ok( !$c->session_delete_reason, "no reason for deletion" );
89 @{ __PACKAGE__->config->{session} }{ keys %$cfg } = values %$cfg;
96 package SessionStoreTest2;
97 use Catalyst qw/Session SessionStateTest/;
100 our $VERSION = "123";
104 sub create_session : Global {
105 my ( $self, $c ) = @_;
107 $c->session->{magic} = "møøse";
110 sub recover_session : Global {
111 my ( $self, $c ) = @_;
113 ok( !$c->session_is_valid, "session is gone" );
116 $c->session_delete_reason,
118 "reason is that the session expired"
121 ok( !$c->session->{magic}, "no saved data" );
124 __PACKAGE__->config->{session}{expires} = 0;
126 @{ __PACKAGE__->config->{session} }{ keys %$cfg } = values %$cfg;
133 can_ok( $m, "get_session_data" );
134 can_ok( $m, "store_session_data" );
135 can_ok( $m, "delete_session_data" );
136 can_ok( $m, "delete_expired_sessions" );
141 use Catalyst::Test "SessionStoreTest";
143 # idiotic void context warning workaround
145 my $x = get("/create_session");
146 $x = get("/recover_session");
147 $x = get("/after_session");
153 use Catalyst::Test "SessionStoreTest2";
155 my $x = get("/create_session");
156 sleep 1; # let the session expire
157 $x = get("/recover_session");
169 Catalyst::Plugin::Session::Test::Store - Reusable sanity for session storage
176 use Catalyst::Plugin::Session::Test::Store (
177 backend => "FastMmap",
179 storage => "/tmp/foo",