use strict; use warnings; use Test::More tests => 10; use HTTP::Session; use HTTP::Session::State::Test; use HTTP::Session::State::Null; use HTTP::Session::Store::Test; use CGI; my $store = HTTP::Session::Store::Test->new( data => { FOOBAR => {} } ); sub gen_session () { HTTP::Session->new( state => HTTP::Session::State::Test->new(session_id => 'FOOBAR'), store => $store, request => CGI->new(), ); } sub { my $session = gen_session(); $session->set('foo', 'bar'); }->(); sub { my $session = gen_session(); ok ! $session->is_fresh; is $session->get('foo'), 'bar'; $session->set('hoge' => 'fuga'); }->(); sub { my $session = gen_session(); ok ! $session->is_fresh; is $session->get('foo'), 'bar'; is $session->get('hoge'), 'fuga'; }->(); sub { my $session = gen_session(); $session->expire(); isa_ok $session, 'HTTP::Session::Expired'; ok !$session->is_fresh; }->(); sub { my $session = gen_session(); is $session->get('foo'), undef; }->(); sub { my $session = HTTP::Session->new( state => HTTP::Session::State::Null->new( ), store => HTTP::Session::Store::Test->new, request => CGI->new(), ); ok $session->is_fresh, 'null session is fresh'; is_deeply $session->as_hashref, {}; }->();