Catalyst-Plugin-Session-State-Cookie

 view release on metacpan or  search on metacpan

t/live_app.t  view on Meta::CPAN

    $jar->add_cookie_header($req);
    my $res = request($req);
    $jar->extract_cookies($res);

    $jar->scan( sub {
        if ($_[1] eq 'cookietestapp_session') {
            @cookie{qw(
                version
                key
                val
                path
                domain
                port
                path_spec
                secure
                expires
                discard
                hash
            )} = @_;
        }
    } );

    return $res;
};

my $res;

$res = $get->('/stream');
ok $res->is_success, 'get page';
like $res->content, qr/hit number 1/, 'session data created';

my $expired = $cookie{expires};

$res = $get->('/page');
ok $res->is_success, 'get page';
like $res->content, qr/hit number 2/, 'session data restored';

$res = $get->('/page');
ok $res->is_success, 'get page';
like $res->content, qr/hit number 3/, 'session data restored';

sleep 1;

$res = $get->('/page');
ok $res->is_success, 'get page';
like $res->content, qr/hit number 4/, 'session data restored';

cmp_ok $expired, '<', $cookie{expires}, 'cookie expiration was extended';
$expired = $cookie{expires};

$res = $get->('/page');
ok $res->is_success, 'get page';
like $res->content, qr/hit number 5/, 'session data restored';

sleep 1;

$res = $get->('/stream');
ok $res->is_success, 'get stream';
like $res->content, qr/hit number 6/, 'session data restored';

cmp_ok $expired, '<', $cookie{expires}, 'streaming also extends cookie';

$res = $get->('/deleteme');
ok $res->is_success, 'get page';
is $res->content, '1', 'session id changed';

$res = $get->('https://localhost/page');
ok $res->is_success, 'get page over HTTPS - init session';
like $res->content, qr/hit number 1/, 'first hit';

$res = $get->('http://localhost/page');
ok $res->is_success, 'get page again over HTTP';
like $res->content, qr/hit number 1/, 'first hit again - cookie not sent';

$res = $get->('https://localhost/page');
ok $res->is_success, 'get page over HTTPS';
like $res->content, qr/hit number 2/, 'second hit';

done_testing;



( run in 1.636 second using v1.01-cache-2.11-cpan-39bf76dae61 )