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)
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].')
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)
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)
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)
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')
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)
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)
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))
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)
def Run(self, args): service = liens.LiensService() messages = liens.LiensMessages() service.Delete( messages.CloudresourcemanagerLiensDeleteRequest(liensId=args.id)) log.DeletedResource(liens.LienIdToName(args.id))
def SetUp(self): self.test_lien = liens.LiensMessages().Lien( name='liens/p1234-abc', origin='unittest.googlecloudsdk', reason='player\' gotta play', restrictions=['resourcemanager.projects.delete'])