def testBuildRestrictionChoices(self): project = project_pb2.Project() choices = issueoptions._BuildRestrictionChoices(project, [], []) self.assertEquals([], choices) choices = issueoptions._BuildRestrictionChoices( project, [], ['Hop', 'Jump']) self.assertEquals([], choices) freq = [('View', 'B', 'You need permission B to do anything'), ('A', 'B', 'You need B to use A')] choices = issueoptions._BuildRestrictionChoices(project, freq, []) expected = [dict(name='Restrict-View-B', doc='You need permission B to do anything'), dict(name='Restrict-A-B', doc='You need B to use A')] self.assertListEqual(expected, choices) extra_perms = project_pb2.Project.ExtraPerms( perms=['Over18', 'Over21']) project.extra_perms.append(extra_perms) choices = issueoptions._BuildRestrictionChoices( project, [], ['Drink', 'Smoke']) expected = [dict(name='Restrict-Drink-Over18', doc='Permission Over18 needed to use Drink'), dict(name='Restrict-Drink-Over21', doc='Permission Over21 needed to use Drink'), dict(name='Restrict-Smoke-Over18', doc='Permission Over18 needed to use Smoke'), dict(name='Restrict-Smoke-Over21', doc='Permission Over21 needed to use Smoke')] self.assertListEqual(expected, choices)
def testValidateReferencesHeader(self): project = project_pb2.Project() project.project_name = 'open-open' subject = 'slipped disk' expected = emailfmt.MakeMessageID( '*****@*****.**', subject, '%s@%s' % (project.project_name, emailfmt.MailDomain())) self.assertTrue( emailfmt.ValidateReferencesHeader(expected, project, '*****@*****.**', subject)) self.assertFalse( emailfmt.ValidateReferencesHeader(expected, project, '*****@*****.**', 'something else')) self.assertFalse( emailfmt.ValidateReferencesHeader(expected, project, '*****@*****.**', subject)) project.project_name = 'other-project' self.assertFalse( emailfmt.ValidateReferencesHeader(expected, project, '*****@*****.**', subject))
def _DeserializeProjects( self, project_rows, role_rows, extraperm_rows): """Convert database rows into a dictionary of Project PB keyed by ID.""" project_dict = {} for project_row in project_rows: (project_id, project_name, summary, description, state_name, access_name, read_only_reason, state_reason, delete_time, issue_notify_address, attachment_bytes_used, attachment_quota, cct, recent_activity_timestamp, moved_to, process_inbound_email, oorr, oosc, revision_url_format, home_page, docs_url, source_url, logo_gcs_id, logo_file_name) = project_row project = project_pb2.Project() project.project_id = project_id project.project_name = project_name project.summary = summary project.description = description project.state = project_pb2.ProjectState(state_name.upper()) project.state_reason = state_reason or '' project.access = project_pb2.ProjectAccess(access_name.upper()) project.read_only_reason = read_only_reason or '' project.issue_notify_address = issue_notify_address or '' project.attachment_bytes_used = attachment_bytes_used or 0 project.attachment_quota = attachment_quota project.recent_activity = recent_activity_timestamp or 0 project.cached_content_timestamp = cct or 0 project.delete_time = delete_time or 0 project.moved_to = moved_to or '' project.process_inbound_email = bool(process_inbound_email) project.only_owners_remove_restrictions = bool(oorr) project.only_owners_see_contributors = bool(oosc) project.revision_url_format = revision_url_format or '' project.home_page = home_page or '' project.docs_url = docs_url or '' project.source_url = source_url or '' project.logo_gcs_id = logo_gcs_id or '' project.logo_file_name = logo_file_name or '' project_dict[project_id] = project for project_id, user_id, role_name in role_rows: project = project_dict[project_id] if role_name == 'owner': project.owner_ids.append(user_id) elif role_name == 'committer': project.committer_ids.append(user_id) elif role_name == 'contributor': project.contributor_ids.append(user_id) perms = {} for project_id, user_id, perm in extraperm_rows: perms.setdefault(project_id, {}).setdefault(user_id, []).append(perm) for project_id, perms_by_user in perms.items(): project = project_dict[project_id] project.extra_perms_are_sorted = True for user_id, extra_perms in sorted(perms_by_user.items()): project.extra_perms.append(project_pb2.Project.ExtraPerms( member_id=user_id, perms=extra_perms)) return project_dict
def testRestrictedProject(self): proj = project_pb2.Project() mr = testing_helpers.MakeMonorailRequest() mr.project = proj proj.state = project_pb2.ProjectState.LIVE proj.access = project_pb2.ProjectAccess.MEMBERS_ONLY self.assertTrue(servlet._ProjectIsRestricted(mr))
def testAllProjectMembers(self): p = project_pb2.Project() self.assertEqual(framework_bizobj.AllProjectMembers(p), []) p.owner_ids.extend([1, 2, 3]) p.committer_ids.extend([4, 5, 6]) p.contributor_ids.extend([7, 8, 9]) self.assertEqual(framework_bizobj.AllProjectMembers(p), [1, 2, 3, 4, 5, 6, 7, 8, 9])
def testNoAccessToProject(self): project = project_pb2.Project() project.project_name = 'proj' project.access = project_pb2.ProjectAccess.MEMBERS_ONLY _, mr = testing_helpers.GetRequestObjects(path='/p/proj/', project=project) mr.perms = permissions.EMPTY_PERMISSIONSET self.assertRaises(permissions.PermissionException, servlet_helpers.AssertBasePermission, mr)
def setUp(self): self.project = project_pb2.Project() self.project.project_name = 'proj' self.config = tracker_pb2.ProjectIssueConfig() self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_user_stub() self.testbed.init_memcache_stub() self.testbed.init_datastore_v3_stub()
def setUp(self): self.alice_view = framework_views.StuffUserView(111L, 'alice', True) self.bob_view = framework_views.StuffUserView(222L, 'bob', True) self.carol_view = framework_views.StuffUserView(333L, 'carol', True) self.project = project_pb2.Project() self.project.project_name = 'proj' self.project.owner_ids.append(111L) self.project.committer_ids.append(222L) self.project.contributor_ids.append(333L)
def setUp(self): project = project_pb2.Project() project.owner_ids.append(111) project.committer_ids.append(222) project.contributor_ids.append(333) project.contributor_ids.append(888) user = user_pb2.User() user.is_site_admin = False self.mr = monorailrequest.MonorailRequest(None) self.mr.project = project self.mr.auth.user_pb = user
def testNonRestrictedProject(self): proj = project_pb2.Project() mr = testing_helpers.MakeMonorailRequest() mr.project = proj proj.access = project_pb2.ProjectAccess.ANYONE proj.state = project_pb2.ProjectState.LIVE self.assertFalse(servlet._ProjectIsRestricted(mr)) proj.state = project_pb2.ProjectState.ARCHIVED self.assertFalse(servlet._ProjectIsRestricted(mr))
def testIssueCommentURL(self): hostport = 'port.someplex.com' proj = project_pb2.Project() proj.project_name = 'proj' url = 'https://port.someplex.com/p/proj/issues/detail?id=2' actual_url = framework_helpers.IssueCommentURL(hostport, proj, 2) self.assertEqual(actual_url, url) url = 'https://port.someplex.com/p/proj/issues/detail?id=2#c2' actual_url = framework_helpers.IssueCommentURL(hostport, proj, 2, seq_num=2) self.assertEqual(actual_url, url)
def testGetRoleName(self): proj = project_pb2.Project() proj.owner_ids.append(111) proj.committer_ids.append(222) proj.contributor_ids.append(333) self.assertEquals(None, framework_helpers.GetRoleName(set(), proj)) self.assertEquals('Owner', framework_helpers.GetRoleName({111}, proj)) self.assertEquals('Committer', framework_helpers.GetRoleName({222}, proj)) self.assertEquals('Contributor', framework_helpers.GetRoleName({333}, proj)) self.assertEquals('Owner', framework_helpers.GetRoleName({111, 222, 999}, proj)) self.assertEquals('Committer', framework_helpers.GetRoleName({222, 333, 999}, proj)) self.assertEquals('Contributor', framework_helpers.GetRoleName({333, 999}, proj))
def testUserIsInProject(self): p = project_pb2.Project() self.assertFalse(framework_bizobj.UserIsInProject(p, {10})) self.assertFalse(framework_bizobj.UserIsInProject(p, set())) p.owner_ids.extend([1, 2, 3]) p.committer_ids.extend([4, 5, 6]) p.contributor_ids.extend([7, 8, 9]) self.assertTrue(framework_bizobj.UserIsInProject(p, {1})) self.assertTrue(framework_bizobj.UserIsInProject(p, {4})) self.assertTrue(framework_bizobj.UserIsInProject(p, {7})) self.assertFalse(framework_bizobj.UserIsInProject(p, {10})) # Membership via group membership self.assertTrue(framework_bizobj.UserIsInProject(p, {10, 4})) # Membership via several group memberships self.assertTrue(framework_bizobj.UserIsInProject(p, {1, 4})) # Several irrelevant group memberships self.assertFalse(framework_bizobj.UserIsInProject(p, {10, 11, 12}))
def testGatherHelpData(self): project = project_pb2.Project() mr = testing_helpers.MakeMonorailRequest(project=project) # Users not near the lifetime limit see no cue card. help_data = self.servlet.GatherHelpData(mr, {}) self.assertEqual(None, help_data['cue_remaining_projects']) # User who is near the lifetime limit will see a cue card. mr.auth.user_pb.project_creation_limit.lifetime_count = 20 help_data = self.servlet.GatherHelpData(mr, {}) self.assertEqual(5, help_data['cue_remaining_projects']) # User far under custom lifetime limit won't see a cue card. mr.auth.user_pb.project_creation_limit.lifetime_limit = 100 mr.auth.user_pb.project_creation_limit.lifetime_count = 20 help_data = self.servlet.GatherHelpData(mr, {}) self.assertEqual(None, help_data['cue_remaining_projects']) # User near custom lifetime limit will see a cue card. mr.auth.user_pb.project_creation_limit.lifetime_limit = 100 mr.auth.user_pb.project_creation_limit.lifetime_count = 91 help_data = self.servlet.GatherHelpData(mr, {}) self.assertEqual(9, help_data['cue_remaining_projects'])
def testGetRoleName(self): proj = project_pb2.Project() proj.owner_ids.append(111L) proj.committer_ids.append(222L) proj.contributor_ids.append(333L) self.assertEquals(None, framework_helpers.GetRoleName(set(), proj)) self.assertEquals( 'Owner', framework_helpers.GetRoleName({111L}, proj)) self.assertEquals( 'Committer', framework_helpers.GetRoleName({222L}, proj)) self.assertEquals( 'Contributor', framework_helpers.GetRoleName({333L}, proj)) self.assertEquals( 'Owner', framework_helpers.GetRoleName({111L, 222L, 999L}, proj)) self.assertEquals( 'Committer', framework_helpers.GetRoleName({222L, 333L, 999L}, proj)) self.assertEquals( 'Contributor', framework_helpers.GetRoleName({333L, 999L}, proj))
def setUp(self): self.project_1 = project_pb2.Project() self.project_2 = project_pb2.Project() self.project_archived = project_pb2.Project() self.project_archived.state = project_pb2.ProjectState.ARCHIVED
def setUp(self): self.project = project_pb2.Project(project_name='monorail') self.old_send_email_as = settings.send_email_as settings.send_email_as = '*****@*****.**' self.old_send_noreply_email_as = settings.send_noreply_email_as settings.send_noreply_email_as = '*****@*****.**'
def setUp(self): self.project = project_pb2.Project() self.project.project_name = 'proj' self.project.owner_ids = [111L] self.config = tracker_pb2.ProjectIssueConfig()