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)
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)
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)
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 == {}
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)
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 == {}
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 == {}
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."]}
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 == {}
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)
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)
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)
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]
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
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
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]
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
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]
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
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
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]
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
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]
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
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]
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
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]
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]
def test_it_should_fail_with_bad_request_on_error(self): with pytest.raises(tornado.web.HTTPError): parser.parse(None, make_request())
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}))
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)
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)
def test_it_should_fail_with_bad_request_on_error(self): with pytest.raises(tornado.web.HTTPError) as error: parser.parse(None, make_request())
def parse_request(self, args): """HTTP Request Parser Parse request parameters from any HTTP methods """ return parser.parse(args, self.request)
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)
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': []}
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 == {}