From 381ce45c1a4f36e472802c2c1b56dabe2061b13d Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Thu, 21 Sep 2006 03:06:04 +0000 Subject: [PATCH] Add 7 tests to Session/Var.t. Some of them are redundant. That will be fixed later. Added lots of comments to start and new subs. Changed db methods to use placeholders. Changed timely data to call time once so that they all match. --- lib/WebGUI/Session/Var.pm | 23 ++++++++++++----------- t/Session/Var.t | 29 +++++++++++++++++++++++++---- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/lib/WebGUI/Session/Var.pm b/lib/WebGUI/Session/Var.pm index 1c13ff2a9..a49881aff 100644 --- a/lib/WebGUI/Session/Var.pm +++ b/lib/WebGUI/Session/Var.pm @@ -71,7 +71,7 @@ Removes the specified user session from memory and database. sub end { my $self = shift; $self->session->scratch->deleteAll; - $self->session->db->write("delete from userSession where sessionId=".$self->session->db->quote($self->getId)); + $self->session->db->write("delete from userSession where sessionId=?",[$self->getId]); delete $self->session->{_user}; $self->DESTROY; } @@ -171,21 +171,21 @@ sub new { my $self = bless {_session=>$session}, $class; my $sessionId = shift; my $noFuss = shift; - if ($sessionId eq "") { + if ($sessionId eq "") { ##New session $self->start(1); - } else { + } else { ##existing session requested $self->{_var} = $session->db->quickHashRef("select * from userSession where sessionId=?",[$sessionId]); return $self if $noFuss && $self->{_var}{sessionId}; - if ($self->{_var}{expires} && $self->{_var}{expires} < $session->datetime->time()) { + if ($self->{_var}{expires} && $self->{_var}{expires} < $session->datetime->time()) { ##Session expired, start a new one with the same Id $self->end; $self->start(1,$sessionId); - } elsif ($self->{_var}{sessionId} ne "") { + } elsif ($self->{_var}{sessionId} ne "") { ##Fetched an existing session. Update variables with recent data. $self->{_var}{lastPageView} = $session->datetime->time(); $self->{_var}{lastIP} = $session->env->getIp; $self->{_var}{expires} = $session->datetime->time() + $session->setting->get("sessionTimeout"); $self->session->{_sessionId} = $self->{_var}{sessionId}; $session->db->setRow("userSession","sessionId",$self->{_var}); - } else { + } else { ##Start a new session with the requested id. $self->start(1,$sessionId); } } @@ -229,12 +229,13 @@ sub start { $userId = 1 if ($userId eq ""); my $sessionId = shift; $sessionId = $self->session->id->generate if ($sessionId eq ""); + my $time = $self->session->datetime->time(); $self->{_var} = { - expires=>$self->session->datetime->time() + $self->session->setting->get("sessionTimeout"), - lastPageView=>$self->session->datetime->time(), - lastIP => $self->session->env->getIp, - adminOn => 0, - userId => $userId + expires => $time + $self->session->setting->get("sessionTimeout"), + lastPageView => $time, + lastIP => $self->session->env->getIp, + adminOn => 0, + userId => $userId }; $self->{_var}{sessionId} = $sessionId; $self->session->db->setRow("userSession","sessionId",$self->{_var},$sessionId); diff --git a/t/Session/Var.t b/t/Session/Var.t index 9c2dcea16..4de05b7f8 100644 --- a/t/Session/Var.t +++ b/t/Session/Var.t @@ -14,14 +14,14 @@ use lib "$FindBin::Bin/../lib"; use WebGUI::Test; use WebGUI::Session; +use WebGUI::Session::Var; -use Test::More tests => 6; # increment this value for each test you create +use Test::More tests => 19; # increment this value for each test you create my $session = WebGUI::Test->session; - ok($session->var->getId ne "", "getId()"); -ok($session->var->get("lastPageView") > 0, "get()"); +cmp_ok($session->var->get("lastPageView"), '>', 0, "get(lastPageView)"); is($session->var->isAdminOn, 0, "isAdminOn()"); $session->var->switchAdminOn; is($session->var->isAdminOn, 1, "switchAdminOn()"); @@ -29,5 +29,26 @@ $session->var->switchAdminOff; is($session->var->isAdminOn, 0, "switchAdminOff()"); my $id = $session->var->getId; $session->var->end; -my ($count) = $session->db->quickArray("select count(*) from userSession where sessionId=".$session->db->quote($id)); +my ($count) = $session->db->quickArray("select count(*) from userSession where sessionId=?",[$id]); ok($count == 0,"end()"); + +my $varTime = time(); +my $varExpires = $varTime + $session->setting->get('sessionTimeout'); +my $var = WebGUI::Session::Var->new($session); +isa_ok($var, 'WebGUI::Session::Var', 'new returns Var object'); +is($var->get('userId'), 1, 'default userId is 1'); +is($var->get('sessionId'), $var->getId, "get('sessionId') and getId return the same thing"); +isnt($var->getId, $session->var->getId, 'a new, unique sessionId was created'); +is($var->get('adminOn'), $var->isAdminOn, "get('adminOn') and isAdminOn return the same thing"); +is($var->get('adminOn'), 0, "adminOn is off by default"); ##retest +cmp_ok(abs($var->get('lastPageView') - $varTime), '<=', 1, 'lastPageView set correctly'); +cmp_ok(abs($var->get('expires') - $varExpires), '<=', 1, 'expires set correctly'); + +TODO: { + local $TODO = "Stuff to write later"; + ok(0, 'check fetching a particular sessionId'); + ok(0, 'check fetching a non-existant sessionId'); + ok(0, 'check setting a particular userId'); + ok(0, 'check setting a non-existant userId'); + ok(0, 'check that lastIp was set correctly'); +}