Add the cookie_name configuration option
[catagits/Catalyst-Plugin-Session-State-Cookie.git] / t / basic.t
CommitLineData
1a776a0c 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More tests => 13;
7use Test::MockObject;
8use Test::MockObject::Extends;
9
10my $m;
11BEGIN { use_ok( $m = "Catalyst::Plugin::Session::State::Cookie" ) }
12
13my $cookie = Test::MockObject->new;
14$cookie->set_always( value => "the session id" );
15
16my $req = Test::MockObject->new;
17my %req_cookies;
18$req->set_always( cookies => \%req_cookies );
19
20my $res = Test::MockObject->new;
21my %res_cookies;
22$res->set_always( cookies => \%res_cookies );
23
24my $cxt =
25 Test::MockObject::Extends->new("Catalyst::Plugin::Session::State::Cookie");
26
27$cxt->set_always( request => $req );
28$cxt->set_always( response => $res );
29$cxt->set_false("debug");
30my $sessionid;
31$cxt->mock( sessionid => sub { shift; $sessionid = shift if @_; $sessionid } );
32
33can_ok( $m, "prepare_cookies" );
34
35$cxt->prepare_cookies;
36ok( !$cxt->called("sessionid"),
37 "didn't try setting session ID when there was nothing to set it by" );
38
39$cxt->clear;
40
41%req_cookies = ( session => $cookie );
42
43ok( !$cxt->sessionid, "no session ID yet" );
44$cxt->prepare_cookies;
45is( $cxt->sessionid, "the session id", "session ID was restored from cookie" );
46
47$cxt->clear;
48$res->clear;
49
50can_ok( $m, "finalize" );
51$cxt->finalize;
52ok( !$res->called("cookies"),
53 "response cookie was not set since res cookie is already there" );
54
55$cxt->clear;
56$sessionid = undef;
57$res->clear;
58
59$cxt->finalize;
60ok( !$res->called("cookies"),
61"response cookie was not set when sessionid was deleted, even if req cookie is still there"
62);
63
64$sessionid = "some other ID";
65$cxt->clear;
66$res->clear;
67
68$cxt->finalize;
69$res->called_ok( "cookies", "response cookie was set when sessionid changed" );
70is_deeply(
71 \%res_cookies,
72 { session => { value => $sessionid } },
73 "cookie was set correctly"
74);
75
76$cxt->clear;
77$res->clear;
78%req_cookies = ();
79%res_cookies = ();
80$sessionid = undef;
81
82$cxt->finalize;
83ok( !$res->called("cookies"),
84 "response cookie was not set when there is no sessionid or request cookie"
85);
86
87$cxt->clear;
88$sessionid = "123";
89%res_cookies = ();
90$res->clear;
91
92$cxt->finalize;
93
94$res->called_ok( "cookies",
95 "response cookie was set when session was created" );
96is_deeply(
97 \%res_cookies,
98 { session => { value => $sessionid } },
99 "cookie was set correctly"
100);
101