392 lines
10 KiB
JSON
392 lines
10 KiB
JSON
[
|
|
{
|
|
"description": "allOf",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"bar": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"bar"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"foo": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"foo"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "allOf",
|
|
"data": {
|
|
"foo": "baz",
|
|
"bar": 2
|
|
},
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "mismatch second",
|
|
"data": {
|
|
"foo": "baz"
|
|
},
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "mismatch first",
|
|
"data": {
|
|
"bar": 2
|
|
},
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "wrong type",
|
|
"data": {
|
|
"foo": "baz",
|
|
"bar": "quux"
|
|
},
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allOf with base schema",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"properties": {
|
|
"bar": {
|
|
"type": "integer"
|
|
},
|
|
"baz": {},
|
|
"foo": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"bar"
|
|
],
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"foo": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"foo"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"baz": {
|
|
"type": "null"
|
|
}
|
|
},
|
|
"required": [
|
|
"baz"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "valid",
|
|
"data": {
|
|
"foo": "quux",
|
|
"bar": 2,
|
|
"baz": null
|
|
},
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "mismatch base schema",
|
|
"data": {
|
|
"foo": "quux",
|
|
"baz": null
|
|
},
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "mismatch first allOf",
|
|
"data": {
|
|
"bar": 2,
|
|
"baz": null
|
|
},
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "mismatch second allOf",
|
|
"data": {
|
|
"foo": "quux",
|
|
"bar": 2
|
|
},
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "mismatch both",
|
|
"data": {
|
|
"bar": 2
|
|
},
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allOf simple types",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
{
|
|
"maximum": 30
|
|
},
|
|
{
|
|
"minimum": 20
|
|
}
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "valid",
|
|
"data": 25,
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "mismatch one",
|
|
"data": 35,
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allOf with boolean schemas, all true",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
true,
|
|
true
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "any value is valid",
|
|
"data": "foo",
|
|
"valid": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allOf with boolean schemas, some false",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
true,
|
|
false
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "any value is invalid",
|
|
"data": "foo",
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allOf with boolean schemas, all false",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
false,
|
|
false
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "any value is invalid",
|
|
"data": "foo",
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allOf with one empty schema",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
{}
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "any data is valid",
|
|
"data": 1,
|
|
"valid": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allOf with two empty schemas",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
{},
|
|
{}
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "any data is valid",
|
|
"data": 1,
|
|
"valid": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allOf with the first empty schema",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
{},
|
|
{
|
|
"type": "number"
|
|
}
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "number is valid",
|
|
"data": 1,
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "string is invalid",
|
|
"data": "foo",
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allOf with the last empty schema",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{}
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "number is valid",
|
|
"data": 1,
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "string is invalid",
|
|
"data": "foo",
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "nested allOf, to check validation semantics",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "null is valid",
|
|
"data": null,
|
|
"valid": true
|
|
},
|
|
{
|
|
"description": "anything non-null is invalid",
|
|
"data": 123,
|
|
"valid": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "allOf combined with anyOf, oneOf",
|
|
"schema": {
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"allOf": [
|
|
{
|
|
"multipleOf": 2
|
|
}
|
|
],
|
|
"anyOf": [
|
|
{
|
|
"multipleOf": 3
|
|
}
|
|
],
|
|
"oneOf": [
|
|
{
|
|
"multipleOf": 5
|
|
}
|
|
]
|
|
},
|
|
"tests": [
|
|
{
|
|
"description": "allOf: false, anyOf: false, oneOf: false",
|
|
"data": 1,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "allOf: false, anyOf: false, oneOf: true",
|
|
"data": 5,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "allOf: false, anyOf: true, oneOf: false",
|
|
"data": 3,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "allOf: false, anyOf: true, oneOf: true",
|
|
"data": 15,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "allOf: true, anyOf: false, oneOf: false",
|
|
"data": 2,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "allOf: true, anyOf: false, oneOf: true",
|
|
"data": 10,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "allOf: true, anyOf: true, oneOf: false",
|
|
"data": 6,
|
|
"valid": false
|
|
},
|
|
{
|
|
"description": "allOf: true, anyOf: true, oneOf: true",
|
|
"data": 30,
|
|
"valid": true
|
|
}
|
|
]
|
|
}
|
|
] |