Catalyst::Plugin::Session::Test::Store fix v0.09
Yuval Kogman [Mon, 31 Jul 2006 18:19:30 +0000 (18:19 +0000)]
Changes
lib/Catalyst/Plugin/Session.pm
lib/Catalyst/Plugin/Session/Test/Store.pm

diff --git a/Changes b/Changes
index f827d7d..ee07d30 100644 (file)
--- 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
 
index 1607f70..732b56c 100644 (file)
@@ -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'";
index 0e246e2..6f0db9b 100644 (file)
@@ -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,