示例#1
0
def create_resource(options):
    '''BuildInfo factory method.'''

    deserializer = wsgi.JSONRequestDeserializer()
    serializer = serializers.JSONResponseSerializer()
    return wsgi.Resource(BuildInfoController(options), deserializer,
                         serializer)
示例#2
0
    def test_dispatch_default(self):
        class Controller(object):
            def default(self, shirt, pants=None):
                return (shirt, pants)

        resource = wsgi.Resource(None, None, None)
        actual = resource.dispatch(Controller(), 'index', 'on', pants='off')
        expected = ('on', 'off')
        self.assertEqual(expected, actual)
示例#3
0
    def test_dispatch_no_default(self):
        class Controller(object):
            def show(self, shirt, pants=None):
                return (shirt, pants)

        resource = wsgi.Resource(None, None, None)
        self.assertRaises(AttributeError,
                          resource.dispatch,
                          Controller(),
                          'index',
                          'on',
                          pants='off')
示例#4
0
    def test_get_action_args(self):
        env = {
            'wsgiorg.routing_args': [
                None,
                {
                    'controller': None,
                    'format': None,
                    'action': 'update',
                    'id': 12,
                },
            ],
        }

        expected = {'action': 'update', 'id': 12}
        actual = wsgi.Resource(None, None, None).get_action_args(env)

        self.assertEqual(expected, actual)
示例#5
0
    def test_resource_client_exceptions_dont_log_error(self):
        class Controller(object):
            def __init__(self, excpetion_to_raise):
                self.excpetion_to_raise = excpetion_to_raise

            def raise_exception(self, req, body):
                raise self.excpetion_to_raise()

        actions = {'action': 'raise_exception', 'body': 'data'}
        env = {'wsgiorg.routing_args': [None, actions]}
        request = wsgi.Request.blank('/tests/123', environ=env)
        request.body = encodeutils.safe_encode('{"foo": "value"}')
        resource = wsgi.Resource(Controller(self.exception),
                                 wsgi.JSONRequestDeserializer(), None)
        e = self.assertRaises(self.exception_catch, resource, request)
        e = e.exc if hasattr(e, 'exc') else e
        self.assertNotIn(six.text_type(e), self.LOG.output)
示例#6
0
    def test_resource_call_error_handle(self):
        class Controller(object):
            def delete(self, req, identity):
                return (req, identity)

        actions = {'action': 'delete', 'id': 12, 'body': 'data'}
        env = {'wsgiorg.routing_args': [None, actions]}
        request = wsgi.Request.blank('/tests/123', environ=env)
        request.body = encodeutils.safe_encode('{"foo" : "value"}')
        resource = wsgi.Resource(Controller(), wsgi.JSONRequestDeserializer(),
                                 None)

        # The Resource does not throw webob.HTTPExceptions, since they
        # would be considered responses by wsgi and the request flow would end,
        # instead they are wrapped so they can reach the fault application
        # where they are converted to a JSON response
        e = self.assertRaises(exception.HTTPExceptionDisguise, resource,
                              request)
        self.assertIsInstance(e.exc, webob.exc.HTTPBadRequest)
示例#7
0
    def test_resource_call_error_handle_localized(self):
        class Controller(object):
            def delete(self, req, identity):
                return (req, identity)

        actions = {'action': 'delete', 'id': 12, 'body': 'data'}
        env = {'wsgiorg.routing_args': [None, actions]}
        request = wsgi.Request.blank('/tests/123', environ=env)
        request.body = encodeutils.safe_encode('{"foo" : "value"}')
        message_es = "No Encontrado"
        translated_ex = webob.exc.HTTPBadRequest(message_es)

        resource = wsgi.Resource(Controller(), wsgi.JSONRequestDeserializer(),
                                 None)

        def fake_translate_exception(ex, locale):
            return translated_ex

        self.stubs.SmartSet(wsgi, 'translate_exception',
                            fake_translate_exception)

        e = self.assertRaises(exception.HTTPExceptionDisguise, resource,
                              request)
        self.assertEqual(message_es, six.text_type(e.exc))
示例#8
0
def create_resource(options):
    '''Clusters resource factory method.'''

    return wsgi.Resource(ClusterController(options),
                         wsgi.JSONRequestDeserializer(),
                         serializers.JSONResponseSerializer())
示例#9
0
def create_resource(options):
    '''Profile types resource factory method.'''

    return wsgi.Resource(ProfileTypeController(options),
                         wsgi.JSONRequestDeserializer(),
                         serializers.JSONResponseSerializer())
示例#10
0
 def test_get_action_args_del_format_error(self):
     actions = {'action': 'update', 'id': 12}
     env = {'wsgiorg.routing_args': [None, actions]}
     expected = {'action': 'update', 'id': 12}
     actual = wsgi.Resource(None, None, None).get_action_args(env)
     self.assertEqual(expected, actual)
示例#11
0
 def test_get_action_args_invalid_index(self):
     env = {'wsgiorg.routing_args': []}
     expected = {}
     actual = wsgi.Resource(None, None, None).get_action_args(env)
     self.assertEqual(expected, actual)
示例#12
0
def create_resource(options):
    """Trigger resource factory method."""

    return wsgi.Resource(TriggerController(options),
                         wsgi.JSONRequestDeserializer(),
                         serializers.JSONResponseSerializer())