コード例 #1
0
    def test__add_parameters_fail_loudly_when_location_not_supported(
            self, mocker):
        from openapi_python_client.parser.openapi import Endpoint, Schemas

        endpoint = Endpoint(
            path="path",
            method="method",
            description=None,
            name="name",
            requires_security=False,
            tag="tag",
        )
        parsed_schemas = mocker.MagicMock()
        mocker.patch(f"{MODULE_NAME}.property_from_data",
                     return_value=(mocker.MagicMock(), parsed_schemas))
        param = oai.Parameter.construct(name="test",
                                        required=True,
                                        param_schema=mocker.MagicMock(),
                                        param_in="cookie")
        schemas = Schemas()

        result = Endpoint._add_parameters(
            endpoint=endpoint,
            data=oai.Operation.construct(parameters=[param]),
            schemas=schemas)
        assert result == (ParseError(
            data=param, detail="Parameter must be declared in path or query"),
                          parsed_schemas)
コード例 #2
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,
        )
コード例 #3
0
    def test__add_responses_status_code_error(self, mocker):
        from openapi_python_client.parser.openapi import Endpoint, Schemas

        schemas = Schemas()
        response_1_data = mocker.MagicMock()
        response_2_data = mocker.MagicMock()
        data = {
            "not_a_number": response_1_data,
        }
        endpoint = Endpoint(
            path="path",
            method="method",
            description=None,
            name="name",
            requires_security=False,
            tag="tag",
            relative_imports={"import_3"},
        )
        parse_error = ParseError(data=mocker.MagicMock())
        response_from_data = mocker.patch(f"{MODULE_NAME}.response_from_data",
                                          return_value=(parse_error, schemas))

        response, schemas = Endpoint._add_responses(endpoint=endpoint,
                                                    data=data,
                                                    schemas=schemas)

        assert response.errors == [
            ParseError(
                detail=
                f"Invalid response status code not_a_number (not a number), response will be ommitted from generated client"
            )
        ]
コード例 #4
0
    def test_parse_request_json_body_no_data(self):
        from openapi_python_client.parser.openapi import Endpoint, Schemas

        body = oai.RequestBody.construct(content={})
        schemas = Schemas()

        result = Endpoint.parse_request_json_body(body=body,
                                                  schemas=schemas,
                                                  parent_name="parent")

        assert result == (None, schemas)
コード例 #5
0
    def test__add_responses_error(self, mocker):
        from openapi_python_client.parser.openapi import Endpoint, Schemas

        schemas = Schemas()
        response_1_data = mocker.MagicMock()
        response_2_data = mocker.MagicMock()
        data = {
            "200": response_1_data,
            "404": response_2_data,
        }
        endpoint = Endpoint(
            path="path",
            method="method",
            description=None,
            name="name",
            requires_security=False,
            tag="tag",
            relative_imports={"import_3"},
        )
        parse_error = ParseError(data=mocker.MagicMock())
        response_from_data = mocker.patch(f"{MODULE_NAME}.response_from_data",
                                          return_value=(parse_error, schemas))

        response, schemas = Endpoint._add_responses(endpoint=endpoint,
                                                    data=data,
                                                    schemas=schemas)

        response_from_data.assert_has_calls([
            mocker.call(status_code=200,
                        data=response_1_data,
                        schemas=schemas,
                        parent_name="name"),
            mocker.call(status_code=404,
                        data=response_2_data,
                        schemas=schemas,
                        parent_name="name"),
        ])
        assert response.errors == [
            ParseError(
                detail=
                f"Cannot parse response for status code 200, response will be ommitted from generated client",
                data=parse_error.data,
            ),
            ParseError(
                detail=
                f"Cannot parse response for status code 404, response will be ommitted from generated client",
                data=parse_error.data,
            ),
        ]
コード例 #6
0
    def test__add_parameters_handles_no_params(self):
        from openapi_python_client.parser.openapi import Endpoint, Schemas

        endpoint = Endpoint(
            path="path",
            method="method",
            description=None,
            name="name",
            requires_security=False,
            tag="tag",
        )
        schemas = Schemas()
        # Just checking there's no exception here
        assert Endpoint._add_parameters(endpoint=endpoint,
                                        data=oai.Operation.construct(),
                                        schemas=schemas) == (
                                            endpoint,
                                            schemas,
                                        )
コード例 #7
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()
コード例 #8
0
    def test_parse_request_json_body(self, mocker):
        from openapi_python_client.parser.openapi import Endpoint, Schemas

        schema = mocker.MagicMock()
        body = oai.RequestBody.construct(content={
            "application/json":
            oai.MediaType.construct(media_type_schema=schema)
        })
        property_from_data = mocker.patch(f"{MODULE_NAME}.property_from_data")
        schemas = Schemas()

        result = Endpoint.parse_request_json_body(body=body,
                                                  schemas=schemas,
                                                  parent_name="parent")

        property_from_data.assert_called_once_with(name="json_body",
                                                   required=True,
                                                   data=schema,
                                                   schemas=schemas,
                                                   parent_name="parent")
        assert result == property_from_data.return_value