1
0
Fork 0
openapi-pydantic/tests/test_alias.py

79 lines
2.9 KiB
Python
Raw Normal View History

from typing import Callable
from openapi_pydantic import (
MediaType,
Parameter,
PathItem,
Reference,
Schema,
SecurityScheme,
)
from openapi_pydantic.compat import PYDANTIC_V2
validate_func_name = "model_validate" if PYDANTIC_V2 else "parse_obj"
def test_media_type_alias() -> None:
media_type_1 = MediaType(media_type_schema=Schema())
media_type_2 = MediaType(schema=Schema())
model_validate: Callable[[dict], MediaType] = getattr(MediaType, validate_func_name)
media_type_3 = model_validate({"media_type_schema": Schema()})
media_type_4 = model_validate({"schema": Schema()})
assert media_type_1 == media_type_2 == media_type_3 == media_type_4
def test_parameter_alias() -> None:
parameter_1 = Parameter( # type: ignore
name="test",
param_in="path",
param_schema=Schema(),
)
parameter_2 = Parameter( # type: ignore
name="test",
param_in="path",
schema=Schema(),
)
model_validate: Callable[[dict], Parameter] = getattr(Parameter, validate_func_name)
parameter_3 = model_validate(
{"name": "test", "param_in": "path", "param_schema": Schema()}
)
parameter_4 = model_validate({"name": "test", "in": "path", "schema": Schema()})
assert parameter_1 == parameter_2 == parameter_3 == parameter_4
def test_path_item_alias() -> None:
path_item_1 = PathItem(ref="#/dummy")
model_validate: Callable[[dict], PathItem] = getattr(PathItem, validate_func_name)
path_item_2 = model_validate({"ref": "#/dummy"})
path_item_3 = model_validate({"$ref": "#/dummy"})
assert path_item_1 == path_item_2 == path_item_3
def test_reference_alias() -> None:
reference_1 = Reference(ref="#/dummy") # type: ignore
reference_2 = Reference(**{"$ref": "#/dummy"})
model_validate: Callable[[dict], Reference] = getattr(Reference, validate_func_name)
reference_3 = model_validate({"ref": "#/dummy"})
reference_4 = model_validate({"$ref": "#/dummy"})
assert reference_1 == reference_2 == reference_3 == reference_4
def test_security_scheme() -> None:
security_scheme_1 = SecurityScheme(type="apiKey", security_scheme_in="header")
model_validate: Callable[[dict], SecurityScheme] = getattr(
SecurityScheme, validate_func_name
)
security_scheme_2 = model_validate(
{"type": "apiKey", "security_scheme_in": "header"}
)
security_scheme_3 = model_validate({"type": "apiKey", "in": "header"})
assert security_scheme_1 == security_scheme_2 == security_scheme_3
def test_schema() -> None:
schema_1 = Schema(schema_not=Schema(), schema_format="email")
model_validate: Callable[[dict], Schema] = getattr(Schema, validate_func_name)
schema_2 = model_validate({"schema_not": Schema(), "schema_format": "email"})
schema_3 = model_validate({"not": Schema(), "format": "email"})
assert schema_1 == schema_2 == schema_3