#------------------------------------------------------------------- # WebGUI is Copyright 2001-2009 Plain Black Corporation. #------------------------------------------------------------------- # Please read the legal notices (docs/legal.txt) and the license # (docs/license.txt) that came with this distribution before using # this software. #------------------------------------------------------------------- # http://www.plainblack.com info@plainblack.com #------------------------------------------------------------------- use FindBin; use strict; use lib "$FindBin::Bin/../../lib"; use WebGUI::Test; use WebGUI::Session; use WebGUI::Utility; use WebGUI::Workflow::Activity::DeleteExpiredSessions; use Test::More; plan tests => 7; # increment this value for each test you create my $session = WebGUI::Test->session; my $workflow = WebGUI::Workflow->create($session, { enabled => 1, objectType => 'None', mode => 'realtime', }, ); WebGUI::Test->addToCleanup($workflow); my $activity = $workflow->addActivity('WebGUI::Workflow::Activity::DeleteExpiredSessions'); my $instance1 = WebGUI::Workflow::Instance->create($session, { workflowId => $workflow->getId, skipSpectreNotification => 1, } ); my $retVal; $retVal = $instance1->run(); is($retVal, 'complete', 'cleanup: activity complete'); $retVal = $instance1->run(); is($retVal, 'done', 'cleanup: activity is done'); $instance1->delete('skipNotify'); my $origSessionTimeout = $session->setting->get('sessionTimeout'); my $sessionCount = $session->db->quickScalar('select count(*) from userSession'); my $scratchCount = $session->db->quickScalar('select count(*) from userSessionScratch'); my @sessions; foreach (1..2) { push @sessions, WebGUI::Session->open(WebGUI::Test->root, WebGUI::Test->file); } ##Force automatic expiration of the sessions $session->setting->set('sessionTimeout', -500); foreach (1..2) { push @sessions, WebGUI::Session->open(WebGUI::Test->root, WebGUI::Test->file); } $session->setting->set('sessionTimeout', $origSessionTimeout ); my $newSessionCount = $session->db->quickScalar('select count(*) from userSession'); my $newScratchCount = $session->db->quickScalar('select count(*) from userSessionScratch'); is ($newSessionCount, $sessionCount+4, 'all new sessions created correctly'); is ($newScratchCount, $scratchCount+4, 'all new user sessions created correctly'); my $instance2 = WebGUI::Workflow::Instance->create($session, { workflowId => $workflow->getId, skipSpectreNotification => 1, } ); WebGUI::Test->addToCleanup($instance2); my $counter = 0; PAUSE: while ($retVal = $instance2->run()) { last PAUSE if $retVal eq 'done'; last PAUSE if $counter > 6; #Emergency exit clause } is($retVal, 'done', 'Workflow completed successfully'); $newSessionCount = $session->db->quickScalar('select count(*) from userSession'); $newScratchCount = $session->db->quickScalar('select count(*) from userSessionScratch'); is ($newSessionCount, $sessionCount+2, 'two of the sessions were deleted'); is ($newScratchCount, $scratchCount+2, 'scratch from both sessions cleaned up'); foreach my $testSession (@sessions) { $testSession->var->end; $testSession->close; } ##Add 4 sessions: ## 1) Active session ## 2) Active session with scratch ## 3) Expired session ## 4) Expired session with scratch ## ## run deleteExpiredSessions ## Make sure that the two session were kept and the other two deleted. ## Make sure that one scratch session was deleted and the other kept. ## Close and end all four sessions #vim:ft=perl