From 5ec8690e53819eeba78e0da9ea232acb2ca111e5 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Sat, 18 Mar 2006 00:18:31 +0000 Subject: [PATCH] More user testing, for addToGroup. Also, make sure that the test for ipFilter always cleans up after itself. Fix a bug where Operation::User::_submenu was still using form->process. Switched to using stow instead. If the uid is "new", links for delete and become user are not shown anymore. --- docs/changelog/6.x.x.txt | 2 ++ lib/WebGUI/Operation/User.pm | 13 ++++++++----- t/User.t | 35 ++++++++++++++++++++++++----------- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/docs/changelog/6.x.x.txt b/docs/changelog/6.x.x.txt index a94f99e58..1c697ea18 100644 --- a/docs/changelog/6.x.x.txt +++ b/docs/changelog/6.x.x.txt @@ -66,6 +66,8 @@ - fix [ 1442942 ] 6.99: listLDAPLinks broken - fix [ 1430276 ] 6.9: Can't kill active sessions - fix [ 1429389 ] 6.9: "1" appended to HTML + - fix [ 1433508 ] 6.9: isInGroup does not work correctly + - fix a bug where a link was provided to become or delete non-existant users. 6.8.8 - fix [ 1423434 ] 6.8.5 - Versioning - users can see uncommitted data diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm index 44248764b..a131acad1 100644 --- a/lib/WebGUI/Operation/User.pm +++ b/lib/WebGUI/Operation/User.pm @@ -71,16 +71,18 @@ sub _submenu { } if ($session->user->isInGroup(3)) { unless ($session->form->process("op") eq "listUsers" - || $session->form->process("op") eq "deleteUserConfirm") { - $ac->addSubmenuItem($session->url->page("op=editUser;uid=".$session->form->process("uid")), $i18n->get(457)); - $ac->addSubmenuItem($session->url->page('op=becomeUser;uid='.$session->form->process("uid")), $i18n->get(751)); - $ac->addSubmenuItem($session->url->page('op=deleteUser;uid='.$session->form->process("uid")), $i18n->get(750)); + || $session->form->process("op") eq "deleteUserConfirm" + || $session->stow->get("editUser_UID") eq "new") { + $ac->addSubmenuItem($session->url->page("op=editUser;uid=".$session->stow->get("editUser_UID")), $i18n->get(457)); + $ac->addSubmenuItem($session->url->page('op=becomeUser;uid='.$session->stow->get("editUser_UID")), $i18n->get(751)); + $ac->addSubmenuItem($session->url->page('op=deleteUser;uid='.$session->stow->get("editUser_UID")), $i18n->get(750)); if ($session->setting->get("useKarma")) { - $ac->addSubmenuItem($session->url->page("op=editUserKarma;uid=".$session->form->process("uid")), $i18n->get(555)); + $ac->addSubmenuItem($session->url->page("op=editUserKarma;uid=".$session->stow->get("editUser_UID")), $i18n->get(555)); } } $ac->addSubmenuItem($session->url->page("op=listUsers"), $i18n->get(456)); } + $session->stow->delete("editUser_UID"); return $ac->render($workarea, $title); } @@ -297,6 +299,7 @@ sub www_editUser { my $tabform = WebGUI::TabForm->new($session,\%tabs); my $u = WebGUI::User->new($session,($uid eq 'new') ? '' : $uid); #Setting uid to '' when uid is 'new' so visitor defaults prefill field for new user + $session->stow->set("editUser_UID", $uid); $session->style->setScript($session->config->get("extrasURL")."/swapLayers.js", {type=>"text/javascript"}); $session->style->setRawHeadTags(''); $tabform->hidden({name=>"op",value=>"editUserSave"}); diff --git a/t/User.t b/t/User.t index 6ec5a10b8..2b22301c4 100644 --- a/t/User.t +++ b/t/User.t @@ -17,7 +17,7 @@ use WebGUI::Session; use WebGUI::Utility; use WebGUI::User; -use Test::More tests => 60; # increment this value for each test you create +use Test::More tests => 65; # increment this value for each test you create my $session = WebGUI::Test->session; @@ -79,7 +79,7 @@ my $oldKarma = $user->karma; $user->karma('69', 'peter gibbons', 'test karma'); is($user->karma, $oldKarma+69, 'karma() -- get/set add amount'); -my ($source, $description) = $session->db->quickArray("select source, description from karmaLog where userId=".$session->db->quote($user->userId)); +my ($source, $description) = $session->db->quickArray("select source, description from karmaLog where userId=?",[$user->userId]); is($source, 'peter gibbons', 'karma() -- get/set source'); is($description, 'test karma', 'karma() -- get/set description'); @@ -98,32 +98,32 @@ is($user->lastUpdated, $lastUpdate, 'lastUpdated() -- referringAffiliate'); my @groups = qw|2 4|; $user->addToGroups(\@groups); -my ($result) = $session->db->quickArray("select count(*) from groupings where groupId=".$session->db->quote('2')." and userId=".$session->db->quote($user->userId)); +my ($result) = $session->db->quickArray("select count(*) from groupings where groupId=? and userId=?", [2, $user->userId]); ok($result, 'addToGroups() -- added to first test group'); -($result) = $session->db->quickArray("select count(*) from groupings where groupId=".$session->db->quote('4')." and userId=".$session->db->quote($user->userId)); +($result) = $session->db->quickArray("select count(*) from groupings where groupId=? and userId=?", [4, $user->userId]); ok($result, 'addToGroups() -- added to second test group'); #Let's delete this user from our test groups $user->deleteFromGroups(\@groups); -($result) = $session->db->quickArray("select count(*) from groupings where groupId=".$session->db->quote('2')." and userId=".$session->db->quote($user->userId)); +my ($result) = $session->db->quickArray("select count(*) from groupings where groupId=? and userId=?", [2, $user->userId]); is($result, '0', 'deleteFromGroups() -- removed from first test group'); -($result) = $session->db->quickArray("select count(*) from groupings where groupId=".$session->db->quote('4')." and userId=".$session->db->quote($user->userId)); +my ($result) = $session->db->quickArray("select count(*) from groupings where groupId=? and userId=?", [4, $user->userId]); is($result, '0', 'deleteFromGroups() -- removed from second test group'); #Let's delete this user my $userId = $user->userId; $user->delete; -my ($count) = $session->db->quickArray("select count(*) from users where userId=".$session->db->quote($userId)); +my ($count) = $session->db->quickArray("select count(*) from users where userId=?",[$userId]); is($count, '0', 'delete() -- users table'); -($count) = $session->db->quickArray("select count(*) from userProfileData where userId=".$session->db->quote($userId)); +($count) = $session->db->quickArray("select count(*) from userProfileData where userId=?",[$userId]); is($count, '0', 'delete() -- userProfileData table'); -($count) = $session->db->quickArray("select count(*) from messageLog where userId=".$session->db->quote($userId)); +($count) = $session->db->quickArray("select count(*) from messageLog where userId=?",[$userId]); is($count, '0', 'delete() -- messageLog table'); #Let's test new with an override uid @@ -151,7 +151,7 @@ my $oldKarma = $user->karma; $user->karma('69', 'peter gibbons', 'test karma'); is($user->karma, $oldKarma+69, 'karma() -- get/set add amount'); -my ($source, $description) = $session->db->quickArray("select source, description from karmaLog where userId=".$session->db->quote($user->userId)); +my ($source, $description) = $session->db->quickArray("select source, description from karmaLog where userId=?",[$user->userId]); is($source, 'peter gibbons', 'karma() -- get/set source'); is($description, 'test karma', 'karma() -- get/set description'); @@ -242,4 +242,17 @@ $env->{_env}->{"REMOTE_ADDR"} = '193.168.0.101'; ok (!$visitor->isInGroup($cm->getId), "Visitor is not allowed in via IP"); ##Restore original filter -$cm->ipFilter($origFilter); +$cm->ipFilter(defined $origFilter ? $origFilter : ''); + +##Test for group membership +$user = WebGUI::User->new($session, "new"); + +$user->addToGroups([3]); + +ok($user->isInGroup(3), "New user is in group 3(Admin)"); +ok($user->isInGroup(11), "New user is in group 11(Secondary Admins)"); +ok($user->isInGroup(12), "New user is in group 12(Turn On Admin)"); +ok($user->isInGroup(13), "New user is in group 13(Turn On Admin)"); +ok($user->isInGroup(14), "New user is in group 14(Product Managers)"); + +$user->delete;