def test_decode_without_decoder(): data = '123' type_ = object expected_errors = {'non_field_error': 'Invalid type.'} with pytest.raises(JSONDecodeException) as ex: json_decode(data, type_) assert ex.value.errors == expected_errors
def _parse_page_position(self, argument: ComponentMethodArgument, http_request: Request) -> PagePosition: raw_limit = http_request.query_params.get(self.limit_name) or None raw_offset = http_request.query_params.get(self.offset_name) or None raw_order_by = http_request.query_params.get(self.order_by_name, '') limit = json_decode(raw_limit, Optional[PositiveInteger]) offset = json_decode(raw_offset, Optional[PositiveInteger]) sort = self._parse_sort_properties(raw_order_by, argument) return PagePosition(limit=limit, offset=offset, sort=sort)
def resolve_argument( self, argument: ComponentMethodArgument, request: Request, response_headers: MutableMapping[str, str], ): query_parameters = request.query_params query_parameter = self._get_query_parameter(argument) if query_parameter is None: raise ArgumentNotSupported(argument) parameter_name = query_parameter.name explode = query_parameter.explode is_iterable = is_iterable_type(argument.type_) if parameter_name not in query_parameters: try: return argument.get_default() except ArgumentDoesNotHaveDefault: raise JSONDecodeException( f'Missing required query parameter "{parameter_name}"') value = self._get_value(query_parameters, parameter_name, is_iterable, explode) return json_decode(value, argument.type_)
def test_decode(data, expected_instance): instance = json_decode(data, User) assert instance == expected_instance for field in dataclasses.fields(User): instance_data = getattr(instance, field.name) expected_data = getattr(expected_instance, field.name) assert instance_data == expected_data, field.name
def test_decode_bool_with_errors(data, type_, expected_errors): with pytest.raises(JSONDecodeException) as ex: json_decode(data, type_) assert ex.value.errors == expected_errors
def test_decode_bool(data, type_, expected_instance): instance = json_decode(data, type_) assert instance == expected_instance
def test_decode_any(): instance = object() assert json_decode(instance, Any) is instance