def test_metadata_show_nonexist(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'metadata', True) res_name = 'WikiDatabase' stack_identity = identifier.HeatIdentifier(self.tenant, 'rubbish', '1') res_identity = identifier.ResourceIdentifier(resource_name=res_name, **stack_identity) req = self._get(res_identity._tenant_path() + '/metadata') error = heat_exc.EntityNotFound(entity='Stack', name='a') mock_call = self.patchobject(rpc_client.EngineClient, 'call', side_effect=tools.to_remote_error(error)) resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.metadata, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, resource_name=res_name) self.assertEqual(404, resp.json['code']) self.assertEqual('EntityNotFound', resp.json['error']['type']) mock_call.assert_called_once_with( req.context, ('describe_stack_resource', {'stack_identity': stack_identity, 'resource_name': res_name, 'with_attr': False}), version='1.2' )
def test_metadata_show_nonexist_resource(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'metadata', True) res_name = 'wibble' stack_identity = identifier.HeatIdentifier(self.tenant, 'wordpress', '1') res_identity = identifier.ResourceIdentifier(resource_name=res_name, **stack_identity) req = self._get(res_identity._tenant_path() + '/metadata') error = heat_exc.ResourceNotFound(stack_name='a', resource_name='b') self.m.StubOutWithMock(rpc_client.EngineClient, 'call') rpc_client.EngineClient.call(req.context, ('describe_stack_resource', { 'stack_identity': stack_identity, 'resource_name': res_name, 'with_attr': None }), version='1.2').AndRaise( tools.to_remote_error(error)) self.m.ReplayAll() resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.metadata, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, resource_name=res_name) self.assertEqual(404, resp.json['code']) self.assertEqual('ResourceNotFound', resp.json['error']['type']) self.m.VerifyAll()
def test_show_stack_nonexist(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'show', True) event_id = '42' res_name = 'WikiDatabase' stack_identity = identifier.HeatIdentifier(self.tenant, 'wibble', '6') req = self._get(stack_identity._tenant_path() + '/resources/' + res_name + '/events/' + event_id) kwargs = {'stack_identity': stack_identity, 'limit': None, 'sort_keys': None, 'marker': None, 'sort_dir': None, 'filters': {'resource_name': res_name}} error = heat_exc.StackNotFound(stack_name='a') self.m.StubOutWithMock(rpc_client.EngineClient, 'call') rpc_client.EngineClient.call( req.context, ('list_events', kwargs) ).AndRaise(tools.to_remote_error(error)) self.m.ReplayAll() resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.show, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, resource_name=res_name, event_id=event_id) self.assertEqual(404, resp.json['code']) self.assertEqual('StackNotFound', resp.json['error']['type']) self.m.VerifyAll()
def test_index_nonexist(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'index', True) stack_identity = identifier.HeatIdentifier(self.tenant, 'rubbish', '1') req = self._get(stack_identity._tenant_path() + '/resources') error = heat_exc.EntityNotFound(entity='Stack', name='a') self.m.StubOutWithMock(rpc_client.EngineClient, 'call') rpc_client.EngineClient.call(req.context, ('list_stack_resources', { 'stack_identity': stack_identity, 'nested_depth': 0, 'with_detail': False }), version='1.12').AndRaise( tools.to_remote_error(error)) self.m.ReplayAll() resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.index, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id) self.assertEqual(404, resp.json['code']) self.assertEqual('EntityNotFound', resp.json['error']['type']) self.m.VerifyAll()
def test_action_rmt_aterr(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'action', True) stack_identity = identifier.HeatIdentifier(self.tenant, 'wordpress', '1') body = {'suspend': None} req = self._post(stack_identity._tenant_path() + '/actions', data=json.dumps(body)) self.m.StubOutWithMock(rpc_client.EngineClient, 'call') rpc_client.EngineClient.call( req.context, ('stack_suspend', {'stack_identity': stack_identity}) ).AndRaise(tools.to_remote_error(AttributeError())) self.m.ReplayAll() resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.action, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, body=body) self.assertEqual(400, resp.json['code']) self.assertEqual('AttributeError', resp.json['error']['type']) self.m.VerifyAll()
def test_metadata_show_nonexist_resource(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'metadata', True) res_name = 'wibble' stack_identity = identifier.HeatIdentifier(self.tenant, 'wordpress', '1') res_identity = identifier.ResourceIdentifier(resource_name=res_name, **stack_identity) req = self._get(res_identity._tenant_path() + '/metadata') error = heat_exc.ResourceNotFound(stack_name='a', resource_name='b') self.m.StubOutWithMock(rpc_client.EngineClient, 'call') rpc_client.EngineClient.call( req.context, ('describe_stack_resource', {'stack_identity': stack_identity, 'resource_name': res_name, 'with_attr': None}), version='1.2' ).AndRaise(tools.to_remote_error(error)) self.m.ReplayAll() resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.metadata, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, resource_name=res_name) self.assertEqual(404, resp.json['code']) self.assertEqual('ResourceNotFound', resp.json['error']['type']) self.m.VerifyAll()
def test_index_nonexist(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'index', True) stack_identity = identifier.HeatIdentifier(self.tenant, 'rubbish', '1') req = self._get(stack_identity._tenant_path() + '/resources') error = heat_exc.EntityNotFound(entity='Stack', name='a') mock_call = self.patchobject(rpc_client.EngineClient, 'call', side_effect=tools.to_remote_error(error)) resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.index, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id) self.assertEqual(404, resp.json['code']) self.assertEqual('EntityNotFound', resp.json['error']['type']) mock_call.assert_called_once_with( req.context, ('list_stack_resources', {'stack_identity': stack_identity, 'nested_depth': 0, 'with_detail': False, 'filters': {}}), version='1.25' )
def test_action_rmt_aterr(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'suspend', True) stack_identity = identifier.HeatIdentifier(self.tenant, 'wordpress', '1') body = {'suspend': None} req = self._post(stack_identity._tenant_path() + '/actions', data=json.dumps(body)) mock_call = self.patchobject(rpc_client.EngineClient, 'call', side_effect=tools.to_remote_error( AttributeError())) resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.action, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, body=body) self.assertEqual(400, resp.json['code']) self.assertEqual('AttributeError', resp.json['error']['type']) mock_call.assert_called_once_with(req.context, ('stack_suspend', { 'stack_identity': stack_identity }))
def test_show_uncreated_resource(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'show', True) res_name = 'WikiDatabase' stack_identity = identifier.HeatIdentifier(self.tenant, 'wordpress', '1') res_identity = identifier.ResourceIdentifier(resource_name=res_name, **stack_identity) req = self._get(res_identity._tenant_path()) error = heat_exc.ResourceNotAvailable(resource_name='') mock_call = self.patchobject(rpc_client.EngineClient, 'call', side_effect=tools.to_remote_error(error)) resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.show, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, resource_name=res_name) self.assertEqual(404, resp.json['code']) self.assertEqual('ResourceNotAvailable', resp.json['error']['type']) mock_call.assert_called_once_with( req.context, ('describe_stack_resource', {'stack_identity': stack_identity, 'resource_name': res_name, 'with_attr': None}), version='1.2' )
def test_index_stack_nonexist(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'index', True) stack_identity = identifier.HeatIdentifier(self.tenant, 'wibble', '6') req = self._get(stack_identity._tenant_path() + '/events') kwargs = { 'stack_identity': stack_identity, 'limit': None, 'sort_keys': None, 'marker': None, 'sort_dir': None, 'filters': None } error = heat_exc.EntityNotFound(entity='Stack', name='a') self.m.StubOutWithMock(rpc_client.EngineClient, 'call') rpc_client.EngineClient.call(req.context, ('list_events', kwargs)).AndRaise( tools.to_remote_error(error)) self.m.ReplayAll() resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.index, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id) self.assertEqual(404, resp.json['code']) self.assertEqual('EntityNotFound', resp.json['error']['type']) self.m.VerifyAll()
def test_index_stack_nonexist(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'index', True) stack_identity = identifier.HeatIdentifier(self.tenant, 'wibble', '6') req = self._get(stack_identity._tenant_path() + '/events') kwargs = {'stack_identity': stack_identity, 'nested_depth': None, 'limit': None, 'sort_keys': None, 'marker': None, 'sort_dir': None, 'filters': None} error = heat_exc.EntityNotFound(entity='Stack', name='a') mock_call = self.patchobject(rpc_client.EngineClient, 'call', side_effect=tools.to_remote_error(error)) resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.index, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id) self.assertEqual(404, resp.json['code']) self.assertEqual('EntityNotFound', resp.json['error']['type']) mock_call.assert_called_once_with( req.context, ('list_events', kwargs), version='1.31' )
def test_index_nonexist(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'index', True) stack_identity = identifier.HeatIdentifier(self.tenant, 'rubbish', '1') req = self._get(stack_identity._tenant_path() + '/resources') error = heat_exc.EntityNotFound(entity='Stack', name='a') self.m.StubOutWithMock(rpc_client.EngineClient, 'call') rpc_client.EngineClient.call( req.context, ('list_stack_resources', {'stack_identity': stack_identity, 'nested_depth': 0, 'with_detail': False}), version='1.12' ).AndRaise(tools.to_remote_error(error)) self.m.ReplayAll() resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.index, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id) self.assertEqual(404, resp.json['code']) self.assertEqual('EntityNotFound', resp.json['error']['type']) self.m.VerifyAll()
def test_index_stack_nonexist(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'index', True) stack_identity = identifier.HeatIdentifier(self.tenant, 'wibble', '6') req = self._get(stack_identity._tenant_path() + '/events') kwargs = { 'stack_identity': stack_identity, 'nested_depth': None, 'limit': None, 'sort_keys': None, 'marker': None, 'sort_dir': None, 'filters': None } error = heat_exc.EntityNotFound(entity='Stack', name='a') mock_call = self.patchobject(rpc_client.EngineClient, 'call', side_effect=tools.to_remote_error(error)) resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.index, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id) self.assertEqual(404, resp.json['code']) self.assertEqual('EntityNotFound', resp.json['error']['type']) mock_call.assert_called_once_with(req.context, ('list_events', kwargs), version='1.31')
def test_build_info_err_denied_policy(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'build_info', False) req = self._get('/build_info') resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.build_info, req, tenant_id=self.tenant) self.assertEqual(403, resp.status_int) self.assertIn('403 Forbidden', six.text_type(resp))
def test_build_info_err_denied_policy(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'build_info', False) req = self._get('/build_info') resp = tools.request_with_middleware(fault.FaultWrapper, self.controller.build_info, req, tenant_id=self.tenant) self.assertEqual(403, resp.status_int) self.assertIn('403 Forbidden', str(resp))
def test_delete_not_found(self, mock_enforce): self._mock_enforce_setup(mock_enforce, "delete") deployment_id = "a45559cd-8736-4375-bc39-d6a7bb62ade2" req = self._delete("/software_deployments/%s" % deployment_id) error = heat_exc.NotFound("Not Found %s" % deployment_id) with mock.patch.object( self.controller.rpc_client, "delete_software_deployment", side_effect=tools.to_remote_error(error) ): resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.delete, req, deployment_id=deployment_id, tenant_id=self.tenant ) self.assertEqual(404, resp.json["code"]) self.assertEqual("NotFound", resp.json["error"]["type"])
def test_delete_error(self, mock_enforce): self._mock_enforce_setup(mock_enforce, "delete") config_id = "a45559cd-8736-4375-bc39-d6a7bb62ade2" req = self._delete("/software_configs/%s" % config_id) error = Exception("something wrong") with mock.patch.object( self.controller.rpc_client, "delete_software_config", side_effect=tools.to_remote_error(error) ): resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.delete, req, config_id=config_id, tenant_id=self.tenant ) self.assertEqual(500, resp.json["code"]) self.assertEqual("Exception", resp.json["error"]["type"])
def test_delete_not_found(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'delete') deployment_id = 'a45559cd-8736-4375-bc39-d6a7bb62ade2' req = self._delete('/software_deployments/%s' % deployment_id) error = heat_exc.NotFound('Not Found %s' % deployment_id) with mock.patch.object(self.controller.rpc_client, 'delete_software_deployment', side_effect=tools.to_remote_error(error)): resp = tools.request_with_middleware(fault.FaultWrapper, self.controller.delete, req, deployment_id=deployment_id, tenant_id=self.tenant) self.assertEqual(404, resp.json['code']) self.assertEqual('NotFound', resp.json['error']['type'])
def test_show_not_found(self, mock_enforce): self._mock_enforce_setup(mock_enforce, "show") deployment_id = "38eccf10-97e5-4ae8-9d37-b577c9801750" req = self._get("/software_deployments/%s" % deployment_id) error = heat_exc.NotFound("Not found %s" % deployment_id) with mock.patch.object( self.controller.rpc_client, "show_software_deployment", side_effect=tools.to_remote_error(error) ): resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.show, req, deployment_id=deployment_id, tenant_id=self.tenant ) self.assertEqual(404, resp.json["code"]) self.assertEqual("NotFound", resp.json["error"]["type"])
def test_index_err_denied_policy(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'index', False) stack_identity = identifier.HeatIdentifier(self.tenant, 'wibble', '6') req = self._get(stack_identity._tenant_path() + '/events') resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.index, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id) self.assertEqual(403, resp.status_int) self.assertIn('403 Forbidden', six.text_type(resp))
def test_delete_error(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'delete') config_id = 'a45559cd-8736-4375-bc39-d6a7bb62ade2' req = self._delete('/software_configs/%s' % config_id) error = Exception('something wrong') with mock.patch.object(self.controller.rpc_client, 'delete_software_config', side_effect=tools.to_remote_error(error)): resp = tools.request_with_middleware(fault.FaultWrapper, self.controller.delete, req, config_id=config_id, tenant_id=self.tenant) self.assertEqual(500, resp.json['code']) self.assertEqual('Exception', resp.json['error']['type'])
def test_show_not_found(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'show') deployment_id = '38eccf10-97e5-4ae8-9d37-b577c9801750' req = self._get('/software_deployments/%s' % deployment_id) error = heat_exc.NotFound('Not found %s' % deployment_id) with mock.patch.object(self.controller.rpc_client, 'show_software_deployment', side_effect=tools.to_remote_error(error)): resp = tools.request_with_middleware(fault.FaultWrapper, self.controller.show, req, deployment_id=deployment_id, tenant_id=self.tenant) self.assertEqual(404, resp.json['code']) self.assertEqual('NotFound', resp.json['error']['type'])
def test_action_err_denied_policy(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'action', False) stack_identity = identifier.HeatIdentifier(self.tenant, 'wordpress', '1') body = {'suspend': None} req = self._post(stack_identity._tenant_path() + '/actions', data=json.dumps(body)) resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.action, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, body=body) self.assertEqual(403, resp.status_int) self.assertIn('403 Forbidden', six.text_type(resp))
def test_index_denied_policy(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'index', False) res_name = 'WikiDatabase' stack_identity = identifier.HeatIdentifier(self.tenant, 'wordpress', '1') identifier.ResourceIdentifier(resource_name=res_name, **stack_identity) req = self._get(stack_identity._tenant_path() + '/resources') resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.index, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id) self.assertEqual(403, resp.status_int) self.assertIn('403 Forbidden', six.text_type(resp))
def test_show_stack_nonexist(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'show', True) event_id = '42' res_name = 'WikiDatabase' stack_identity = identifier.HeatIdentifier(self.tenant, 'wibble', '6') req = self._get(stack_identity._tenant_path() + '/resources/' + res_name + '/events/' + event_id) kwargs = { 'stack_identity': stack_identity, 'limit': None, 'sort_keys': None, 'marker': None, 'sort_dir': None, 'nested_depth': None, 'filters': { 'resource_name': res_name, 'uuid': '42' } } error = heat_exc.EntityNotFound(entity='Stack', name='a') self.m.StubOutWithMock(rpc_client.EngineClient, 'call') rpc_client.EngineClient.call(req.context, ('list_events', kwargs), version='1.31').AndRaise( tools.to_remote_error(error)) self.m.ReplayAll() resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.show, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, resource_name=res_name, event_id=event_id) self.assertEqual(404, resp.json['code']) self.assertEqual('EntityNotFound', resp.json['error']['type']) self.m.VerifyAll()
def test_metadata_show_err_denied_policy(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'metadata', False) res_name = 'wibble' stack_identity = identifier.HeatIdentifier(self.tenant, 'wordpress', '1') res_identity = identifier.ResourceIdentifier(resource_name=res_name, **stack_identity) req = self._get(res_identity._tenant_path() + '/metadata') resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.metadata, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, resource_name=res_name) self.assertEqual(403, resp.status_int) self.assertIn('403 Forbidden', str(resp))
def test_metadata_show_err_denied_policy(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'metadata', False) res_name = 'wibble' stack_identity = identifier.HeatIdentifier(self.tenant, 'wordpress', '1') res_identity = identifier.ResourceIdentifier(resource_name=res_name, **stack_identity) req = self._get(res_identity._tenant_path() + '/metadata') resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.metadata, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, resource_name=res_name) self.assertEqual(403, resp.status_int) self.assertIn('403 Forbidden', six.text_type(resp))
def test_show_err_denied_policy(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'show', False) event_id = '42' res_name = 'WikiDatabase' stack_identity = identifier.HeatIdentifier(self.tenant, 'wibble', '6') req = self._get(stack_identity._tenant_path() + '/resources/' + res_name + '/events/' + event_id) resp = tools.request_with_middleware( fault.FaultWrapper, self.controller.show, req, tenant_id=self.tenant, stack_name=stack_identity.stack_name, stack_id=stack_identity.stack_id, resource_name=res_name, event_id=event_id) self.assertEqual(403, resp.status_int) self.assertIn('403 Forbidden', six.text_type(resp))