Ejemplo n.º 1
0
    def testParseProjectAccess_AllowedChoice(self):
        project = project_pb2.MakeProject('proj')
        access = project_helpers.ParseProjectAccess(project, '1')
        self.assertEqual(project_pb2.ProjectAccess.ANYONE, access)

        access = project_helpers.ParseProjectAccess(project, '3')
        self.assertEqual(project_pb2.ProjectAccess.MEMBERS_ONLY, access)
Ejemplo n.º 2
0
    def testProjectWithLogo(self):
        bucket_name = 'testbucket'
        logo_gcs_id = '123'
        logo_file_name = 'logo.png'
        project_pb = project_pb2.MakeProject('testProject',
                                             logo_gcs_id=logo_gcs_id,
                                             logo_file_name=logo_file_name)

        self.mox.StubOutWithMock(app_identity, 'get_default_gcs_bucket_name')
        app_identity.get_default_gcs_bucket_name().AndReturn(bucket_name)

        self.mox.StubOutWithMock(gcs_helpers, 'SignUrl')
        gcs_helpers.SignUrl(bucket_name,
                            logo_gcs_id + '-thumbnail').AndReturn('signed/url')
        gcs_helpers.SignUrl(bucket_name, logo_gcs_id).AndReturn('signed/url')

        self.mox.ReplayAll()

        view = tracker_views.LogoView(project_pb)
        self.mox.VerifyAll()
        self.assertEquals('logo.png', view.filename)
        self.assertEquals('image/png', view.mimetype)
        self.assertEquals('signed/url', view.thumbnail_url)
        self.assertEquals(
            'signed/url&response-content-displacement=attachment%3B'
            '+filename%3Dlogo.png', view.viewurl)
Ejemplo n.º 3
0
 def testMakeProject_Everything(self):
   project = project_pb2.MakeProject(
       'proj', project_id=789, state=project_pb2.ProjectState.ARCHIVED,
       access=project_pb2.ProjectAccess.MEMBERS_ONLY, summary='sum',
       description='desc', moved_to='example.com',
       cached_content_timestamp=1234567890, owner_ids=[111L],
       committer_ids=[222L], contributor_ids=[333L],
       read_only_reason='being migrated',
       home_page='example.com', docs_url='example.com/docs',
       source_url='example.com/src', logo_gcs_id='logo_id',
       logo_file_name='logo.gif')
   self.assertEqual('proj', project.project_name)
   self.assertEqual(789, project.project_id)
   self.assertEqual(project_pb2.ProjectState.ARCHIVED, project.state)
   self.assertEqual(project_pb2.ProjectAccess.MEMBERS_ONLY, project.access)
   self.assertEqual('sum', project.summary)
   self.assertEqual('desc', project.description)
   self.assertEqual('example.com', project.moved_to)
   self.assertEqual(1234567890, project.cached_content_timestamp)
   self.assertEqual([111L], project.owner_ids)
   self.assertEqual([222L], project.committer_ids)
   self.assertEqual([333L], project.contributor_ids)
   self.assertEqual('being migrated', project.read_only_reason)
   self.assertEqual('example.com', project.home_page)
   self.assertEqual('example.com/docs', project.docs_url)
   self.assertEqual('example.com/src', project.source_url)
   self.assertEqual('logo_id', project.logo_gcs_id)
   self.assertEqual('logo.gif', project.logo_file_name)
Ejemplo n.º 4
0
 def testBuildProjectMembers(self):
     project = project_pb2.MakeProject('proj',
                                       owner_ids=[111L],
                                       committer_ids=[222L],
                                       contributor_ids=[333L])
     page_data = project_helpers.BuildProjectMembers(
         self.cnxn, project, self.services.user)
     self.assertEqual(111L, page_data['owners'][0].user_id)
     self.assertEqual(222L, page_data['committers'][0].user_id)
     self.assertEqual(333L, page_data['contributors'][0].user_id)
     self.assertEqual(3, len(page_data['all_members']))
Ejemplo n.º 5
0
 def testUsersWithPermsInProject_StandardPermission(self):
     project = project_pb2.MakeProject('proj', committer_ids=[111])
     perms_needed = {permissions.VIEW, permissions.EDIT_ISSUE}
     actual = project_helpers.UsersWithPermsInProject(
         project, perms_needed, self.users_by_id,
         self.effective_ids_by_user)
     self.assertEqual(
         {
             permissions.VIEW: {111, 222, 333},
             permissions.EDIT_ISSUE: {111}
         }, actual)
