1
0
Fork 0
openapi-pydantic/tests/schema_classes/test_schema.py

65 lines
1.7 KiB
Python
Raw Normal View History

import logging
from pydantic import BaseModel
from openapi_pydantic import Reference, schema_validate
from openapi_pydantic.compat import (
DEFS_KEY,
PYDANTIC_V2,
ConfigDict,
Extra,
models_json_schema,
v1_schema,
)
def test_schema() -> None:
schema = schema_validate(
{
"title": "reference list",
"description": "schema for list of reference type",
"allOf": [{"$ref": "#/definitions/TestType"}],
}
)
logging.debug(f"schema.allOf={schema.allOf}")
assert schema.allOf
assert isinstance(schema.allOf, list)
assert isinstance(schema.allOf[0], Reference)
assert schema.allOf[0].ref == "#/definitions/TestType"
def test_additional_properties_is_bool() -> None:
class TestModel(BaseModel):
test_field: str
if PYDANTIC_V2:
model_config = ConfigDict(
extra="forbid",
)
else:
class Config:
extra = Extra.forbid
if PYDANTIC_V2:
_key_map, schema_definition = models_json_schema([(TestModel, "validation")])
else:
schema_definition = v1_schema([TestModel])
assert schema_definition == {
DEFS_KEY: {
"TestModel": {
"title": "TestModel",
"type": "object",
"properties": {"test_field": {"title": "Test Field", "type": "string"}},
"required": ["test_field"],
"additionalProperties": False,
}
}
}
# allow "additionalProperties" to have boolean value
result = schema_validate(schema_definition[DEFS_KEY]["TestModel"])
assert result.additionalProperties is False