package TestAppScope;
use base 'CGI::Application';
use CGI::Application::Plugin::Session;
use CGI::Application::Plugin::MessageStack;
## TEST PLAN ##
# * cgiapp w/ html-template
# * same as before, but check scoping:
# - in 2nd request, scope info message for non-existent runmode
# - in 3rd request, check for ! message
# - in 4th request, scope info message for arrayref runmodes
# - in 5th request, check for message (1st arrayref value)
# - in 6th request, check for message (2nd arrayref value)
# - in 7th request, check for ! message
# FILES: 03-scope.t, TestAppScope.pm, output.TMPL
sub setup {
my $self = shift;
$self->mode_param( 'rm' );
$self->run_modes( [ qw( start second third fourth fifth sixth cleanup ) ] );
$self->tmpl_path( './t' );
}
sub cgiapp_init {
my $self = shift;
$self->session_config({
CGI_SESSION_OPTIONS => [ "driver:File", $self->query, {Directory=>'t/'} ],
SEND_COOKIE => 1,
COOKIE_PARAMS => {
-path => '/',
-domain => 'mydomain.com',
-expires => '+3M',
},
});
}
sub start {
my $self = shift;
my $session = $self->session;
my $template = $self->load_tmpl( 'output.TMPL', 'die_on_bad_params' => 0 );
$template->output;
}
sub second {
my $self = shift;
my $session = $self->session;
$self->push_message(
-scope => 'invalid',
-message => 'this is a test',
-classification => 'ERROR',
);
return "scoped message pushed";
}
sub third {
my $self = shift;
my $session = $self->session;
my $template = $self->load_tmpl( 'output.TMPL', 'die_on_bad_params' => 0 );
$template->output;
}
sub fourth {
my $self = shift;
my $session = $self->session;
$self->push_message(
-scope => [ qw( fifth sixth ) ],
-message => 'arrayref test',
);
return "scoped message with arrayref pushed";
}
sub fifth {
my $self = shift;
my $session = $self->session;
my $template = $self->load_tmpl( 'output.TMPL', 'die_on_bad_params' => 0 );
$template->output;
}
sub sixth {
my $self = shift;
my $session = $self->session;
my $template = $self->load_tmpl( 'output.TMPL', 'die_on_bad_params' => 0 );
$template->output;
}
sub cleanup {
my $self = shift;
$self->session->delete;
return "session deleted";
}
1;