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 108 109 110 111 112 113 114 115 116 117 118 119
|
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_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, 'new session initialized');
}
sub start {
my $self = shift;
$self->form_state->config('expires' => '1s');
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');
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',
'occupation' => 'Having Fun',
);
@keys = sort $self->form_state->param;
ok(eq_array(\@keys, ['name', 'occupation']), '[webapp2] form_state keys (2)');
is($self->form_state->param('name'), 'Road Runner', '[webapp1] form_state: name');
is($self->form_state->param('occupation'), 'Having Fun', '[webapp1] form_state: occupation');
}
}
{
package WebApp2;
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']);
# init session and verify that it's got content
$self->session_config(
CGI_SESSION_OPTIONS => [ "driver:File", $Session_ID, { Directory => 't' } ],
);
is($self->session->param('foo'), 42, 'previous session initialized');
$self->start_mode('start');
$self->run_modes([qw/start/]);
}
sub start {
my $self = shift;
# Retrieve some parameters
my @keys = sort $self->form_state->param;
ok(eq_array(\@keys, []), '[webapp2] form_state is empty');
}
}
WebApp1->new->run;
sleep 2;
my $query = CGI->new;
$query->param('cap_form_state', $Storage_Hash);
WebApp2->new(QUERY => $query)->run;
unlink File::Spec->catfile('t', $CGI::Session::Driver::file::FileName);
|