Commit | Line | Data |
06190e8b |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Test::More; |
7 | use Test::Exception; |
8 | |
9 | use Plack::Request; |
10 | |
11 | use Plack::Session; |
12 | use Plack::Session::State; |
13 | use Plack::Session::Store; |
14 | |
15 | sub 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 | |
30 | my $storage = Plack::Session::Store->new; |
31 | my $state = Plack::Session::State->new; |
32 | |
fe1bfe7d |
33 | my @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 |
209 | done_testing; |