Esempio n. 1
0
    def test_it_should_parse_required_arguments(self):
        args = {"foo": fields.Field(required=True)}

        request = make_json_request({})

        with pytest.raises(tornado.web.HTTPError) as excinfo:
            parser.parse(args, request)
        assert "Missing data for required field." in str(excinfo)
Esempio n. 2
0
 def test_it_should_parse_multiple_arg_required(self):
     args = {
         'foo': fields.List(fields.Int(), required=True)
     }
     request = make_json_request({})
     with pytest.raises(tornado.web.HTTPError) as excinfo:
         parser.parse(args, request)
     assert 'Missing data for required field.' in str(excinfo)
Esempio n. 3
0
    def test_it_should_parse_required_arguments(self):
        args = {"foo": fields.Field(required=True)}

        request = make_json_request({})

        msg = "Missing data for required field."
        with pytest.raises(tornado.web.HTTPError, match=msg):
            parser.parse(args, request)
Esempio n. 4
0
 def test_parsing_clears_cache(self):
     request = make_json_request({'string': 'value', 'integer': [1, 2]})
     string_result = parser.parse_json(request, 'string', fields.Str())
     assert string_result == 'value'
     assert 'json' in parser._cache
     assert 'string' in parser._cache['json']
     assert 'integer' in parser._cache['json']
     attrs = {'string': fields.Str(), 'integer': fields.List(fields.Int())}
     parser.parse(attrs, request)
     assert parser._cache == {}
Esempio n. 5
0
    def test_it_should_parse_required_arguments(self):
        args = {
            'foo': Arg(required=True),
        }

        request = make_json_request({})

        with pytest.raises(tornado.web.HTTPError) as excinfo:
            parser.parse(args, request)
        assert 'Required parameter "foo" not found' in str(excinfo)
Esempio n. 6
0
 def test_parsing_clears_cache(self):
     request = make_json_request({"string": "value", "integer": [1, 2]})
     string_result = parser.parse_json(request, "string", fields.Str())
     assert string_result == "value"
     assert "json" in parser._cache
     assert "string" in parser._cache["json"]
     assert "integer" in parser._cache["json"]
     attrs = {"string": fields.Str(), "integer": fields.List(fields.Int())}
     parser.parse(attrs, request)
     assert parser._cache == {}
Esempio n. 7
0
 def test_parsing_clears_cache(self):
     request = make_json_request({'string': 'value', 'integer': [1, 2]})
     string_result = parser.parse_json(request, 'string', Arg(str))
     assert string_result == 'value'
     assert 'json' in parser._cache
     assert 'string' in parser._cache['json']
     assert 'integer' in parser._cache['json']
     attrs = {'string': Arg(str), 'integer': Arg(int, multiple=True)}
     parser.parse(attrs, request)
     assert parser._cache == {}
Esempio n. 8
0
    def test_it_should_raise_when_json_is_invalid(self):
        attrs = {"foo": fields.Str()}

        request = make_request(body='{"foo": 42,}',
                               headers={"Content-Type": "application/json"})
        with pytest.raises(tornado.web.HTTPError) as excinfo:
            parser.parse(attrs, request)
        error = excinfo.value
        assert error.status_code == 400
        assert error.messages == {"json": ["Invalid JSON body."]}
Esempio n. 9
0
 def test_parsing_clears_cache(self):
     request = make_json_request({
         'string': 'value',
         'integer': [1, 2]
     })
     string_result = parser.parse_json(request, 'string', Arg(str))
     assert string_result == 'value'
     assert 'json' in parser._cache
     assert 'string' in parser._cache['json']
     assert 'integer' in parser._cache['json']
     attrs = {'string': Arg(str), 'integer': Arg(int, multiple=True)}
     parser.parse(attrs, request)
     assert parser._cache == {}
Esempio n. 10
0
    async def get(self):
        args = parser.parse(DirectionsQuerySchema, self.request,
                            locations=('query',))

        error_msg = 'Google Maps API error response: %s'
        try:
            routes = await self.googlemaps.directions(**args)
        except googlemaps.exceptions.ApiError as e:
            self.send_error(
                ApiErrorCode[e.status].value,
                message=error_msg % (e.message if e.message else e.status)
            )
            return
        except googlemaps.exceptions.HTTPError as e:
            self.send_error(e.status_code,
                            message=error_msg % 'HTTP error')
            return
        except googlemaps.exceptions.Timeout as e:
            self.send_error(599, message=error_msg % 'timeout')
            return
        except googlemaps.exceptions.TransportError as e:
            self.send_error(500, message=error_msg % 'transport error')
            return

        result = [{'id': i, 'route': r} for i, r in enumerate(routes)]
        schema = DirectionsSchema(many=True)
        output = schema.dumps(result)
        self.finish(output.data)
