Release commit for 0.18
[catagits/Catalyst-Plugin-Session-State-Cookie.git] / t / live_app.t
CommitLineData
db1cda22 1use strict;
2use warnings;
3
602b9593 4use FindBin qw/$Bin/;
5use lib "$Bin/lib";
6
db1cda22 7use Test::More;
8
92927909 9use HTTP::Cookies;
10use Catalyst::Utils ();
11
12use Catalyst::Test qw(CookieTestApp);
13
14my $jar = HTTP::Cookies->new;
15my %cookie;
16my $get = sub {
17 my $url = shift;
18 my $req = Catalyst::Utils::request($url);
19 $jar->add_cookie_header($req);
20 my $res = request($req);
21 $jar->extract_cookies($res);
22
23 $jar->scan( sub {
24 if ($_[1] eq 'cookietestapp_session') {
25 @cookie{qw(
26 version
27 key
28 val
29 path
30 domain
31 port
32 path_spec
33 secure
34 expires
35 discard
36 hash
37 )} = @_;
38 }
39 } );
40
41 return $res;
42};
43
44my $res;
45
46$res = $get->('/stream');
47ok $res->is_success, 'get page';
48like $res->content, qr/hit number 1/, 'session data created';
49
50my $expired = $cookie{expires};
51
52$res = $get->('/page');
53ok $res->is_success, 'get page';
54like $res->content, qr/hit number 2/, 'session data restored';
55
56$res = $get->('/page');
57ok $res->is_success, 'get page';
58like $res->content, qr/hit number 3/, 'session data restored';
db1cda22 59
92927909 60sleep 1;
db1cda22 61
92927909 62$res = $get->('/page');
63ok $res->is_success, 'get page';
64like $res->content, qr/hit number 4/, 'session data restored';
db1cda22 65
92927909 66cmp_ok $expired, '<', $cookie{expires}, 'cookie expiration was extended';
67$expired = $cookie{expires};
db1cda22 68
92927909 69$res = $get->('/page');
70ok $res->is_success, 'get page';
71like $res->content, qr/hit number 5/, 'session data restored';
db1cda22 72
a79a56a8 73sleep 1;
db1cda22 74
92927909 75$res = $get->('/stream');
76ok $res->is_success, 'get stream';
77like $res->content, qr/hit number 6/, 'session data restored';
db1cda22 78
92927909 79cmp_ok $expired, '<', $cookie{expires}, 'streaming also extends cookie';
dbec0a9d 80
92927909 81$res = $get->('/deleteme');
82ok $res->is_success, 'get page';
83is $res->content, '1', 'session id changed';
9013c08b 84
92927909 85$res = $get->('https://localhost/page');
86ok $res->is_success, 'get page over HTTPS - init session';
87like $res->content, qr/hit number 1/, 'first hit';
9013c08b 88
92927909 89$res = $get->('http://localhost/page');
90ok $res->is_success, 'get page again over HTTP';
91like $res->content, qr/hit number 1/, 'first hit again - cookie not sent';
9013c08b 92
92927909 93$res = $get->('https://localhost/page');
94ok $res->is_success, 'get page over HTTPS';
95like $res->content, qr/hit number 2/, 'second hit';
6a9ca807 96
92927909 97done_testing;