[Rt-commit] r2609 - in rt/branches/3.4-RELEASE/lib: RT t/regression

tla at bestpractical.com tla at bestpractical.com
Tue Apr 12 15:59:07 EDT 2005


Author: tla
Date: Tue Apr 12 15:59:07 2005
New Revision: 2609

Modified:
   rt/branches/3.4-RELEASE/lib/RT/SavedSearch.pm
   rt/branches/3.4-RELEASE/lib/RT/SavedSearches.pm
   rt/branches/3.4-RELEASE/lib/t/regression/20savedsearch.t
Log:
Made SavedSearches work, added error messages to SavedSearch, updated tests


Modified: rt/branches/3.4-RELEASE/lib/RT/SavedSearch.pm
==============================================================================
--- rt/branches/3.4-RELEASE/lib/RT/SavedSearch.pm	(original)
+++ rt/branches/3.4-RELEASE/lib/RT/SavedSearch.pm	Tue Apr 12 15:59:07 2005
@@ -109,7 +109,7 @@
 			       . " for object " . $privacy);
 	}
     } else {
-	$RT::Logger->error("Could not find object $privacy when loading search");
+	$RT::Logger->error("Could not load object $privacy when loading search");
     }
 
 }
@@ -265,13 +265,16 @@
     # Do not allow the loading of a user object other than the current
     # user, or of a group object of which the current user is not a member.
 
-    if ($obj_type eq 'RT::User') {
-	return undef 
-	    unless $object->Id == $self->CurrentUser->UserObj->Id();
-    }
-    if ($obj_type eq 'RT::Group') {
-	return undef unless 
-	    $object->HasMemberRecursively($self->CurrentUser->PrincipalObj);
+    if ($obj_type eq 'RT::User' 
+	&& $object->Id != $self->CurrentUser->UserObj->Id()) {
+	$RT::Logger->error("Permission denied for user other than self");
+	return undef;
+    }
+    if ($obj_type eq 'RT::Group' &&
+	!$object->HasMemberRecursively($self->CurrentUser->PrincipalObj)) {
+	$RT::Logger->error("Permission denied, ".$self->CurrentUser->Name.
+			   " is not a member of group");
+	return undef;
     }
 
     return $object;

Modified: rt/branches/3.4-RELEASE/lib/RT/SavedSearches.pm
==============================================================================
--- rt/branches/3.4-RELEASE/lib/RT/SavedSearches.pm	(original)
+++ rt/branches/3.4-RELEASE/lib/RT/SavedSearches.pm	Tue Apr 12 15:59:07 2005
@@ -99,7 +99,7 @@
 
 =cut
 
-sub Limit {
+sub LimitToPrivacy {
     my $self = shift;
     my $privacy = shift;
     my $type = shift;

Modified: rt/branches/3.4-RELEASE/lib/t/regression/20savedsearch.t
==============================================================================
--- rt/branches/3.4-RELEASE/lib/t/regression/20savedsearch.t	(original)
+++ rt/branches/3.4-RELEASE/lib/t/regression/20savedsearch.t	Tue Apr 12 15:59:07 2005
@@ -6,6 +6,7 @@
 use RT::Queue;
 
 use_ok(RT::SavedSearch);
+use_ok(RT::SavedSearches);
 
 RT::LoadConfig();
 RT::Init();
@@ -154,5 +155,20 @@
 is($loadedsearch1->Type, 'Ticket', "mysearch is still for tickets");
 is($loadedsearch1->Privacy, 'RT::User-'.$curruser->Id,
    "mysearch still belongs to searchuser");
-is($mysearch->GetParameter('Query'), qr/Queue/, 
-   "other mysearch object updated");
+like($mysearch->GetParameter('Query'), qr/Queue/, "other mysearch object updated");
+
+
+## Right ho.  Test the pseudo-collection object.
+
+my $genericsearch = RT::SavedSearch->new($curruser);
+$genericsearch->Save(Name => 'generic search',
+		     Type => 'all',
+		     SearchParams => {'Query' => "Queue = 'General'"});
+
+my $ticketsearches = RT::SavedSearches->new($curruser);
+$ticketsearches->LimitToPrivacy('RT::User-'.$curruser->Id, 'Ticket');
+is($ticketsearches->Count, 1, "Found searchuser's ticket searches");
+
+my $allsearches = RT::SavedSearches->new($curruser);
+$allsearches->LimitToPrivacy('RT::User-'.$curruser->Id);
+is($allsearches->Count, 2, "Found all searchuser's searches");


More information about the Rt-commit mailing list