Esempio n. 1
0
    def test_create_request_body_converter_without_schema(self, mocker):
        expected_result = None
        converter = converters.PydanticConverter()

        result = converter.create_request_body_converter(mocker.sentinel)

        assert result is expected_result
Esempio n. 2
0
    def test_create_response_body_converter_without_schema(self):
        expected_result = None
        converter = converters.PydanticConverter()

        result = converter.create_response_body_converter("not a schema")

        assert result is expected_result
Esempio n. 3
0
    def test_create_string_converter(self, pydantic_model_mock):
        expected_result = None
        _, model = pydantic_model_mock
        converter = converters.PydanticConverter()

        c = converter.create_string_converter(model, None)

        assert c is expected_result
Esempio n. 4
0
    def test_init_without_pydantic(self, mocker):
        mocker.patch.object(
            converters.PydanticConverter,
            "pydantic",
            new_callable=mocker.PropertyMock,
            return_value=None,
        )

        with pytest.raises(ImportError):
            converters.PydanticConverter()
Esempio n. 5
0
    def test_create_request_body_converter(self, pydantic_model_mock):
        expected_result = {"id": 0}
        request_body = {}

        model_mock, model = pydantic_model_mock
        model_mock.dict.return_value = expected_result

        converter = converters.PydanticConverter()
        request_converter = converter.create_request_body_converter(model)

        result = request_converter.convert(request_body)

        assert result == expected_result
        model_mock.dict.assert_called_once()
Esempio n. 6
0
    def test_create_response_body_converter_invalid_response(
            self, mocker, pydantic_model_mock):
        data = {"quick": "fox"}
        _, model = pydantic_model_mock

        parse_obj_mock = mocker.patch.object(
            model,
            "parse_obj",
            side_effect=pydantic.ValidationError([], model))

        converter = converters.PydanticConverter()
        c = converter.create_response_body_converter(model)

        with pytest.raises(pydantic.ValidationError):
            c.convert(data)

        parse_obj_mock.assert_called_once_with(data)
Esempio n. 7
0
    def test_create_response_body_converter(self, mocker, pydantic_model_mock):
        expected_result = "data"
        model_mock, model = pydantic_model_mock

        parse_obj_mock = mocker.patch.object(model,
                                             "parse_obj",
                                             return_value=expected_result)

        response = mocker.Mock(spec=["json"])
        response.json.return_value = {}

        converter = converters.PydanticConverter()
        c = converter.create_response_body_converter(model)

        result = c.convert(response)

        response.json.assert_called_once()
        parse_obj_mock.assert_called_once_with(response.json())
        assert result == expected_result
Esempio n. 8
0
    def test_convert_complex_model(self):
        from json import loads
        from datetime import datetime

        class ComplexModel(pydantic.BaseModel):
            when = datetime.utcnow()  # type: datetime
            where = "http://example.com"  # type: pydantic.AnyUrl
            some = [1]  # type: typing.List[int]

        model = ComplexModel()
        request_body = {}
        expected_result = loads(model.json())

        converter = converters.PydanticConverter()
        request_converter = converter.create_request_body_converter(
            ComplexModel)

        result = request_converter.convert(request_body)

        assert result == expected_result