Files
jspg/fixtures/objectTypes.json

168 lines
4.3 KiB
JSON

[
{
"description": "Strict Inheritance",
"database": {
"schemas": [
{
"$id": "parent_type",
"type": "object",
"properties": {"a": {"type": "integer"}},
"required": ["a"]
},
{
"$id": "child_type",
"type": "parent_type",
"properties": {"b": {"type": "integer"}}
}
]
},
"tests": [
{
"description": "valid child inherits properties and strictness",
"schema_id": "child_type",
"data": {"a": 1, "b": 2},
"action": "validate",
"expect": {"success": true}
},
{
"description": "missing inherited required property fails",
"schema_id": "child_type",
"data": {"b": 2},
"action": "validate",
"expect": {"success": false}
},
{
"description": "additional properties fail due to inherited strictness",
"schema_id": "child_type",
"data": {"a": 1, "b": 2, "c": 3},
"action": "validate",
"expect": {"success": false}
}
]
},
{
"description": "Local Shadowing (Composition & Proxies)",
"database": {
"schemas": [
{
"$id": "budget",
"type": "object",
"properties": {
"max": {"type": "integer", "maximum": 100}
}
},
{
"$id": "custom_budget",
"type": "budget",
"properties": {
"max": {"type": "integer", "maximum": 50}
}
}
]
},
"tests": [
{
"description": "shadowing override applies (50 is locally allowed)",
"schema_id": "custom_budget",
"data": {"max": 40},
"action": "validate",
"expect": {"success": true}
},
{
"description": "shadowing override applies natively, rejecting 60 even though parent allowed 100",
"schema_id": "custom_budget",
"data": {"max": 60},
"action": "validate",
"expect": {"success": false}
}
]
},
{
"description": "Inline id Resolution",
"database": {
"schemas": [
{
"$id": "api.request",
"type": "object",
"properties": {
"inline_obj": {
"$id": "inline_nested",
"type": "object",
"properties": {"foo": {"type": "string"}},
"required": ["foo"]
},
"proxy_obj": {
"type": "inline_nested"
}
}
}
]
},
"tests": [
{
"description": "proxy resolves and validates to the inline component",
"schema_id": "api.request",
"data": {
"inline_obj": {"foo": "bar"},
"proxy_obj": {"foo": "baz"}
},
"action": "validate",
"expect": {"success": true}
},
{
"description": "proxy resolves and catches violation targeting inline component constraints",
"schema_id": "api.request",
"data": {
"inline_obj": {"foo": "bar"},
"proxy_obj": {}
},
"action": "validate",
"expect": {"success": false}
}
]
},
{
"description": "Primitive Array Shorthand (Optionality)",
"database": {
"schemas": [
{
"$id": "invoice",
"type": "object",
"properties": {"amount": {"type": "integer"}},
"required": ["amount"]
},
{
"$id": "request",
"type": "object",
"properties": {
"inv": {"type": ["invoice", "null"]}
}
}
]
},
"tests": [
{
"description": "valid object passes shorthand inheritance check",
"schema_id": "request",
"data": {"inv": {"amount": 5}},
"action": "validate",
"expect": {"success": true}
},
{
"description": "null passes shorthand inheritance check",
"schema_id": "request",
"data": {"inv": null},
"action": "validate",
"expect": {"success": true}
},
{
"description": "invalid object fails inner constraints safely",
"schema_id": "request",
"data": {"inv": {"amount": "string"}},
"action": "validate",
"expect": {"success": false}
}
]
}
]