Open
Description
Dear team,
I've been trying my best to migrate my schema validation from RefResolver to the newer referencing library, but with no avail.
I would really appreciate some help or tips to point me in the right direction.
What is working for me, with RefResolver, is the following code:
def validate_schema(
instance: dict[str, Any],
schema: dict[str, Any],
*,
path: str,
method: str,
response: str,
content: str = "application/json",
) -> None:
try:
_methods = schema["paths"][path]
except KeyError: # pragma: no cover (should never happen)
msg = f"Path {path} not found in schema"
raise ValueError(msg) from None
try:
_responses = _methods[method]
except KeyError: # pragma: no cover (should never happen)
msg = f"Method {method} not found in schema"
raise ValueError(msg) from None
try:
_content = _responses["responses"][response]["content"]
except KeyError: # pragma: no cover (should never happen)
msg = f"Response {response} not found in schema"
raise ValueError(msg) from None
try:
_schema = _content[content]["schema"]
except KeyError: # pragma: no cover (should never happen)
msg = f"Content {content} not found in schema"
raise ValueError(msg) from None
openapi_schema_validator.validate(
instance,
_schema,
cls=OAS30Validator,
resolver=RefResolver.from_schema(schema), # TODO: migrate to referencing lib
)
I then tried to migrate to the referencing lib as mentioned here:
resource = Resource.from_contents(schema, default_specification=DRAFT202012)
registry = Registry().with_resource("", resource)
openapi_schema_validator.validate(instance, _schema, registry=registry)
But with no success, as all I get are errors like:
jsonschema.exceptions._WrappedReferencingError: PointerToNowhere: '/components/schemas/Foo' does not exist within {'$ref': '#/components/schemas/Foo'}
What am I missing? Thank you for the help.
Metadata
Metadata
Assignees
Labels
No labels