-
-
Notifications
You must be signed in to change notification settings - Fork 594
Open
Description
this code does not show any validation error
from referencing import Registry from referencing.jsonschema import DRAFT7 from jsonschema import Draft7Validator schema = { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "test_schema_II.json", "type": "object", "definitions": { "step" : { "personal": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the person" }, "address": { "$ref": "../address/json_schema.json#/definitions/address" } }, "required": ["name", "address"] } } } } base_resource = DRAFT7.create_resource(schema) draft7_resources = [('/', base_resource)] schema_address = { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "json_schema.json", "definitions": { "address": { "type": "object", "properties": { "street": { "type": "string" }, "city": { "type": "string" }, "postalCode": { "type": "string" } }, "required": ["street", "city", "postalCode"] } } } draft7_resources.append(('./address/json_schema.json',DRAFT7.create_resource(schema_address))) registry = Registry().with_resources(draft7_resources) print("Registry created with resources.") # no stats method for registry, but we can print and get number of uncrawled print(registry) validator = Draft7Validator(schema, registry=registry) # valid and ok data_good = { "HEADER": { "file_type": "test data", "file_version": 1 }, "definitions": { "step": { "personal": { "name": "Test Data", "address": { "street": "123 Main St", "city": "Anytown", "postalCode": "12345" } } } } } result = validator.is_valid(data_good) print(f"Validation result: for data good is {'valid' if result else 'not valid'}") data_bad = { "HEADER": { "file_type": "test data", "file_version": 1 }, "definitions": { "step": { "personal": { "name": "Test Data", "address": { "street": "123 Main St", } } } } } # !!!! should not be valid !!! result_bad = validator.is_valid(data_bad) print(f"Validation result: for data bad is {'valid' if result_bad else 'not valid'}") # !!!! should have entries !!! print("For data_bad validation errors:") for error in validator.iter_errors(data_bad): print(f"- {error.message}")
for a less nested schema
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "json_schema.json", "type": "object", "properties": { "address": { "$ref": "../address/json_schema.json#/definitions/address" } }, "required": ["address"] }
it shows for this data
{ "HEADER": { "file_type": "test data", "file_version": 1 }, "name": "Test Data", "address": { "street": "123 Main St" }
- 'city' is a required property
- 'postalCode' is a required property
and I would have expected the same result for the nested schema/data.
Is there an explanation why this does not happen ?
Metadata
Metadata
Assignees
Labels
No labels