def test_null(self, schema_type): schema = {"type": schema_type} validator = OAS31Validator(schema) value = None with pytest.raises(ValidationError): validator.validate(value)
def test_schema_ref(self): schema = { "$ref": "#/$defs/Pet", "$defs": { "Pet": { "required": ["id", "name"], "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" }, "tag": { "type": "string" } } } } } validator = OAS31Validator( schema, format_checker=oas31_format_checker, ) result = validator.validate({"id": 1, "name": "John"}, schema) assert result is None with pytest.raises(ValidationError) as excinfo: validator.validate({"name": "John"}, schema) error = "'id' is a required property" assert error in str(excinfo.value)
def test_nullable(self, schema_type): schema = {"type": [schema_type, 'null']} validator = OAS31Validator(schema) value = None result = validator.validate(value) assert result is None
def iter_errors(self, schema, value): validator = OAS31Validator( schema, resolver=self.dereferencer.resolver_manager.resolver, format_checker=oas31_format_checker, ) for err in validator.iter_errors(value): yield err
def test_string_uuid(self, value): schema = {"type": 'string', "format": 'uuid'} validator = OAS31Validator( schema, format_checker=oas31_format_checker, ) result = validator.validate(value) assert result is None
def test_string_format_datetime_strict_rfc3339(self, value): schema = {"type": 'string', "format": 'date-time'} validator = OAS31Validator( schema, format_checker=oas31_format_checker, ) result = validator.validate(value) assert result is None
def test_schema_validation(self): schema = { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "age": { "type": "integer", "format": "int32", "minimum": 0, "nullable": True, }, "birth-date": { "type": "string", "format": "date", } }, "additionalProperties": False, } validator = OAS31Validator( schema, format_checker=oas31_format_checker, ) result = validator.validate({"name": "John", "age": 23}, schema) assert result is None with pytest.raises(ValidationError) as excinfo: validator.validate({"name": "John", "city": "London"}, schema) error = "Additional properties are not allowed ('city' was unexpected)" assert error in str(excinfo.value) with pytest.raises(ValidationError) as excinfo: validator.validate({"name": "John", "birth-date": "-12"}) error = "'-12' is not a 'date'" assert error in str(excinfo.value)