Esempio n. 11
0
    async def get(self):
        args = parser.parse(DirectionsQuerySchema,
                            self.request,
                            locations=('query', ))

        error_msg = 'Google Maps API error response: %s'
        try:
            routes = await self.googlemaps.directions(**args)
        except googlemaps.exceptions.ApiError as e:
            self.send_error(ApiErrorCode[e.status].value,
                            message=error_msg %
                            (e.message if e.message else e.status))
            return
        except googlemaps.exceptions.HTTPError as e:
            self.send_error(e.status_code, message=error_msg % 'HTTP error')
            return
        except googlemaps.exceptions.Timeout as e:
            self.send_error(599, message=error_msg % 'timeout')
            return
        except googlemaps.exceptions.TransportError as e:
            self.send_error(500, message=error_msg % 'transport error')
            return

        result = [{'id': i, 'route': r} for i, r in enumerate(routes)]
        schema = DirectionsSchema(many=True)
        output = schema.dumps(result)
        self.finish(output.data)
Esempio n. 12
0
            def decorator(self):
                # 校验参数
                req_args = parser.parse(schema, self.request)
                # 参数个数在5个以内,直接解构
                if len(req_args) <= 5:
                    return func(self, **req_args)

                return func(self, req_args)
Esempio n. 13
0
    def test_it_should_parse_header_arguments(self):
        attrs = {"string": fields.Str(), "integer": fields.List(fields.Int())}

        request = make_request(headers={"string": "value", "integer": ["1", "2"]})

        parsed = parser.parse(attrs, request, locations=["headers"])

        assert parsed["string"] == value
        assert parsed["integer"] == [1, 2]
Esempio n. 14
0
    def test_it_should_parse_json_arguments(self):
        attrs = {'string': Arg(str), 'integer': Arg(int, multiple=True)}

        request = make_json_request({'string': 'value', 'integer': [1, 2]})

        parsed = parser.parse(attrs, request)

        assert parsed['integer'] == [1, 2]
        assert parsed['string'] == value
Esempio n. 15
0
    def test_it_should_parse_json_arguments(self):
        attrs = {"string": fields.Str(), "integer": fields.List(fields.Int())}

        request = make_json_request({"string": "value", "integer": [1, 2]})

        parsed = parser.parse(attrs, request)

        assert parsed["integer"] == [1, 2]
        assert parsed["string"] == value
Esempio n. 16
0
    def test_it_should_parse_files_arguments(self):
        attrs = {"string": fields.Str(), "integer": fields.List(fields.Int())}

        request = make_files_request([("string", "value"), ("integer", "1"),
                                      ("integer", "2")])

        parsed = parser.parse(attrs, request, location="files")

        assert parsed["string"] == value
        assert parsed["integer"] == [1, 2]
Esempio n. 17
0
    def test_it_should_parse_form_arguments(self):
        attrs = {'string': Arg(), 'integer': Arg(int, multiple=True)}

        request = make_form_request([('string', 'value'), ('integer', '1'),
                                     ('integer', '2')])

        parsed = parser.parse(attrs, request)

        assert parsed['integer'] == [1, 2]
        assert parsed['string'] == bvalue
Esempio n. 18
0
    def test_it_should_parse_files_arguments(self):
        attrs = {'string': Arg(str), 'integer': Arg(int, multiple=True)}

        request = make_files_request([('string', 'value'), ('integer', '1'),
                                      ('integer', '2')])

        parsed = parser.parse(attrs, request, locations=['files'])

        assert parsed['string'] == value
        assert parsed['integer'] == [1, 2]
Esempio n. 19
0
    def test_it_should_parse_form_arguments(self):
        attrs = {"string": fields.Field(), "integer": fields.List(fields.Int())}

        request = make_form_request(
            [("string", "value"), ("integer", "1"), ("integer", "2")]
        )

        parsed = parser.parse(attrs, request)

        assert parsed["integer"] == [1, 2]
        assert parsed["string"] == value
Esempio n. 20
0
    def test_it_should_parse_json_arguments(self):
        attrs = {
            'string': fields.Str(),
            'integer': fields.List(fields.Int()),
        }

        request = make_json_request({'string': 'value', 'integer': [1, 2]})

        parsed = parser.parse(attrs, request)

        assert parsed['integer'] == [1, 2]
        assert parsed['string'] == value
Esempio n. 21
0
    def test_it_should_parse_header_arguments(self):
        attrs = {'string': Arg(str), 'integer': Arg(int, multiple=True)}

        request = make_request(headers={
            'string': 'value',
            'integer': ['1', '2']
        })

        parsed = parser.parse(attrs, request, locations=['headers'])

        assert parsed['string'] == value
        assert parsed['integer'] == [1, 2]
Esempio n. 22
0
    def test_it_should_parse_form_arguments(self):
        attrs = {
            'string': fields.Field(),
            'integer': fields.List(fields.Int()),
        }

        request = make_form_request([('string', 'value'), ('integer', '1'),
                                     ('integer', '2')])

        parsed = parser.parse(attrs, request)

        assert parsed['integer'] == [1, 2]
        assert parsed['string'] == value
