6 use Test::More tests => 15;
8 use Test::MockObject::Extends;
11 BEGIN { use_ok( $m = "Catalyst::Plugin::Session::State::Cookie" ) }
13 my $cookie = Test::MockObject->new;
14 $cookie->set_always( value => "the session id" );
16 my $req = Test::MockObject->new;
18 $req->set_always( cookies => \%req_cookies );
20 my $res = Test::MockObject->new;
22 $res->set_always( cookies => \%res_cookies );
25 Test::MockObject::Extends->new("Catalyst::Plugin::Session::State::Cookie");
27 $cxt->set_always( config => {} );
28 $cxt->set_always( request => $req );
29 $cxt->set_always( response => $res );
30 $cxt->set_always( session => { __expires => 123 } );
31 $cxt->set_false("debug");
33 $cxt->mock( sessionid => sub { shift; $sessionid = shift if @_; $sessionid } );
35 can_ok( $m, "setup_session" );
39 is( $cxt->config->{session}{cookie_name},
40 "session", "default cookie name is set" );
42 can_ok( $m, "prepare_cookies" );
44 $cxt->prepare_cookies;
45 ok( !$cxt->called("sessionid"),
46 "didn't try setting session ID when there was nothing to set it by" );
50 %req_cookies = ( session => $cookie );
52 ok( !$cxt->sessionid, "no session ID yet" );
53 $cxt->prepare_cookies;
54 is( $cxt->sessionid, "the session id", "session ID was restored from cookie" );
59 can_ok( $m, "finalize_cookies" );
60 $cxt->finalize_cookies;
61 { local $TODO = "This check is a pain to write, should be done by catalyst itself";
62 ok( !$res->called("cookies"),
63 "response cookie was not set since res cookie is already there" );
70 $cxt->finalize_cookies;
71 ok( !$res->called("cookies"),
72 "response cookie was not set when sessionid was deleted, even if req cookie is still there"
75 $sessionid = "some other ID";
79 $cxt->finalize_cookies;
80 $res->called_ok( "cookies", "response cookie was set when sessionid changed" );
83 { session => { value => $sessionid, expires => 123 } },
84 "cookie was set correctly"
93 $cxt->finalize_cookies;
94 ok( !$res->called("cookies"),
95 "response cookie was not set when there is no sessionid or request cookie"
103 $cxt->finalize_cookies;
105 $res->called_ok( "cookies",
106 "response cookie was set when session was created" );
109 { session => { value => $sessionid, expires => 123 } },
110 "cookie was set correctly"