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()
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
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, )
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, )
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
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()