X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F02_session_data.t;h=11d3ea34709c648525d371ece2ea0cf7e996fe42;hb=7ae1753f55503ff17d16450b4f938e5e6a22f88e;hp=cad59f2a5cb94c0345853f572f82eb057d51cac3;hpb=9e447f9d39065bcabd094f8e7dae93dab9e66ddf;p=catagits%2FCatalyst-Plugin-Session.git diff --git a/t/02_session_data.t b/t/02_session_data.t index cad59f2..11d3ea3 100644 --- a/t/02_session_data.t +++ b/t/02_session_data.t @@ -7,163 +7,176 @@ use Test::More tests => 19; use Test::MockObject; use Test::Deep; -my $m; BEGIN { use_ok($m = "Catalyst::Plugin::Session") } +my $m; +BEGIN { use_ok( $m = "Catalyst::Plugin::Session" ) } my %config; -my $log = Test::MockObject->new; -my $req = Test::MockObject->new; +my $log = Test::MockObject->new; +my $req = Test::MockObject->new; my @mock_isa = (); my %session; $log->set_true(qw/fatal warn/); -$req->set_always(address => "127.0.0.1"); +$req->set_always( address => "127.0.0.1" ); { - package MockCxt; - use base $m; - sub new { bless {}, $_[0] } - sub config { \%config }; - sub log { $log } - sub request { $req } - sub debug { 0 } - sub isa { 1 } # subvert the plugin tests, we're faking them - sub get_session_data { \%session } - sub delete_session_data { } + + package MockCxt; + use base $m; + sub new { bless {}, $_[0] } + sub config { \%config } + sub log { $log } + sub request { $req } + sub debug { 0 } + sub isa { 1 } # subvert the plugin tests, we're faking them + sub get_session_data { \%session } + sub store_session_data { } + sub delete_session_data { } } { - my $c = MockCxt->new; - $c->setup; + my $c = MockCxt->new; + $c->setup; - $c->prepare; - ok(!$c->{session}, "without a session ID prepare doesn't load a session"); + $c->prepare_action; + ok( !$c->{session}, "without a session ID prepare doesn't load a session" ); } { - %config = (session => { expires => 100 }); + %config = ( session => { expires => 100 } ); - %session = ( - __expires => time() + 1000, - __created => time(), - __updated => time(), - __address => "127.0.0.1", - ); + %session = ( + __expires => time() + 1000, + __created => time(), + __updated => time(), + __address => "127.0.0.1", + ); - my $c = MockCxt->new; - $c->setup; + my $c = MockCxt->new; + $c->setup; - $c->sessionid("the_session"); - $c->prepare; + $c->sessionid("the_session"); + $c->prepare_action; - ok($c->{session}, 'session "restored" with session id'); + ok( $c->{session}, 'session "restored" with session id' ); } { - %session = ( - __expires => time() - 100, # a while ago - __created => time() - 1000, - __udpated => time() - 1000, - __address => "127.0.0.1", - ); - - my $c = MockCxt->new; - $c->setup; - - $c->sessionid("the_session"); - $c->prepare; - - ok(!$c->{session}, "expired sessions are deleted"); - like($c->session_delete_reason, qr/expire/i, "with appropriate reason"); - ok(!$c->sessionid, "sessionid is also cleared"); + %session = ( + __expires => time() - 100, # a while ago + __created => time() - 1000, + __udpated => time() - 1000, + __address => "127.0.0.1", + ); + + my $c = MockCxt->new; + $c->setup; + + $c->sessionid("the_session"); + $c->prepare_action; + + ok( !$c->{session}, "expired sessions are deleted" ); + like( $c->session_delete_reason, qr/expire/i, "with appropriate reason" ); + ok( !$c->sessionid, "sessionid is also cleared" ); } { - %session = ( - __expires => time() + 1000, - __created => time(), - __updated => time(), - __address => "unlocalhost", - ); - - my $c = MockCxt->new; - $c->setup; - - $c->sessionid("the_session"); - $c->prepare; - - ok(!$c->{session}, "hijacked sessions are deleted"); - like($c->session_delete_reason, qr/mismatch/, "with appropriate reason"); - ok(!$c->sessionid, "sessionid is also cleared"); + %session = ( + __expires => time() + 1000, + __created => time(), + __updated => time(), + __address => "unlocalhost", + ); + + my $c = MockCxt->new; + $c->setup; + + $c->sessionid("the_session"); + $c->prepare_action; + + ok( !$c->{session}, "hijacked sessions are deleted" ); + like( $c->session_delete_reason, qr/mismatch/, "with appropriate reason" ); + ok( !$c->sessionid, "sessionid is also cleared" ); } { - %session = ( - __expires => time() + 1000, - __created => time(), - __updated => time(), - __address => "unlocalhost", - ); + %session = ( + __expires => time() + 1000, + __created => time(), + __updated => time(), + __address => "unlocalhost", + ); - $config{session}{verify_address} = 0; + $config{session}{verify_address} = 0; - my $c = MockCxt->new; - $c->setup; + my $c = MockCxt->new; + $c->setup; - $c->sessionid("the_session"); - $c->prepare; + $c->sessionid("the_session"); + $c->prepare_action; - ok($c->{session}, "address mismatch is OK if verify_address is disabled"); + ok( $c->{session}, "address mismatch is OK if verify_address is disabled" ); } { - %session = (); - %config = (); - - my $now = time; - - my $c = MockCxt->new; - $c->setup; - $c->prepare; - - ok($c->session, "creating a session works"); - ok($c->sessionid, "session id generated"); - - cmp_ok($c->session->{__created}, ">=", $now, "__created time is logical"); - cmp_ok($c->session->{__updated}, ">=", $now, "__updated time is logical"); - cmp_ok($c->session->{__expires}, ">=", ($now + $config{session}{expire}), "__expires time is logical"); - is($c->session->{__address}, $c->request->address, "address is also correct"); - - cmp_deeply( - [ keys %{ $c->{session} } ], - bag(qw/__expires __created __updated __address/), - "initial keys in session are all there", - ); + %session = (); + %config = (); + + my $now = time; + + my $c = MockCxt->new; + $c->setup; + $c->prepare_action; + + ok( $c->session, "creating a session works" ); + ok( $c->sessionid, "session id generated" ); + + cmp_ok( $c->session->{__created}, ">=", $now, "__created time is logical" ); + cmp_ok( $c->session->{__updated}, ">=", $now, "__updated time is logical" ); + cmp_ok( + $c->session->{__expires}, + ">=", + ( $now + $config{session}{expires} ), + "__expires time is logical" + ); + is( $c->session->{__address}, + $c->request->address, "address is also correct" ); + + cmp_deeply( + [ keys %{ $c->{session} } ], + bag(qw/__expires __created __updated __address/), + "initial keys in session are all there", + ); } - - { - %session = ( - __expires => time() + 1000, - __created => time(), - __updated => time(), - __address => "127.0.0.1", - ); + %session = ( + __expires => time() + 1000, + __created => time(), + __updated => time(), + __address => "127.0.0.1", + ); + + $config{session}{expires} = 2000; - $config{session}{expire} = 2000; + my $c = MockCxt->new; + $c->setup; - my $c = MockCxt->new; - $c->setup; + my $now = time(); - my $now = time(); - - $c->sessionid("the_session"); - $c->prepare; - $c->finalize; + $c->sessionid("the_session"); + $c->prepare_action; + $c->finalize; - ok($c->{session}, "session is still alive after 1/2 expired and finalized"); + ok( $c->{session}, + "session is still alive after 1/2 expired and finalized" ); - cmp_ok($c->session->{__expires}, ">=", $now + 2000, "session expires time extended"); + cmp_ok( + $c->session->{__expires}, + ">=", + $now + 2000, + "session expires time extended" + ); }