#!/usr/bin/perl
use strict;
use warnings;
use lib qw(t);
use CGI::Util;
use Test::More;
eval "use CGI::Application::Plugin::Session";
plan skip_all => "CGI::Application::Plugin::Session required for this test" if $@;
plan tests => 14;
{
package TestAppStoreSession;
use base qw(TestAppStore);
CGI::Application::Plugin::Session->import; # was loaded conditionally above
__PACKAGE__->authen->config(
DRIVER => [ 'Generic', { 'test' => '123' } ],
STORE => [ 'Session' ],
CREDENTIALS => [qw(auth_username auth_password)],
);
sub get_store_entries {
my $class = shift;
my $cgiapp = shift;
my $results = shift;
my $data = {
username => $cgiapp->session->param('AUTH_USERNAME'),
login_attempts => $cgiapp->session->param('AUTH_LOGIN_ATTEMPTS'),
};
return ($data->{username} || $data->{login_attempts}) ? $data : undef;
}
sub maintain_state {
my $class = shift;
my $old_cgiapp = shift;
my $old_results = shift;
my $new_query = shift;
$old_cgiapp->session->flush;
$new_query->param(-name => CGI::Session->name, -value => $old_cgiapp->session->id, -override => 1);
}
sub clear_state {
my $class = shift;
my $old_cgiapp = shift;
my $old_results = shift;
$old_cgiapp->session->clear(['AUTH_USERNAME','AUTH_LOGIN_ATTEMPTS']),
$old_cgiapp->session->flush;
$class->SUPER::clear_state(@_);
}
}
TestAppStoreSession->run_store_tests;