use strict;
use warnings;
-use Test::More tests => 15;
+use Test::More tests => 13;
use Test::MockObject;
use Test::MockObject::Extends;
my $cxt =
Test::MockObject::Extends->new("Catalyst::Plugin::Session::State::Cookie");
-$cxt->set_always( config => { } );
+$cxt->set_always( config => {} );
$cxt->set_always( request => $req );
$cxt->set_always( response => $res );
+$cxt->set_always( session => { } );
+$cxt->set_always( session_expires => 123 );
$cxt->set_false("debug");
my $sessionid;
$cxt->mock( sessionid => sub { shift; $sessionid = shift if @_; $sessionid } );
-
can_ok( $m, "setup_session" );
$cxt->setup_session;
-is( $cxt->config->{session}{cookie_name}, "session", "default cookie name is set" );
+like( $cxt->config->{session}{cookie_name},
+ qr/_session$/, "default cookie name is set" );
+$cxt->config->{session}{cookie_name} = "session";
-can_ok( $m, "prepare_cookies" );
+can_ok( $m, "get_session_id" );
-$cxt->prepare_cookies;
-ok( !$cxt->called("sessionid"),
- "didn't try setting session ID when there was nothing to set it by" );
+ok( !$cxt->get_session_id, "no session id yet");
$cxt->clear;
%req_cookies = ( session => $cookie );
-ok( !$cxt->sessionid, "no session ID yet" );
-$cxt->prepare_cookies;
-is( $cxt->sessionid, "the session id", "session ID was restored from cookie" );
+is( $cxt->get_session_id, "the session id", "session ID was restored from cookie" );
$cxt->clear;
$res->clear;
-can_ok( $m, "finalize" );
-$cxt->finalize;
-ok( !$res->called("cookies"),
- "response cookie was not set since res cookie is already there" );
+can_ok( $m, "set_session_id" );
+$cxt->set_session_id("moose");
-$cxt->clear;
-$sessionid = undef;
-$res->clear;
-
-$cxt->finalize;
-ok( !$res->called("cookies"),
-"response cookie was not set when sessionid was deleted, even if req cookie is still there"
-);
+$res->called_ok( "cookies", "created a cookie on set" );
-$sessionid = "some other ID";
$cxt->clear;
$res->clear;
-$cxt->finalize;
+$cxt->set_session_id($sessionid);
+
$res->called_ok( "cookies", "response cookie was set when sessionid changed" );
is_deeply(
\%res_cookies,
- { session => { value => $sessionid } },
+ { session => { value => $sessionid, expires => 123 } },
"cookie was set correctly"
);
$cxt->clear;
-$res->clear;
-%req_cookies = ();
-%res_cookies = ();
-$sessionid = undef;
-
-$cxt->finalize;
-ok( !$res->called("cookies"),
- "response cookie was not set when there is no sessionid or request cookie"
-);
+$req->clear;
-$cxt->clear;
-$sessionid = "123";
-%res_cookies = ();
-$res->clear;
-
-$cxt->finalize;
-
-$res->called_ok( "cookies",
- "response cookie was set when session was created" );
-is_deeply(
- \%res_cookies,
- { session => { value => $sessionid } },
- "cookie was set correctly"
-);
+can_ok( $m, "cookie_is_rejecting" );
+%req_cookies = ( path => '/foo' );
+$req->set_always( path => '' );
+ok( $cxt->cookie_is_rejecting(\%req_cookies), "cookie is rejecting" );
+$req->set_always( path => 'foo/bar' );
+ok( !$cxt->cookie_is_rejecting(\%req_cookies), "cookie is not rejecting" );