From: Yuval Kogman Date: Mon, 31 Jul 2006 18:19:30 +0000 (+0000) Subject: Catalyst::Plugin::Session::Test::Store fix X-Git-Tag: v0.09^0 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ec299c02b224a28ab5fcec81c908f82563445382;hp=88e5cd39f93ff138e76ce74472aa2c06c0b3401c;p=catagits%2FCatalyst-Plugin-Session.git Catalyst::Plugin::Session::Test::Store fix --- diff --git a/Changes b/Changes index f827d7d..ee07d30 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,8 @@ Revision history for Perl extension Catalyst::Plugin::Session +0.09 + - Fix Catalyst::Plugin::Session::Test::Store + 0.08 - rerelease because Module::Bane broke the META.yml. HURAAH diff --git a/lib/Catalyst/Plugin/Session.pm b/lib/Catalyst/Plugin/Session.pm index 1607f70..732b56c 100644 --- a/lib/Catalyst/Plugin/Session.pm +++ b/lib/Catalyst/Plugin/Session.pm @@ -12,7 +12,7 @@ use Digest (); use overload (); use Object::Signature (); -our $VERSION = "0.08"; +our $VERSION = "0.09"; my @session_data_accessors; # used in delete_session BEGIN { @@ -319,7 +319,8 @@ sub _load_sessionid { if ( defined( my $sid = $c->get_session_id ) ) { if ( $c->validate_session_id($sid) ) { - $c->_sessionid( $sid ); + # temporarily set the inner key, so that validation will work + $c->_sessionid($sid); return $sid; } else { my $err = "Tried to set invalid session ID '$sid'"; diff --git a/lib/Catalyst/Plugin/Session/Test/Store.pm b/lib/Catalyst/Plugin/Session/Test/Store.pm index 0e246e2..6f0db9b 100644 --- a/lib/Catalyst/Plugin/Session/Test/Store.pm +++ b/lib/Catalyst/Plugin/Session/Test/Store.pm @@ -5,6 +5,8 @@ package Catalyst::Plugin::Session::Test::Store; use strict; use warnings; +use utf8; + use Test::More tests => 19; use File::Temp; use File::Spec; @@ -23,51 +25,63 @@ sub import { isa_ok( bless( {}, $m ), "Catalyst::Plugin::Session::Store" ); - our $restored_session_id; + { + package Catalyst::Plugin::SessionStateTest; + use base qw/Catalyst::Plugin::Session::State/; + + no strict 'refs'; + + sub get_session_id { + my $c = shift; + ${ ref($c) . "::session_id" }; + } + + sub set_session_id { + my ( $c, $sid ) = @_; + ${ ref($c) . "::session_id" } = $sid; + } + + sub delete_session_id { + my $c = shift; + undef ${ ref($c) . "::session_id" }; + } + } { package SessionStoreTest; - use Catalyst qw/Session Session::State/; + use Catalyst qw/Session SessionStateTest/; push our (@ISA), $m; - our $VERSION = "0.01"; + use strict; + use warnings; use Test::More; - sub prepare_cookies { - my $c = shift; - $c->sessionid($restored_session_id) if defined $restored_session_id; - $c->NEXT::prepare_cookies(@_); - } - sub create_session : Global { my ( $self, $c ) = @_; - ok( !$c->sessionid, "no session id yet" ); - ok( $c->session, "session created" ); - ok( $c->sessionid, "with a session id" ); - - $restored_session_id = $c->sessionid; + ok( !$c->session_is_valid, "no session id yet" ); + ok( $c->session, "session created" ); + ok( $c->session_is_valid, "with a session id" ); $c->session->{magic} = "møøse"; } sub recover_session : Global { my ( $self, $c ) = @_; - ok( $c->sessionid, "session id exists" ); - is( $c->sessionid, $restored_session_id, + ok( $c->session_is_valid, "session id exists" ); + is( $c->sessionid, our $session_id, "and is the one we saved in the last action" ); ok( $c->session, "a session exists" ); is( $c->session->{magic}, "møøse", "and it contains what we put in on the last attempt" ); $c->delete_session("user logout"); - $restored_session_id = undef; } sub after_session : Global { my ( $self, $c ) = @_; - ok( !$c->sessionid, "no session id" ); + ok( !$c->session_is_valid, "no session id" ); ok( !$c->session->{magic}, "session data not restored" ); ok( !$c->session_delete_reason, "no reason for deletion" ); } @@ -80,31 +94,23 @@ sub import { { package SessionStoreTest2; - use Catalyst qw/Session Session::State/; + use Catalyst qw/Session SessionStateTest/; push our (@ISA), $m; our $VERSION = "123"; use Test::More; - sub prepare_cookies { - my $c = shift; - $c->sessionid($restored_session_id) if defined $restored_session_id; - $c->NEXT::prepare_cookies(@_); - } - sub create_session : Global { my ( $self, $c ) = @_; $c->session->{magic} = "møøse"; - - $restored_session_id = $c->sessionid; } sub recover_session : Global { my ( $self, $c ) = @_; - ok( !$c->sessionid, "no session id" ); + ok( !$c->session_is_valid, "session is gone" ); is( $c->session_delete_reason,