def test_wrong_content_type_throws_unsupported_media_type_error(self): resource = wsgi.Resource(None) request = wsgi.Request.blank("/", body="{some:json}", method='POST', headers={'Content-Type': "xxx"}) response = resource(request) self.assertEqual(response.status, '415 Unsupported Media Type')
def test_malformed_request_body_throws_bad_request(self): resource = wsgi.Resource(None) request = wsgi.Request.blank("/", body="{mal:formed", method='POST', headers={'Content-Type': "application/json"}) response = resource(request) self.assertEqual(response.status, '400 Bad Request')
def test_dispatch_unknown_controller_action(self): class Controller(object): def index(self, req, pants=None): return pants resource = wsgi.Resource(Controller()) self.assertRaises(AttributeError, resource.dispatch, resource.controller, 'create', None, {})
def test_dispatch(self): class Controller(object): def index(self, req, pants=None): return pants resource = wsgi.Resource(Controller()) actual = resource.dispatch(resource.controller, 'index', None, pants='off') expected = 'off' self.assertEqual(actual, expected)
def __init__(self, application, config, ext_mgr=None): ext_mgr = ext_mgr or ExtensionManager(config['api_extensions_path']) mapper = routes.Mapper() # extended resources for resource_ext in ext_mgr.get_resources(): LOG.debug(_('Extended resource: %s'), resource_ext.collection) controller_resource = wsgi.Resource(resource_ext.controller, resource_ext.deserializer, resource_ext.serializer) self._map_custom_collection_actions(resource_ext, mapper, controller_resource) kargs = dict(controller=controller_resource, collection=resource_ext.collection_actions, member=resource_ext.member_actions) if resource_ext.parent: kargs['parent_resource'] = resource_ext.parent mapper.resource(resource_ext.collection, resource_ext.collection, **kargs) # extended actions action_resources = self._action_ext_resources(application, ext_mgr, mapper) for action in ext_mgr.get_actions(): LOG.debug(_('Extended action: %s'), action.action_name) resource = action_resources[action.collection] resource.add_action(action.action_name, action.handler) # extended requests req_controllers = self._request_ext_resources(application, ext_mgr, mapper) for request_ext in ext_mgr.get_request_extensions(): LOG.debug(_('Extended request: %s'), request_ext.key) controller = req_controllers[request_ext.key] controller.add_handler(request_ext.handler) self._router = routes.middleware.RoutesMiddleware( self._dispatch, mapper) super(ExtensionMiddleware, self).__init__(application)
def create_resource(conf): ''' Stacks resource factory method ''' return wsgi.Resource(Controller(conf))
def create_resource(self): return wsgi.Resource(self)