Fixed I generation to use SHA1 instead of sequential. Added sane defaults to Middleware.
[catagits/Web-Session.git] / t / 001_basic.t
CommitLineData
06190e8b 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More;
7use Test::Exception;
8
9use Plack::Request;
10
11use Plack::Session;
12use Plack::Session::State;
13use Plack::Session::Store;
14
15sub request {
16 open my $in, '<', \do { my $d };
17 my $env = {
18 'psgi.version' => [ 1, 0 ],
19 'psgi.input' => $in,
20 'psgi.errors' => *STDERR,
21 'psgi.url_scheme' => 'http',
22 SERVER_PORT => 80,
23 REQUEST_METHOD => 'GET',
24 };
25 my $r = Plack::Request->new( $env );
26 $r->parameters( @_ );
27 $r;
28}
29
30my $storage = Plack::Session::Store->new;
31my $state = Plack::Session::State->new;
32
fe1bfe7d 33my @sids;
06190e8b 34{
bd992981 35 my $r = request();
36
06190e8b 37 my $s = Plack::Session->new(
38 state => $state,
39 store => $storage,
bd992981 40 request => $r,
06190e8b 41 );
42
fe1bfe7d 43 push @sids, $s->id;
44
45 ok(!$s->get('foo'), '... no value stored in foo for session');
06190e8b 46
47 lives_ok {
48 $s->set( foo => 'bar' );
fe1bfe7d 49 } '... set the value successfully in session';
06190e8b 50
fe1bfe7d 51 is($s->get('foo'), 'bar', '... got the foo value back successfully from session');
06190e8b 52
bd992981 53 my $resp = $r->new_response;
54
06190e8b 55 lives_ok {
bd992981 56 $s->finalize( $resp );
fe1bfe7d 57 } '... finalized sessio successfully';
06190e8b 58}
59
60{
bd992981 61 my $r = request();
62
06190e8b 63 my $s = Plack::Session->new(
64 state => $state,
65 store => $storage,
bd992981 66 request => $r,
06190e8b 67 );
68
fe1bfe7d 69 push @sids, $s->id;
06190e8b 70
fe1bfe7d 71 isnt($sids[0], $sids[1], "no same Session ID");
72 ok(!$s->get('foo'), '... no value stored for foo in session');
06190e8b 73
74 lives_ok {
75 $s->set( foo => 'baz' );
76 } '... set the value successfully';
77
fe1bfe7d 78 is($s->get('foo'), 'baz', '... got the foo value back successfully from session');
06190e8b 79
bd992981 80 my $resp = $r->new_response;
81
06190e8b 82 lives_ok {
bd992981 83 $s->finalize( $resp );
fe1bfe7d 84 } '... finalized session successfully';
06190e8b 85}
86
87{
fe1bfe7d 88 my $r = request({ plack_session => $sids[0] });
bd992981 89
06190e8b 90 my $s = Plack::Session->new(
91 state => $state,
92 store => $storage,
bd992981 93 request => $r,
06190e8b 94 );
95
fe1bfe7d 96 is($s->id, $sids[0], '... got a basic session id');
06190e8b 97
fe1bfe7d 98 is($s->get('foo'), 'bar', '... got the value for foo back successfully from session');
06190e8b 99
100 lives_ok {
101 $s->remove( 'foo' );
fe1bfe7d 102 } '... removed the foo value successfully from session';
06190e8b 103
fe1bfe7d 104 ok(!$s->get('foo'), '... no value stored for foo in session');
06190e8b 105
bd992981 106 my $resp = $r->new_response;
107
06190e8b 108 lives_ok {
bd992981 109 $s->finalize( $resp );
fe1bfe7d 110 } '... finalized session successfully';
06190e8b 111}
112
113
114{
fe1bfe7d 115 my $r = request({ plack_session => $sids[1] });
bd992981 116
06190e8b 117 my $s = Plack::Session->new(
118 state => $state,
119 store => $storage,
bd992981 120 request => $r,
06190e8b 121 );
122
fe1bfe7d 123 is($s->id, $sids[1], '... got a basic session id');
06190e8b 124
fe1bfe7d 125 is($s->get('foo'), 'baz', '... got the foo value back successfully from session');
06190e8b 126
bd992981 127 my $resp = $r->new_response;
128
06190e8b 129 lives_ok {
bd992981 130 $s->finalize( $resp );
fe1bfe7d 131 } '... finalized session successfully';
06190e8b 132}
133
134{
fe1bfe7d 135 my $r = request({ plack_session => $sids[0] });
bd992981 136
06190e8b 137 my $s = Plack::Session->new(
138 state => $state,
139 store => $storage,
bd992981 140 request => $r,
06190e8b 141 );
142
fe1bfe7d 143 is($s->id, $sids[0], '... got a basic session id');
06190e8b 144
fe1bfe7d 145 ok(!$s->get('foo'), '... no value stored for foo in session');
06190e8b 146
147 lives_ok {
148 $s->set( bar => 'baz' );
fe1bfe7d 149 } '... set the bar value successfully in session';
06190e8b 150
bd992981 151 my $resp = $r->new_response;
152
06190e8b 153 lives_ok {
bd992981 154 $s->finalize( $resp );
fe1bfe7d 155 } '... finalized session successfully';
06190e8b 156}
157
158{
fe1bfe7d 159 my $r = request({ plack_session => $sids[0] });
bd992981 160
06190e8b 161 my $s = Plack::Session->new(
162 state => $state,
163 store => $storage,
bd992981 164 request => $r,
06190e8b 165 );
166
fe1bfe7d 167 is($s->get('bar'), 'baz', '... got the bar value back successfully from session');
06190e8b 168
169 lives_ok {
170 $s->expire;
fe1bfe7d 171 } '... expired session successfully';
06190e8b 172}
173
174{
fe1bfe7d 175 my $r = request({ plack_session => $sids[0] });
bd992981 176
06190e8b 177 my $s = Plack::Session->new(
178 state => $state,
179 store => $storage,
bd992981 180 request => $r,
06190e8b 181 );
182
fe1bfe7d 183 push @sids, $s->id;
184 isnt($s->id, $sids[0], 'expired ... got a new session id');
06190e8b 185
fe1bfe7d 186 ok(!$s->get('bar'), '... no bar value stored');
06190e8b 187}
188
189{
fe1bfe7d 190 my $r = request({ plack_session => $sids[1] });
bd992981 191
06190e8b 192 my $s = Plack::Session->new(
193 state => $state,
194 store => $storage,
bd992981 195 request => $r,
06190e8b 196 );
197
fe1bfe7d 198 is($s->id, $sids[1], '... got a basic session id');
06190e8b 199
fe1bfe7d 200 is($s->get('foo'), 'baz', '... got the foo value back successfully from session');
06190e8b 201
bd992981 202 my $resp = $r->new_response;
203
06190e8b 204 lives_ok {
bd992981 205 $s->finalize( $resp );
fe1bfe7d 206 } '... finalized session successfully';
06190e8b 207}
208
fe1bfe7d 209done_testing;