コード例 #1
0
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
コード例 #2
0
 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)
コード例 #3
0
    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_)
コード例 #4
0
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
コード例 #5
0
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
コード例 #6
0
def test_decode_bool(data, type_, expected_instance):
    instance = json_decode(data, type_)
    assert instance == expected_instance
コード例 #7
0
def test_decode_any():
    instance = object()
    assert json_decode(instance, Any) is instance