import pytest

from openapi_parser.builders import HeaderBuilder, SchemaFactory
from openapi_parser.enumeration import DataType
from openapi_parser.specification import Header, Integer, Schema, String


def _get_schema_factory_mock(expected_value: Schema) -> SchemaFactory:
    mock_object = MagicMock()
    mock_object.create.return_value = expected_value

    return mock_object


string_schema = String(type=DataType.STRING)
integer_schema = Integer(type=DataType.INTEGER)

collection_data_provider = (
    ({
        "X-Header": {
            "schema": {
                "type": "string"
            }
        }
    }, [
        Header(schema=string_schema, name="X-Header"),
    ], _get_schema_factory_mock(string_schema)),
    ({
        "X-Header": {
            "description":

response_schema = Response(code=200,
                           description="Pet updated.",
                           content=[
                               Content(type=ContentType.JSON,
                                       schema=Object(type=DataType.OBJECT))
                           ])

parameter_list = [
    Parameter(
        name="petId",
        location=ParameterLocation.PATH,
        description="ID of pet that needs to be updated",
        required=True,
        schema=String(type=DataType.STRING),
    )
]

external_doc = ExternalDoc(description="Find more info here",
                           url="https://example.com")

request_body = RequestBody(content=[
    Content(type=ContentType.FORM,
            schema=Object(
                type=DataType.OBJECT,
                required=["status"],
                properties=[
                    Property(name="name",
                             schema=String(
                                 type=DataType.STRING,

def _get_builder_mock(expected_value: Any) -> Union[ContentBuilder, HeaderBuilder]:
    mock_object = MagicMock()
    mock_object.build_list.return_value = expected_value

    return mock_object


content_schema = [
    Content(
        type=ContentType.JSON,
        schema=Object(
            type=DataType.OBJECT,
            properties=[
                Property(name="login", schema=String(type=DataType.STRING))
            ]
        )
    )
]

header_schema = [
    Header(
        name="X-Rate-Limit-Limit",
        description="The number of allowed requests in the current period",
        schema=Integer(type=DataType.INTEGER)
    )
]

data_provider = (
    (
예제 #4
0
         "type": "string",
         "maxLength": 1,
         "minLength": 0,
         "pattern": "[0-9]",
         "format": "uuid",
     }, {
         "type": "integer",
         "format": "int32",
     }],
 },
  OneOf(type=DataType.ONE_OF,
        schemas=[
            String(
                type=DataType.STRING,
                max_length=1,
                min_length=0,
                pattern="[0-9]",
                format=StringFormat.UUID,
            ),
            Integer(
                type=DataType.INTEGER,
                format=IntegerFormat.INT32,
            ),
        ])),
 ({
     "oneOf": [{
         "type": "string",
         "maxLength": 1,
         "minLength": 0,
         "pattern": "[0-9]",
         "format": "uuid",
def _get_builder_mock(expected_value):
    mock_object = MagicMock()
    mock_object.build.return_value = expected_value

    return mock_object


def _get_builder_list_mock(expected_value):
    mock_object = MagicMock()
    mock_object.build_list.return_value = expected_value

    return mock_object


array_schema = Array(type=DataType.ARRAY, items=String(type=DataType.STRING))

parameters_list = [
    Parameter(
        name="id",
        location=ParameterLocation.PATH,
        description="ID of pet to use",
        required=True,
        schema=array_schema
    )
]

operation_object = Operation(
    method=OperationMethod.GET,
    description="Returns pets based on ID",
    summary="Find pets by ID",