#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
BEGIN {
eval { require Catalyst::Plugin::Session::State::Cookie; Catalyst::Plugin::Session::State::Cookie->VERSION(0.03) }
or plan skip_all =>
"Catalyst::Plugin::Session::State::Cookie 0.03 or higher is required for this test";
eval { require Test::WWW::Mechanize::Catalyst }
or plan skip_all =>
"Test::WWW::Mechanize::Catalyst is required for this test";
plan tests => 16;
}
use lib "t/lib";
use Test::WWW::Mechanize::Catalyst qw/DynamicExpiryApp/;
my $m = Test::WWW::Mechanize::Catalyst->new;
$m->get_ok("http://localhost/foo/counter");
$m->content_is( 1, "counter worked" );
$m->get_ok("http://localhost/foo/counter");
$m->content_is( 2, "counter worked" );
my $num_cookies = 0;
my $cookie_expires;
$m->cookie_jar->scan( sub {
$num_cookies++;
my ( $version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_;
$cookie_expires = $expires;
});
is( $num_cookies, 1, "one cookie" );
ok( defined($cookie_expires), "expiry time defined" );
$m->get_ok("http://localhost/foo/remember_me");
$m->content_is( 3, "counter worked" );
$num_cookies = 0;
my $long_cookie_expires;
$m->cookie_jar->scan( sub {
$num_cookies++;
my ( $version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_;
$long_cookie_expires = $expires;
});
is( $num_cookies, 1, "one cookie" );
ok( defined($long_cookie_expires), "expiry time defined" );
cmp_ok(
($long_cookie_expires - $cookie_expires),
">",
60 * 60 * 24 * 360,
"the difference between the expiry times is big",
);
$m->get_ok("http://localhost/foo/counter");
$m->content_is( 4, "counter worked" );
$num_cookies = 0;
$m->cookie_jar->scan( sub {
$num_cookies++;
my ( $version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_;
$long_cookie_expires = $expires;
});
is( $num_cookies, 1, "one cookie" );
ok( defined($long_cookie_expires), "expiry time defined" );
cmp_ok(
($long_cookie_expires - $cookie_expires),
">",
60 * 60 * 24 * 360,
"the difference between the expiry times is still big",
);