-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathtest_swagger_openapi_v3.py
47 lines (33 loc) · 1.38 KB
/
test_swagger_openapi_v3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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]