Esempio n. 23
0
    def test_it_should_parse_files_arguments(self):
        attrs = {
            'string': fields.Str(),
            'integer': fields.List(fields.Int()),
        }

        request = make_files_request([('string', 'value'), ('integer', '1'),
                                      ('integer', '2')])

        parsed = parser.parse(attrs, request, locations=['files'])

        assert parsed['string'] == value
        assert parsed['integer'] == [1, 2]
Esempio n. 24
0
    def test_it_should_parse_form_arguments(self):
        attrs = {
            'string': Arg(),
            'integer': Arg(int, multiple=True)
        }

        request = make_form_request([
            ('string', 'value'),('integer', '1'), ('integer', '2')
        ])

        parsed = parser.parse(attrs, request)

        assert parsed['integer'] == [1, 2]
        assert parsed['string'] == bvalue
Esempio n. 25
0
    def test_it_should_parse_files_arguments(self):
        attrs = {
            'string': Arg(str),
            'integer': Arg(int, multiple=True)
        }

        request = make_files_request([
            ('string', 'value'),('integer', '1'), ('integer', '2')
        ])

        parsed = parser.parse(attrs, request, targets=['files'])

        assert parsed['string'] == value
        assert parsed['integer'] == [1, 2]
Esempio n. 26
0
    def test_it_should_parse_json_arguments(self):
        attrs = {
            'string': Arg(str),
            'integer': Arg(int, multiple=True)
        }

        request = make_json_request({
            'string': 'value',
            'integer': [1, 2]
        })

        parsed = parser.parse(attrs, request)

        assert parsed['integer'] == [1, 2]
        assert parsed['string'] == value
Esempio n. 27
0
    def test_it_should_parse_header_arguments(self):
        attrs = {
            'string': Arg(str),
            'integer': Arg(int, multiple=True)
        }

        request = make_request(headers={
            'string': 'value',
            'integer': ['1', '2']
        })

        parsed = parser.parse(attrs, request, targets=['headers'])

        assert parsed['string'] == value
        assert parsed['integer'] == [1, 2]
Esempio n. 28
0
    def test_it_should_parse_header_arguments(self):
        attrs = {
            'string': fields.Str(),
            'integer': fields.List(fields.Int()),
        }

        request = make_request(headers={
            'string': 'value',
            'integer': ['1', '2']
        })

        parsed = parser.parse(attrs, request, locations=['headers'])

        assert parsed['string'] == value
        assert parsed['integer'] == [1, 2]
Esempio n. 29
0
 def test_it_should_fail_with_bad_request_on_error(self):
     with pytest.raises(tornado.web.HTTPError):
         parser.parse(None, make_request())
Esempio n. 30
0
 def test_it_should_raise_httperror_on_failed_validation(self):
     args = {'foo': Arg(validate=lambda x: False)}
     with pytest.raises(tornado.web.HTTPError):
         parser.parse(args, make_json_request({'foo': 42}))
Esempio n. 31
0
 async def get(self):
     """List all payments by params."""
     params = parser.parse(self.param_search_by,
                           self.request,
                           locations=("querystring", "json"))
     await self._execute_method(FactoryTypePayment.list_objects, params)
Esempio n. 32
0
 def __get_param_parser(self, p_type):
     if p_type not in self.__type_paymends.keys():
         raise TypePaymentNotFound("Payment not found %s" % p_type)
     return parser.parse(self.__type_paymends[p_type], self.request)
Esempio n. 33
0
 def test_it_should_fail_with_bad_request_on_error(self):
     with pytest.raises(tornado.web.HTTPError) as error:
         parser.parse(None, make_request())
Esempio n. 34
0
    def parse_request(self, args):
        """HTTP Request Parser

        Parse request parameters from any HTTP methods
        """
        return parser.parse(args, self.request)
Esempio n. 35
0
 def test_it_should_raise_httperror_on_failed_validation(self):
     args = {'foo': Arg(validate=lambda x: False)}
     with pytest.raises(tornado.web.HTTPError):
         parser.parse(args, make_json_request({'foo': 42}))
Esempio n. 36
0
 def test_it_should_parse_multiple_arg_required(self):
     args = {"foo": fields.List(fields.Int(), required=True)}
     request = make_json_request({})
     msg = "Missing data for required field."
     with pytest.raises(tornado.web.HTTPError, match=msg):
         parser.parse(args, request)
Esempio n. 37
0
 def test_it_should_parse_multiple_args_with_conversion(self):
     args = {'foo': Arg(int, multiple=True)}
     request = make_json_request({})
     result = parser.parse(args, request)
     assert result == {'foo': []}
Esempio n. 38
0
 def test_it_should_parse_multiple_arg_allowed_missing(self):
     args = {'foo': Arg(int, multiple=True, allow_missing=True)}
     request = make_json_request({})
     result = parser.parse(args, request)
     assert result == {}
Esempio n. 39
0
    def parse_request(self, args):
        """HTTP Request Parser

        Parse request parameters from any HTTP methods
        """
        return parser.parse(args, self.request)