10 use Catalyst::Utils ();
12 use Catalyst::Test qw(CookieTestApp);
14 my $jar = HTTP::Cookies->new;
18 my $req = Catalyst::Utils::request($url);
19 $jar->add_cookie_header($req);
20 my $res = request($req);
21 $jar->extract_cookies($res);
24 if ($_[1] eq 'cookietestapp_session') {
46 $res = $get->('/stream');
47 ok $res->is_success, 'get page';
48 like $res->content, qr/hit number 1/, 'session data created';
50 my $expired = $cookie{expires};
52 $res = $get->('/page');
53 ok $res->is_success, 'get page';
54 like $res->content, qr/hit number 2/, 'session data restored';
56 $res = $get->('/page');
57 ok $res->is_success, 'get page';
58 like $res->content, qr/hit number 3/, 'session data restored';
62 $res = $get->('/page');
63 ok $res->is_success, 'get page';
64 like $res->content, qr/hit number 4/, 'session data restored';
66 cmp_ok $expired, '<', $cookie{expires}, 'cookie expiration was extended';
67 $expired = $cookie{expires};
69 $res = $get->('/page');
70 ok $res->is_success, 'get page';
71 like $res->content, qr/hit number 5/, 'session data restored';
75 $res = $get->('/stream');
76 ok $res->is_success, 'get stream';
77 like $res->content, qr/hit number 6/, 'session data restored';
79 cmp_ok $expired, '<', $cookie{expires}, 'streaming also extends cookie';
81 $res = $get->('/deleteme');
82 ok $res->is_success, 'get page';
83 is $res->content, '1', 'session id changed';
85 $res = $get->('https://localhost/page');
86 ok $res->is_success, 'get page over HTTPS - init session';
87 like $res->content, qr/hit number 1/, 'first hit';
89 $res = $get->('http://localhost/page');
90 ok $res->is_success, 'get page again over HTTP';
91 like $res->content, qr/hit number 1/, 'first hit again - cookie not sent';
93 $res = $get->('https://localhost/page');
94 ok $res->is_success, 'get page over HTTPS';
95 like $res->content, qr/hit number 2/, 'second hit';