-
-
Notifications
You must be signed in to change notification settings - Fork 605
Description
I have been trying my best to migrate from RefResolver to the newer referencing lib but with no avail, and I even requested for help in the openapi-schema-validator repository: python-openapi/openapi-schema-validator#203 as I'm using jsonschema together with the openapi-schema-validator library.
I will report the issue I opened there, hoping that someone from your team can better assist me. Thank you for the help.
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.