4 use Test::More tests => 13;
6 use Catalyst::Plugin::Session;
9 BEGIN { use_ok( $m = "Catalyst::Plugin::Session::State::Cookie" ) }
11 my $cookie_meta = Class::MOP::Class->create_anon_class( superclasses => ['Moose::Object'] );
12 my $cookie = $cookie_meta->name->new;
13 $cookie_meta->add_method( value => sub { "the session id" } );
15 my $req_meta = Class::MOP::Class->create_anon_class( superclasses => ['Moose::Object'] );
17 $req_meta->add_method( cookies => sub { \%req_cookies } );
18 my $req = $req_meta->name->new;
20 my $res_meta = Class::MOP::Class->create_anon_class( superclasses => ['Moose::Object'] );
22 my $cookies_called = 0;
23 $res_meta->add_method( cookies => sub { $cookies_called++; \%res_cookies });
24 my $res = $res_meta->name->new;
26 my $cxt_meta = Class::MOP::Class->create_anon_class(
28 Catalyst::Plugin::Session
29 Catalyst::Plugin::Session::State::Cookie
35 $cxt_meta->add_method( config => sub { $config });
36 $cxt_meta->add_method( request => sub { $req });
37 $cxt_meta->add_method( response => sub { $res });
38 $cxt_meta->add_method( session => sub { { } } );
39 $cxt_meta->add_method( session_expires => sub { 123 });
40 $cxt_meta->add_method("debug" => sub { 0 });
42 $cxt_meta->add_method( sessionid => sub { shift; $sessionid = shift if @_; $sessionid } );
44 can_ok( $m, "setup_session" );
46 my $cxt = $cxt_meta->name->new;
49 like( $config->{'Plugin::Session'}{cookie_name},
50 qr/_session$/, "default cookie name is set" );
52 $config->{'Plugin::Session'}{cookie_name} = "session";
54 can_ok( $m, "get_session_id" );
56 ok( !$cxt->get_session_id, "no session id yet");
58 $cxt = $cxt_meta->name->new;
60 %req_cookies = ( session => $cookie );
62 is( $cxt->get_session_id, "the session id", "session ID was restored from cookie" );
67 can_ok( $m, "set_session_id" );
68 $cxt->set_session_id("moose");
70 ok( $cookies_called, "created a cookie on set" );
76 $cxt->set_session_id($sessionid);
78 ok( $cookies_called, "response cookie was set when sessionid changed" );
89 "cookie was set correctly"
94 can_ok( $m, "cookie_is_rejecting" );
96 %req_cookies = ( path => '/foo' );
98 $req_meta->add_method( path => sub { $path } );
99 ok( $cxt->cookie_is_rejecting(\%req_cookies), "cookie is rejecting" );
101 ok( !$cxt->cookie_is_rejecting(\%req_cookies), "cookie is not rejecting" );