fix extend_session_expires to extend the current session (RT#59595)
Dimitar Petrov [Mon, 8 Aug 2011 07:58:42 +0000 (07:58 +0000)]
lib/Catalyst/Plugin/Session.pm
t/lib/SessionTestApp/Controller/Root.pm
t/live_app.t

index cf7522a..69607fa 100644 (file)
@@ -348,7 +348,7 @@ sub session_expires {
     if ( defined( my $expires = $c->_extended_session_expires ) ) {
         return $expires;
     } elsif ( defined( $expires = $c->_load_session_expires ) ) {
-        return $c->extend_session_expires( $expires );
+        return $c->calculate_initial_session_expires;
     } else {
         return 0;
     }
@@ -368,7 +368,7 @@ sub calculate_initial_session_expires {
 
 sub calculate_extended_session_expires {
     my ( $c, $prev ) = @_;
-    $c->calculate_initial_session_expires;
+    return ( time() + $prev );
 }
 
 sub reset_session_expires {
index 34070b9..59559b9 100644 (file)
@@ -108,4 +108,10 @@ sub dump_these_loads_session : Global {
     }
 }
 
+sub extend_session_expires : Global {
+    my ($self, $c) = @_;
+    $c->extend_session_expires(31536000);
+    $c->res->output($c->session_expires);
+}
+
 1;
index cbc7cc5..9b0280f 100644 (file)
@@ -86,6 +86,19 @@ $ua3->get_ok( "http://localhost/login", "log ua3 in" );
 $ua3->get_ok( "http://localhost/dump_these_loads_session");
 $ua3->content_contains('NOT');
 
+my $ua4 = Test::WWW::Mechanize::Catalyst->new;
+$ua4->get_ok( "http://localhost/page", "initial get" );
+$ua4->content_contains( "please login", "ua4 not logged in" );
+
+$ua4->get_ok( "http://localhost/login", "log ua4 in" );
+$ua4->content_contains( "logged in", "ua4 logged in" );
+
+$ua4->get_ok( "http://localhost/extend_session_expires", "ua4 extend expire session" );
+
+my ( $ua4_expires ) = ($ua4->content =~ /(\d+)$/);
+
+ok( ($ua4_expires-time()-86400) >= 0, 'extend_session_expires with really long value' );
+
 diag("Testing against Catalyst $Catalyst::VERSION");
 diag("Testing Catalyst::Plugin::Session $Catalyst::Plugin::Session::VERSION");