use strict; use warnings; use Test::More tests => 8; use CGI; use t::Pages; use t::Request; use HTTP::Session::State::Cookie; sub { # first request my $r = t::Request->new( in => { }, ); my $store = HTTP::Session::Store::Test->new( data => { }, ); my $page = t::Pages->new( r => $r, store => $store, state => HTTP::Session::State::Cookie->new(), callback => sub { my $self = shift; isa_ok $self->session, 'Sledge::HTTPSession::Session'; like $self->session->session_id, qr/^[a-z0-9]{32}$/; $self->session->param('foo' => 'bar'); $self->content('foobar'); }, ); $page->dispatch; like $r->{out}->{'Set-Cookie'}, qr{^http_session_sid=[a-z0-9]{32}; path=/$}, 'set-cookie header'; }->(); sub { # second request my $r = t::Request->new( in => { 'Cookie' => 'http_session_sid=deadbeaf; path=/', }, ); my $store = HTTP::Session::Store::Test->new( data => { 'deadbeaf' => { }, }, ); my $page = t::Pages->new( r => $r, store => $store, state => HTTP::Session::State::Cookie->new(), callback => sub { my $self = shift; isa_ok $self->session, 'Sledge::HTTPSession::Session'; is $self->session->session_id, 'deadbeaf'; $self->session->param('foo' => 'bar'); is $self->session->param('foo'), 'bar'; $self->session->param('bar' => 'buz'); $self->session->remove_all; ok !$self->session->param('bar'); $self->content('foobar'); }, ); $page->dispatch; is $r->{out}->{'Set-Cookie'}, undef, "don't send set-cookie header"; }->();