Ejemplo n.º 1
0
 def testNoFlagsEmptyList(self):
   self.mock_liens.List.Expect(
       liens.LiensMessages().CloudresourcemanagerLiensListRequest(
           parent='projects/t123'),
       liens.LiensMessages().ListLiensResponse())
   self.RunLiens('list', '--project', 't123')
   self.AssertOutputEquals('', normalize_space=True)
Ejemplo n.º 2
0
 def testDeleteLien(self):
     self.mock_liens.Delete.Expect(
         liens.LiensMessages().CloudresourcemanagerLiensDeleteRequest(
             liensId='pt123-abc'),
         liens.LiensMessages().Empty())
     self.RunLiens('delete', 'pt123-abc')
     self.AssertErrContains('Deleted [liens/pt123-abc].')
Ejemplo n.º 3
0
 def testListOneLien(self):
   self.mock_liens.List.Expect(
       liens.LiensMessages().CloudresourcemanagerLiensListRequest(
           parent='projects/t123'),
       liens.LiensMessages().ListLiensResponse(liens=[self.test_lien]))
   self.RunLiens('list', '--project', 't123')
   self.AssertOutputContains(
       """\
     NAME        ORIGIN                    REASON
     p1234-abc   unittest.googlecloudsdk   player' gotta play
     """,
       normalize_space=True)
Ejemplo n.º 4
0
  def testListFails(self):
    self.mock_liens.List.Expect(
        liens.LiensMessages().CloudresourcemanagerLiensListRequest(
            parent='projects/t123'),
        exception=http_error.MakeDetailedHttpError(
            url='https://cloudresourcemanager.googleapis.com/v1/liens',
            reason='INTERNAL',
            message=':/',
            details=[{
                '@type':
                    'type.googleapis.com/google.rpc.PreconditionFailure',
                'violations': [{
                    'type': 'PROJECT',
                    'subject': 'projects/t123',
                    'description': 'Useful details about this error.'
                }]
            }]))
    with self.assertRaises(api_exceptions.HttpException):
      self.RunLiens('list', '--project', 't123')
    self.AssertErrEquals(
        """ERROR: (gcloud.alpha.resource-manager.liens.list) INTERNAL: :/
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: Useful details about this error.
    subject: projects/t123
    type: PROJECT
""",
        normalize_space=True)
Ejemplo n.º 5
0
    def testDeleteFails(self):
        self.mock_liens.Delete.Expect(
            liens.LiensMessages().CloudresourcemanagerLiensDeleteRequest(
                liensId='l1234'),
            exception=http_error.MakeDetailedHttpError(
                url=
                'https://cloudresourcemanager.googleapis.com/v1/liens/l1234',
                reason='INTERNAL',
                message=':/',
                details=[{
                    '@type':
                    'type.googleapis.com/google.rpc.PreconditionFailure',
                    'violations': [{
                        'type':
                        'LIEN',
                        'subject':
                        'liens/l1234',
                        'description':
                        'Useful details about this error.'
                    }]
                }]))
        with self.assertRaises(api_exceptions.HttpException):
            self.RunLiens('delete', 'l1234')
        self.AssertErrEquals(
            """ERROR: (gcloud.alpha.resource-manager.liens.delete) INTERNAL: :/
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: Useful details about this error.
    subject: liens/l1234
    type: LIEN
""",
            normalize_space=True)
Ejemplo n.º 6
0
 def Run(self, args):
   """Run the list command."""
   parent = 'projects/' + properties.VALUES.core.project.Get(required=True)
   return list_pager.YieldFromList(
       liens.LiensService(),
       liens.LiensMessages().CloudresourcemanagerLiensListRequest(
           parent=parent),
       limit=args.limit,
       batch_size_attribute='pageSize',
       batch_size=args.page_size,
       field='liens')
Ejemplo n.º 7
0
 def testCreateMissingOrigin(self):
     args = [
         '--project', 't123', '--reason', 'player\'s gotta play',
         '--restrictions', 'resourcemanager.projects.delete'
     ]
     self.mock_liens.Create.Expect(
         liens.LiensMessages().Lien(
             parent='projects/t123',
             origin='fake_account',
             reason='player\'s gotta play',
             restrictions=['resourcemanager.projects.delete']),
         self.test_lien)
     self.assertEqual(self.RunLiens('create', *args), self.test_lien)
Ejemplo n.º 8
0
    def testCreateLien(self):
        self.mock_liens.Create.Expect(
            liens.LiensMessages().Lien(
                parent='projects/t123',
                origin='unittest.googlecloudsdk',
                reason='player\'s gotta play',
                restrictions=['resourcemanager.projects.delete']),
            self.test_lien)

        args = [
            '--project', 't123', '--origin', 'unittest.googlecloudsdk',
            '--reason', 'player\'s gotta play', '--restrictions',
            'resourcemanager.projects.delete'
        ]
        self.assertEqual(self.RunLiens('create', *args), self.test_lien)
Ejemplo n.º 9
0
  def Run(self, args):
    parent = 'projects/' + properties.VALUES.core.project.Get(required=True)

    # Origin is a required field which will default to the account property if
    # not specified.
    origin = args.origin
    if not origin:
      origin = properties.VALUES.core.account.Get(required=True)

    messages = liens.LiensMessages()
    return liens.LiensService().Create(
        messages.Lien(
            parent=parent,
            restrictions=args.restrictions.split(','),
            origin=origin,
            reason=args.reason))
Ejemplo n.º 10
0
    def testCreateLienFails400(self):
        self.mock_liens.Create.Expect(
            liens.LiensMessages().Lien(
                parent='projects/t123',
                origin='unittest.googlecloudsdk',
                reason='player\'s gotta play',
                restrictions=['resourcemanager.projects.delete']),
            exception=http_error.MakeDetailedHttpError(
                url='https://cloudresourcemanager.googleapis.com/v1/liens',
                reason='INTERNAL',
                message=':/',
                details=[{
                    '@type':
                    'type.googleapis.com/google.rpc.PreconditionFailure',
                    'violations': [{
                        'type':
                        'PROJECT',
                        'subject':
                        'projects/t123',
                        'description':
                        'Useful details about this error.'
                    }]
                }]))

        args = [
            '--project', 't123', '--origin', 'unittest.googlecloudsdk',
            '--reason', 'player\'s gotta play', '--restrictions',
            'resourcemanager.projects.delete'
        ]
        with self.assertRaises(api_exceptions.HttpException):
            self.RunLiens('create', *args)
        self.AssertErrEquals(
            """ERROR: (gcloud.alpha.resource-manager.liens.create) INTERNAL: :/
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: Useful details about this error.
    subject: projects/t123
    type: PROJECT
""",
            normalize_space=True)
Ejemplo n.º 11
0
 def Run(self, args):
     service = liens.LiensService()
     messages = liens.LiensMessages()
     service.Delete(
         messages.CloudresourcemanagerLiensDeleteRequest(liensId=args.id))
     log.DeletedResource(liens.LienIdToName(args.id))
Ejemplo n.º 12
0
 def SetUp(self):
   self.test_lien = liens.LiensMessages().Lien(
       name='liens/p1234-abc',
       origin='unittest.googlecloudsdk',
       reason='player\' gotta play',
       restrictions=['resourcemanager.projects.delete'])