def testCreateHotlist_Normal(self): request = features_pb2.CreateHotlistRequest( name='Fake-Hotlist', summary='Summary', description='Description', editor_refs=[ common_pb2.UserRef(user_id=222), common_pb2.UserRef(display_name='*****@*****.**')], issue_refs=[ common_pb2.IssueRef(project_name='proj', local_id=1), common_pb2.IssueRef(project_name='proj', local_id=2)], is_private=True) mc = monorailcontext.MonorailContext( self.services, cnxn=self.cnxn, requester='*****@*****.**') self.CallWrapped(self.features_svcr.CreateHotlist, mc, request) # Check that the hotlist was successfuly added. hotlist_id = self.services.features.LookupHotlistIDs( self.cnxn, ['Fake-Hotlist'], [111]).get(('fake-hotlist', 111)) hotlist = self.services.features.GetHotlist(self.cnxn, hotlist_id) self.assertEqual('Summary', hotlist.summary) self.assertEqual('Description', hotlist.description) self.assertEqual([111], hotlist.owner_ids) self.assertEqual([222, 333], hotlist.editor_ids) self.assertEqual( [self.issue_1.issue_id, self.issue_2.issue_id], [item.issue_id for item in hotlist.items]) self.assertTrue(hotlist.is_private)
def testAddIssuesToHotlists(self): # Create two hotlists hotlist_1 = self.services.features.CreateHotlist( self.cnxn, 'Hotlist-1', 'Summary', 'Description', owner_ids=[111], editor_ids=[]) hotlist_2 = self.services.features.CreateHotlist( self.cnxn, 'Hotlist-2', 'Summary', 'Description', owner_ids=[111], editor_ids=[]) # Add Issue 1 to both hotlists request = features_pb2.AddIssuesToHotlistsRequest( note='Foo', hotlist_refs=[ common_pb2.HotlistRef( name='Hotlist-1', owner=common_pb2.UserRef(user_id=111)), common_pb2.HotlistRef( name='Hotlist-2', owner=common_pb2.UserRef(user_id=111))], issue_refs=[ common_pb2.IssueRef(project_name='proj', local_id=1)]) mc = monorailcontext.MonorailContext( self.services, cnxn=self.cnxn, requester='*****@*****.**') self.CallWrapped(self.features_svcr.AddIssuesToHotlists, mc, request) self.assertEqual( [self.issue_1.issue_id], [item.issue_id for item in hotlist_1.items]) self.assertEqual( [self.issue_1.issue_id], [item.issue_id for item in hotlist_2.items]) self.assertEqual('Foo', hotlist_1.items[0].note) self.assertEqual('Foo', hotlist_2.items[0].note)
def ConvertIssueRef(issue_ref_pair, ext_id=''): """Convert (project_name, local_id) to an IssueRef protoc object. With optional external ref in ext_id. """ project_name, local_id = issue_ref_pair ref = common_pb2.IssueRef(project_name=project_name, local_id=local_id, ext_identifier=ext_id) return ref
def testListHotlistsByIssue_NoHotlists(self): issue_ref = common_pb2.IssueRef(project_name='proj', local_id=1) request = features_pb2.ListHotlistsByIssueRequest(issue=issue_ref) # We're authenticated as '*****@*****.**' mc = monorailcontext.MonorailContext( self.services, cnxn=self.cnxn, requester='*****@*****.**') response = self.CallWrapped(self.features_svcr.ListHotlistsByIssue, mc, request) self.assertEqual(0, len(response.hotlists))
def testListHotlistsByIssue_PrivateHotlistNoAccess(self): # Private hostlist owned by '*****@*****.**' hotlist = self.services.features.CreateHotlist( self.cnxn, 'Fake-Hotlist', 'Summary', 'Description', owner_ids=[111], editor_ids=[222], is_private=True) self.AddIssueToHotlist(hotlist.hotlist_id) issue_ref = common_pb2.IssueRef(project_name='proj', local_id=1) request = features_pb2.ListHotlistsByIssueRequest(issue=issue_ref) # We're authenticated as '*****@*****.**' mc = monorailcontext.MonorailContext( self.services, cnxn=self.cnxn, requester='*****@*****.**') response = self.CallWrapped(self.features_svcr.ListHotlistsByIssue, mc, request) self.assertEqual(0, len(response.hotlists))
def testListHotlistsByIssue_Empty(self): """There are no hotlists with the given issue.""" # Public hostlist owned by '*****@*****.**' self.services.features.CreateHotlist( self.cnxn, 'Fake-Hotlist', 'Summary', 'Description', owner_ids=[111], editor_ids=[222]) issue_ref = common_pb2.IssueRef(project_name='proj', local_id=1) request = features_pb2.ListHotlistsByIssueRequest(issue=issue_ref) # We're authenticated as '*****@*****.**' mc = monorailcontext.MonorailContext( self.services, cnxn=self.cnxn, requester='*****@*****.**') response = self.CallWrapped(self.features_svcr.ListHotlistsByIssue, mc, request) self.assertEqual(0, len(response.hotlists))
def testListHotlistsByIssue_Normal(self): hotlist = self.services.features.CreateHotlist( self.cnxn, 'Fake-Hotlist', 'Summary', 'Description', owner_ids=[111], editor_ids=[222]) self.AddIssueToHotlist(hotlist.hotlist_id) issue_ref = common_pb2.IssueRef(project_name='proj', local_id=1) request = features_pb2.ListHotlistsByIssueRequest(issue=issue_ref) mc = monorailcontext.MonorailContext( self.services, cnxn=self.cnxn, requester='*****@*****.**') response = self.CallWrapped(self.features_svcr.ListHotlistsByIssue, mc, request) self.assertEqual(1, len(response.hotlists)) hotlist = response.hotlists[0] self.assertEqual('Fake-Hotlist', hotlist.name)
def testUpdateHotlistIssueNote_NotAllowed(self): hotlist = self.services.features.CreateHotlist( self.cnxn, 'Hotlist-1', 'Summary', 'Description', owner_ids=[222], editor_ids=[]) self.services.features.AddIssuesToHotlists( self.cnxn, [hotlist.hotlist_id], [(self.issue_1.issue_id, 222, 0, '')], None, None, None) request = features_pb2.UpdateHotlistIssueNoteRequest( hotlist_ref=common_pb2.HotlistRef( name='Hotlist-1', owner=common_pb2.UserRef(user_id=222)), issue_ref=common_pb2.IssueRef( project_name='proj', local_id=1), note='Note') mc = monorailcontext.MonorailContext( self.services, cnxn=self.cnxn, requester='*****@*****.**') with self.assertRaises(permissions.PermissionException): self.CallWrapped(self.features_svcr.UpdateHotlistIssueNote, mc, request)
def testRemoveIssuesFromHotlists(self): # Create two hotlists with issues 1 and 2. hotlist_1 = self.services.features.CreateHotlist( self.cnxn, 'Hotlist-1', 'Summary', 'Description', owner_ids=[111], editor_ids=[]) hotlist_2 = self.services.features.CreateHotlist( self.cnxn, 'Hotlist-2', 'Summary', 'Description', owner_ids=[111], editor_ids=[]) self.services.features.AddIssuesToHotlists( self.cnxn, [hotlist_1.hotlist_id, hotlist_2.hotlist_id], [(self.issue_1.issue_id, 111, 0, ''), (self.issue_2.issue_id, 111, 0, '')], None, None, None) # Remove Issue 1 from both hotlists. request = features_pb2.RemoveIssuesFromHotlistsRequest( hotlist_refs=[ common_pb2.HotlistRef( name='Hotlist-1', owner=common_pb2.UserRef(user_id=111)), common_pb2.HotlistRef( name='Hotlist-2', owner=common_pb2.UserRef(user_id=111))], issue_refs=[ common_pb2.IssueRef(project_name='proj', local_id=1)]) mc = monorailcontext.MonorailContext( self.services, cnxn=self.cnxn, requester='*****@*****.**') self.CallWrapped(self.features_svcr.RemoveIssuesFromHotlists, mc, request) # Only Issue 2 should remain in both lists. self.assertEqual( [self.issue_2.issue_id], [item.issue_id for item in hotlist_1.items]) self.assertEqual( [self.issue_2.issue_id], [item.issue_id for item in hotlist_2.items])
def testUpdateHotlistIssueNote(self): hotlist = self.services.features.CreateHotlist( self.cnxn, 'Hotlist-1', 'Summary', 'Description', owner_ids=[111], editor_ids=[]) self.services.features.AddIssuesToHotlists( self.cnxn, [hotlist.hotlist_id], [(self.issue_1.issue_id, 111, 0, '')], None, None, None) request = features_pb2.UpdateHotlistIssueNoteRequest( hotlist_ref=common_pb2.HotlistRef( name='Hotlist-1', owner=common_pb2.UserRef(user_id=111)), issue_ref=common_pb2.IssueRef( project_name='proj', local_id=1), note='Note') mc = monorailcontext.MonorailContext( self.services, cnxn=self.cnxn, requester='*****@*****.**') self.CallWrapped(self.features_svcr.UpdateHotlistIssueNote, mc, request) self.assertEqual('Note', hotlist.items[0].note)