Ejemplo n.º 6
0
 def testUsersWithPermsInProject_CustomPermission(self):
     project = project_pb2.MakeProject('proj')
     project.extra_perms = [
         project_pb2.Project.ExtraPerms(member_id=111,
                                        perms=['FooPerm', 'BarPerm']),
         project_pb2.Project.ExtraPerms(member_id=222, perms=['BarPerm'])
     ]
     perms_needed = {'FooPerm', 'BarPerm'}
     actual = project_helpers.UsersWithPermsInProject(
         project, perms_needed, self.users_by_id,
         self.effective_ids_by_user)
     self.assertEqual({'FooPerm': {111}, 'BarPerm': {111, 222}}, actual)
Ejemplo n.º 7
0
 def testUsersWithPermsInProject_IndirectPermission(self):
     perms_needed = {permissions.EDIT_ISSUE}
     # User 111 has the EDIT_ISSUE permission.
     project = project_pb2.MakeProject('proj', committer_ids=[111])
     # User 222 has the EDIT_ISSUE permission, because 111 is included in its
     # effective IDs.
     self.effective_ids_by_user[222] = {111}
     # User 333 doesn't have the EDIT_ISSUE permission, since only direct
     # effective IDs are taken into account.
     self.effective_ids_by_user[333] = {222}
     actual = project_helpers.UsersWithPermsInProject(
         project, perms_needed, self.users_by_id,
         self.effective_ids_by_user)
     self.assertEqual({permissions.EDIT_ISSUE: {111, 222}}, actual)
Ejemplo n.º 8
0
  def CreateProject(
      self, cnxn, project_name, owner_ids, committer_ids, contributor_ids,
      summary, description, state=project_pb2.ProjectState.LIVE,
      access=None, read_only_reason=None, home_page=None, docs_url=None,
      source_url=None, logo_gcs_id=None, logo_file_name=None):
    """Create and store a Project with the given attributes.

    Args:
      cnxn: connection to SQL database.
      project_name: a valid project name, all lower case.
      owner_ids: a list of user IDs for the project owners.
      committer_ids: a list of user IDs for the project members.
      contributor_ids: a list of user IDs for the project contributors.
      summary: one-line explanation of the project.
      description: one-page explanation of the project.
      state: a project state enum defined in project_pb2.
      access: optional project access enum defined in project.proto.
      read_only_reason: if given, provides a status message and marks
        the project as read-only.
      home_page: home page of the project
      docs_url: url to redirect to for wiki/documentation links
      source_url: url to redirect to for source browser links
      logo_gcs_id: google storage object id of the project's logo
      logo_file_name: uploaded file name of the project's logo

    Returns:
      The int project_id of the new project.

    Raises:
      ProjectAlreadyExists: if a project with that name already exists.
    """
    assert framework_bizobj.IsValidProjectName(project_name)
    if self.LookupProjectIDs(cnxn, [project_name]):
      raise exceptions.ProjectAlreadyExists()

    project = project_pb2.MakeProject(
        project_name, state=state, access=access,
        description=description, summary=summary,
        owner_ids=owner_ids, committer_ids=committer_ids,
        contributor_ids=contributor_ids, read_only_reason=read_only_reason,
        home_page=home_page, docs_url=docs_url, source_url=source_url,
        logo_gcs_id=logo_gcs_id, logo_file_name=logo_file_name)

    project.project_id = self._InsertProject(cnxn, project)
    return project.project_id
Ejemplo n.º 9
0
def MakeProject(prefix):
  return project_pb2.MakeProject(
      project_name='%s-project' % prefix,
      summary='%s-summary' % prefix,
      description='%s-description' % prefix,
  )
Ejemplo n.º 10
0
 def testMakeProject_Defaults(self):
     project = project_pb2.MakeProject('proj')
     self.assertEqual('proj', project.project_name)
     self.assertEqual(project_pb2.ProjectState.LIVE, project.state)
     self.assertEqual(project_pb2.ProjectAccess.ANYONE, project.access)
     self.assertFalse(project.read_only_reason)
Ejemplo n.º 11
0
 def testParseProjectAccess_BogusChoice(self):
     project = project_pb2.MakeProject('proj')
     access = project_helpers.ParseProjectAccess(project, '9')
     self.assertEqual(None, access)
Ejemplo n.º 12
0
 def testParseProjectAccess_NotOffered(self):
     project = project_pb2.MakeProject('proj')
     access = project_helpers.ParseProjectAccess(project, None)
     self.assertEqual(None, access)
Ejemplo n.º 13
0
 def testProjectWithNoLogo(self):
   project_pb = project_pb2.MakeProject('testProject')
   view = tracker_views.LogoView(project_pb)
   self.assertEquals('', view.thumbnail_url)
   self.assertEquals('', view.viewurl)