3 package Catalyst::Plugin::Session::Test::Store;
20 plan tests => 19 + ($args{extra_tests} || 0);
22 my $backend = $args{backend};
23 my $cfg = $args{config};
25 my $p = "Session::Store::$backend";
26 use_ok( my $m = "Catalyst::Plugin::$p" );
28 isa_ok( bless( {}, $m ), "Catalyst::Plugin::Session::Store" );
31 package Catalyst::Plugin::SessionStateTest;
32 use base qw/Catalyst::Plugin::Session::State/;
38 ${ ref($c) . "::session_id" };
43 ${ ref($c) . "::session_id" } = $sid;
46 sub delete_session_id {
48 undef ${ ref($c) . "::session_id" };
54 package SessionStoreTest;
55 use Catalyst qw/Session SessionStateTest/;
63 sub create_session : Global {
64 my ( $self, $c ) = @_;
65 ok( !$c->session_is_valid, "no session id yet" );
66 ok( $c->session, "session created" );
67 ok( $c->session_is_valid, "with a session id" );
69 $c->session->{magic} = "møøse";
72 sub recover_session : Global {
73 my ( $self, $c ) = @_;
74 ok( $c->session_is_valid, "session id exists" );
75 is( $c->sessionid, our $session_id,
76 "and is the one we saved in the last action" );
77 ok( $c->session, "a session exists" );
78 is( $c->session->{magic},
80 "and it contains what we put in on the last attempt" );
81 $c->delete_session("user logout");
84 sub after_session : Global {
85 my ( $self, $c ) = @_;
86 ok( !$c->session_is_valid, "no session id" );
87 ok( !$c->session->{magic}, "session data not restored" );
88 ok( !$c->session_delete_reason, "no reason for deletion" );
91 @{ __PACKAGE__->config->{session} }{ keys %$cfg } = values %$cfg;
98 package SessionStoreTest2;
99 use Catalyst qw/Session SessionStateTest/;
102 our $VERSION = "123";
106 sub create_session : Global {
107 my ( $self, $c ) = @_;
109 $c->session->{magic} = "møøse";
112 sub recover_session : Global {
113 my ( $self, $c ) = @_;
115 ok( !$c->session_is_valid, "session is gone" );
118 $c->session_delete_reason,
120 "reason is that the session expired"
123 ok( !$c->session->{magic}, "no saved data" );
126 __PACKAGE__->config->{session}{expires} = 0;
128 @{ __PACKAGE__->config->{session} }{ keys %$cfg } = values %$cfg;
135 can_ok( $m, "get_session_data" );
136 can_ok( $m, "store_session_data" );
137 can_ok( $m, "delete_session_data" );
138 can_ok( $m, "delete_expired_sessions" );
143 use Catalyst::Test "SessionStoreTest";
145 # idiotic void context warning workaround
147 my $x = get("/create_session");
148 $x = get("/recover_session");
149 $x = get("/after_session");
155 use Catalyst::Test "SessionStoreTest2";
157 my $x = get("/create_session");
158 sleep 1; # let the session expire
159 $x = get("/recover_session");
171 Catalyst::Plugin::Session::Test::Store - Reusable sanity for session storage
178 use Catalyst::Plugin::Session::Test::Store (
179 backend => "FastMmap",
181 storage => "/tmp/foo",