Esempio n. 1
0
    def test_add_body_no_data(self, mocker):
        from openapi_python_client.parser.openapi import Endpoint, Schemas

        parse_request_form_body = mocker.patch.object(Endpoint, "parse_request_form_body")
        endpoint = self.make_endpoint()
        schemas = Schemas()

        Endpoint._add_body(endpoint=endpoint, data=oai.Operation.construct(), schemas=schemas, config=MagicMock())

        parse_request_form_body.assert_not_called()
Esempio n. 2
0
    def test_add_body_happy(self, mocker):
        from openapi_python_client.parser.openapi import Endpoint, Reference, Schemas
        from openapi_python_client.parser.properties import Property

        request_body = mocker.MagicMock()
        form_body_reference = Reference.from_ref(ref="a")
        multipart_body_reference = Reference.from_ref(ref="b")
        parse_request_form_body = mocker.patch.object(
            Endpoint,
            "parse_request_form_body",
            return_value=form_body_reference)
        parse_multipart_body = mocker.patch.object(
            Endpoint,
            "parse_multipart_body",
            return_value=multipart_body_reference)

        json_body = mocker.MagicMock(autospec=Property)
        json_body_imports = mocker.MagicMock()
        json_body.get_imports.return_value = {json_body_imports}
        parsed_schemas = mocker.MagicMock()
        parse_request_json_body = mocker.patch.object(
            Endpoint,
            "parse_request_json_body",
            return_value=(json_body, parsed_schemas))
        import_string_from_reference = mocker.patch(
            f"{MODULE_NAME}.import_string_from_reference",
            side_effect=["import_1", "import_2"])

        endpoint = Endpoint(
            path="path",
            method="method",
            description=None,
            name="name",
            requires_security=False,
            tag="tag",
            relative_imports={"import_3"},
        )
        initial_schemas = mocker.MagicMock()

        (endpoint, response_schemas) = Endpoint._add_body(
            endpoint=endpoint,
            data=oai.Operation.construct(requestBody=request_body),
            schemas=initial_schemas)

        assert response_schemas == parsed_schemas
        parse_request_form_body.assert_called_once_with(request_body)
        parse_request_json_body.assert_called_once_with(
            body=request_body, schemas=initial_schemas, parent_name="name")
        parse_multipart_body.assert_called_once_with(request_body)
        import_string_from_reference.assert_has_calls([
            mocker.call(form_body_reference, prefix="...models"),
            mocker.call(multipart_body_reference, prefix="...models"),
        ])
        json_body.get_imports.assert_called_once_with(prefix="...")
        assert endpoint.relative_imports == {
            "import_1", "import_2", "import_3", json_body_imports
        }
        assert endpoint.json_body == json_body
        assert endpoint.form_body_reference == form_body_reference
        assert endpoint.multipart_body_reference == multipart_body_reference
Esempio n. 3
0
    def test_add_body_bad_data(self, mocker):
        from openapi_python_client.parser.openapi import Endpoint, Schemas

        mocker.patch.object(Endpoint, "parse_request_form_body")
        parse_error = ParseError(data=mocker.MagicMock())
        other_schemas = mocker.MagicMock()
        mocker.patch.object(Endpoint,
                            "parse_request_json_body",
                            return_value=(parse_error, other_schemas))
        endpoint = Endpoint(
            path="path",
            method="method",
            description=None,
            name="name",
            requires_security=False,
            tag="tag",
            relative_imports={"import_3"},
        )
        request_body = mocker.MagicMock()
        schemas = Schemas()

        result = Endpoint._add_body(
            endpoint=endpoint,
            data=oai.Operation.construct(requestBody=request_body),
            schemas=schemas)

        assert result == (
            ParseError(detail=f"cannot parse body of endpoint {endpoint.name}",
                       data=parse_error.data),
            other_schemas,
        )
Esempio n. 4
0
    def test_add_body_bad_data(self, mocker):
        from openapi_python_client.parser.openapi import Endpoint, Schemas

        mocker.patch.object(Endpoint, "parse_request_form_body")
        parse_error = ParseError(data=mocker.MagicMock())
        other_schemas = mocker.MagicMock()
        mocker.patch.object(Endpoint,
                            "parse_request_json_body",
                            return_value=(parse_error, other_schemas))
        endpoint = self.make_endpoint()
        request_body = mocker.MagicMock()
        schemas = Schemas()

        result = Endpoint._add_body(
            endpoint=endpoint,
            data=oai.Operation.construct(requestBody=request_body),
            schemas=schemas,
            config=MagicMock(),
        )

        assert result == (
            ParseError(detail=f"cannot parse body of endpoint {endpoint.name}",
                       data=parse_error.data),
            other_schemas,
        )
Esempio n. 5
0
    def test_add_body_happy(self, mocker):
        from openapi_python_client.parser.openapi import Class, Endpoint
        from openapi_python_client.parser.properties import Property

        request_body = mocker.MagicMock()
        config = mocker.MagicMock()
        form_body_class = Class(name="A", module_name="a")
        multipart_body_class = Class(name="B", module_name="b")
        parse_request_form_body = mocker.patch.object(
            Endpoint, "parse_request_form_body", return_value=form_body_class)
        parse_multipart_body = mocker.patch.object(
            Endpoint,
            "parse_multipart_body",
            return_value=multipart_body_class)

        json_body = mocker.MagicMock(autospec=Property)
        json_body_imports = mocker.MagicMock()
        json_body.get_imports.return_value = {json_body_imports}
        parsed_schemas = mocker.MagicMock()
        parse_request_json_body = mocker.patch.object(
            Endpoint,
            "parse_request_json_body",
            return_value=(json_body, parsed_schemas))
        import_string_from_class = mocker.patch(
            f"{MODULE_NAME}.import_string_from_class",
            side_effect=["import_1", "import_2"])

        endpoint = self.make_endpoint()
        initial_schemas = mocker.MagicMock()

        (endpoint, response_schemas) = Endpoint._add_body(
            endpoint=endpoint,
            data=oai.Operation.construct(requestBody=request_body),
            schemas=initial_schemas,
            config=config,
        )

        assert response_schemas == parsed_schemas
        parse_request_form_body.assert_called_once_with(body=request_body,
                                                        config=config)
        parse_request_json_body.assert_called_once_with(
            body=request_body,
            schemas=initial_schemas,
            parent_name="name",
            config=config)
        parse_multipart_body.assert_called_once_with(body=request_body,
                                                     config=config)
        import_string_from_class.assert_has_calls([
            mocker.call(form_body_class, prefix="...models"),
            mocker.call(multipart_body_class, prefix="...models"),
        ])
        json_body.get_imports.assert_called_once_with(prefix="...")
        assert endpoint.relative_imports == {
            "import_1", "import_2", "import_3", json_body_imports
        }
        assert endpoint.json_body == json_body
        assert endpoint.form_body_class == form_body_class
        assert endpoint.multipart_body_class == multipart_body_class
Esempio n. 6
0
    def test_add_body_no_data(self, mocker):
        from openapi_python_client.parser.openapi import Endpoint, Schemas

        parse_request_form_body = mocker.patch.object(
            Endpoint, "parse_request_form_body")
        endpoint = Endpoint(
            path="path",
            method="method",
            description=None,
            name="name",
            requires_security=False,
            tag="tag",
            relative_imports={"import_3"},
        )
        schemas = Schemas()

        Endpoint._add_body(endpoint=endpoint,
                           data=oai.Operation.construct(),
                           schemas=schemas)

        parse_request_form_body.assert_not_called()