Esempio n. 1
0
  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)
Esempio n. 2
0
    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))
Esempio n. 3
0
  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
Esempio n. 4
0
    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))
Esempio n. 5
0
  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])
Esempio n. 6
0
 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)
Esempio n. 7
0
 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
Esempio n. 10
0
    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))
Esempio n. 13
0
  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
Esempio n. 17
0
 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 = '*****@*****.**'
Esempio n. 18
0
 def setUp(self):
     self.project = project_pb2.Project()
     self.project.project_name = 'proj'
     self.project.owner_ids = [111L]
     self.config = tracker_pb2.ProjectIssueConfig()