1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
use strict;
use Test::More 'no_plan';
$ENV{'CGI_APP_RETURN_ONLY'} = 1;
use CGI::Session;
use CGI::Session::Driver::file;
use File::Spec;
$CGI::Session::Driver::file::FileName = 'session.dat';
my $Session_ID;
my $Storage_Name = 'cap_form_state';
my $Storage_Hash;
{
package WebApp1;
use CGI::Application;
use vars qw(@ISA);
BEGIN { @ISA = qw(CGI::Application); }
use CGI::Application::Plugin::Session;
use CGI::Application::Plugin::FormState;
use Test::More;
sub setup {
my $self = shift;
$self->run_modes(['start']);
$self->session_config(
CGI_SESSION_OPTIONS => [ "driver:File", undef, { Directory => 't' } ],
);
$Session_ID = $self->session->id;
$self->session->param('foo', 42);
is($self->session->param('foo'), 42, '[webapp1] new session initialized');
}
sub start {
my $self = shift;
$self->form_state->delete;
is($self->session->param('foo'), 42, '[webapp1] other session data still there');
my @keys = sort $self->form_state->param;
ok(eq_array(\@keys, []), '[webapp2] form_state keys (1)');
# Store some parameters
$self->form_state->param('name' => 'Road Runner');
is($self->form_state->param('name'), 'Road Runner', '[webapp1] form_state: name');
@keys = sort $self->form_state->param;
ok(eq_array(\@keys, ['name']), '[webapp2] form_state keys (2)');
$self->form_state->clear_params;
is($self->form_state->param('name'), undef, '[webapp1] form_state: name (cleared)');
@keys = sort $self->form_state->param;
ok(eq_array(\@keys, []), '[webapp2] form_state keys (3)');
$self->form_state->param('name' => 'Bugs Bunny');
$self->form_state->param('occupation' => 'Having Fun');
# Store some other parameters via hashref
$self->form_state->param({
'name2' => 'Wile E. Coyote',
'occupation' => 'Cartoon Character',
});
@keys = sort $self->form_state->param;
ok(eq_array(\@keys, ['name', 'name2', 'occupation']), '[webapp2] form_state keys (4)');
is($self->form_state->param('name'), 'Bugs Bunny', '[webapp1] form_state: name');
is($self->form_state->param('name2'), 'Wile E. Coyote', '[webapp1] form_state: name2');
is($self->form_state->param('occupation'), 'Cartoon Character', '[webapp1] form_state: occupation');
my $t = $self->load_tmpl('t/tmpl/basic.html');
my $output = $t->output;
$Storage_Hash = $self->form_state->id;
my $session_key = 'form_state_cap_form_state_' . $self->form_state->id;
is($session_key, $self->form_state->session_key, 'session key');
is($self->form_state->name, 'cap_form_state', 'name');
is($output, "$Storage_Name:$Storage_Hash", 'form_state_id added to output');
$self->form_state->delete;
is($self->session->param('foo'), 42, '[webapp1] other session data still there');
ok(!exists $self->session->dataref->{$session_key}, 'storage has been removed');
}
}
WebApp1->new->run;
unlink File::Spec->catfile('t', $CGI::Session::Driver::file::FileName);
|