def get_resources(cls): """Returns Ext Resources.""" exts = [] parent = dict(member_name="agent", collection_name="agents") controller = resource.Resource(NetworkSchedulerController(), base.FAULT_MAP) exts.append(extensions.ResourceExtension(DHCP_NETS, controller, parent)) controller = resource.Resource(RouterSchedulerController(), base.FAULT_MAP) exts.append( extensions.ResourceExtension(L3_ROUTERS, controller, parent)) parent = dict(member_name="network", collection_name="networks") controller = resource.Resource(DhcpAgentsHostingNetworkController(), base.FAULT_MAP) exts.append( extensions.ResourceExtension(DHCP_AGENTS, controller, parent)) parent = dict(member_name="router", collection_name="routers") controller = resource.Resource(L3AgentsHostingRouterController(), base.FAULT_MAP) exts.append(extensions.ResourceExtension(L3_AGENTS, controller, parent)) return exts
def test_no_route_args(self): controller = mock.MagicMock() resource = webtest.TestApp(wsgi_resource.Resource(controller)) environ = {} res = resource.get('', extra_environ=environ, expect_errors=True) self.assertEqual(res.status_int, exc.HTTPInternalServerError.code)
def test_status_204(self): controller = mock.MagicMock() controller.test = lambda request: {'foo': 'bar'} resource = webtest.TestApp(wsgi_resource.Resource(controller)) environ = {'wsgiorg.routing_args': (None, {'action': 'delete'})} res = resource.delete('', extra_environ=environ, expect_errors=True) self.assertEqual(res.status_int, 204)
def test_http_error(self): controller = mock.MagicMock() controller.test.side_effect = exc.HTTPGatewayTimeout() resource = webtest.TestApp(wsgi_resource.Resource(controller)) environ = {'wsgiorg.routing_args': (None, {'action': 'test'})} res = resource.get('', extra_environ=environ, expect_errors=True) self.assertEqual(res.status_int, exc.HTTPGatewayTimeout.code)
def test_unmapped_quantum_error(self): controller = mock.MagicMock() controller.test.side_effect = q_exc.QuantumException() resource = webtest.TestApp(wsgi_resource.Resource(controller)) environ = {'wsgiorg.routing_args': (None, {'action': 'test'})} res = resource.get('', extra_environ=environ, expect_errors=True) self.assertEqual(res.status_int, exc.HTTPInternalServerError.code)
def get_resources(cls): """Returns Ext Resources.""" controller = resource.Resource(QuotaSetsController( QuantumManager.get_plugin()), faults=base.FAULT_MAP) return [ extensions.ResourceExtension(Quotasv2.get_alias(), controller, collection_actions={'tenant': 'GET'}) ]
def test_mapped_quantum_error(self): controller = mock.MagicMock() controller.test.side_effect = q_exc.QuantumException() faults = {q_exc.QuantumException: exc.HTTPGatewayTimeout} resource = webtest.TestApp(wsgi_resource.Resource(controller, faults=faults)) environ = {'wsgiorg.routing_args': (None, {'action': 'test'})} res = resource.get('', extra_environ=environ, expect_errors=True) self.assertEqual(res.status_int, exc.HTTPGatewayTimeout.code)
def test_post_with_body(self): controller = mock.MagicMock() controller.test = lambda request, body: {'foo': 'bar'} resource = webtest.TestApp(wsgi_resource.Resource(controller)) environ = {'wsgiorg.routing_args': (None, {'action': 'test'})} res = resource.post('', params='{"key": "val"}', extra_environ=environ, expect_errors=True) self.assertEqual(res.status_int, 200)
def create_resource(collection, resource, plugin, conf, params): controller = Controller(plugin, collection, resource, params) # NOTE(jkoelker) To anyone wishing to add "proper" xml support # this is where you do it serializers = {} # 'application/xml': wsgi.XMLDictSerializer(metadata, XML_NS_V20), deserializers = {} # 'application/xml': wsgi.XMLDeserializer(metadata), return wsgi_resource.Resource(controller, FAULT_MAP, deserializers, serializers)
def create_resource(collection, resource, plugin, params, allow_bulk=False, member_actions=None, parent=None, allow_pagination=False, allow_sorting=False): controller = Controller(plugin, collection, resource, params, allow_bulk, member_actions=member_actions, parent=parent, allow_pagination=allow_pagination, allow_sorting=allow_sorting) return wsgi_resource.Resource(controller, FAULT_MAP)
def test_unmapped_quantum_error_with_xml(self): msg = u'\u7f51\u7edc' class TestException(q_exc.QuantumException): message = msg expected_res = {'body': {'QuantumError': msg}} controller = mock.MagicMock() controller.test.side_effect = TestException() resource = webtest.TestApp(wsgi_resource.Resource(controller)) environ = { 'wsgiorg.routing_args': (None, { 'action': 'test', 'format': 'xml' }) } res = resource.get('', extra_environ=environ, expect_errors=True) self.assertEqual(res.status_int, exc.HTTPInternalServerError.code) self.assertEqual(wsgi.XMLDeserializer().deserialize(res.body), expected_res)
def test_unhandled_error_with_xml(self): expected_res = { 'body': { 'QuantumError': _('Request Failed: internal server error ' 'while processing your request.') } } controller = mock.MagicMock() controller.test.side_effect = Exception() resource = webtest.TestApp(wsgi_resource.Resource(controller)) environ = { 'wsgiorg.routing_args': (None, { 'action': 'test', 'format': 'xml' }) } res = resource.get('', extra_environ=environ, expect_errors=True) self.assertEqual(res.status_int, exc.HTTPInternalServerError.code) self.assertEqual(wsgi.XMLDeserializer().deserialize(res.body), expected_res)
def test_mapped_quantum_error_with_json(self): msg = u'\u7f51\u7edc' class TestException(q_exc.QuantumException): message = msg expected_res = {'body': {'QuantumError': msg}} controller = mock.MagicMock() controller.test.side_effect = TestException() faults = {TestException: exc.HTTPGatewayTimeout} resource = webtest.TestApp( wsgi_resource.Resource(controller, faults=faults)) environ = { 'wsgiorg.routing_args': (None, { 'action': 'test', 'format': 'json' }) } res = resource.get('', extra_environ=environ, expect_errors=True) self.assertEqual(res.status_int, exc.HTTPGatewayTimeout.code) self.assertEqual(wsgi.JSONDeserializer().deserialize(res.body), expected_res)