1
0
Fork 0
openapi-pydantic/tests/test_swagger_openapi_v3.py
Daniel Baumann 97e6d74bac
Adding upstream version 0.5.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-04 22:22:32 +02:00

47 lines
1.4 KiB
Python

from typing import Dict, Optional
from pydantic import Field
from openapi_pydantic.compat import PYDANTIC_V2, ConfigDict
from openapi_pydantic.v3.v3_0 import OpenAPI, Operation, PathItem
def test_swagger_openapi_v3() -> None:
with open("tests/data/swagger_openapi_v3.0.1.json") as f:
if PYDANTIC_V2:
validate = getattr(ExtendedOpenAPI, "model_validate_json")
else:
validate = getattr(ExtendedOpenAPI, "parse_raw")
open_api = validate(f.read())
assert open_api
class ExtendedOperation(Operation):
"""Override classes to use "x-codegen-request-body-name" in Operation"""
xCodegenRequestBodyName: Optional[str] = Field(
default=None, alias="x-codegen-request-body-name"
)
if PYDANTIC_V2:
model_config = ConfigDict(populate_by_name=True)
else:
class Config:
allow_population_by_field_name = True
class ExtendedPathItem(PathItem):
get: Optional[ExtendedOperation] = None
put: Optional[ExtendedOperation] = None
post: Optional[ExtendedOperation] = None
delete: Optional[ExtendedOperation] = None
options: Optional[ExtendedOperation] = None
head: Optional[ExtendedOperation] = None
patch: Optional[ExtendedOperation] = None
trace: Optional[ExtendedOperation] = None
class ExtendedOpenAPI(OpenAPI):
paths: Dict[str, ExtendedPathItem] # type: ignore[assignment]