Files
jspg/tests/fixtures/old/properties.json
2026-02-17 17:41:54 -05:00

245 lines
5.5 KiB
JSON
Executable File

[
{
"description": "properties with escaped characters",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"foo\nbar": {
"type": "number"
},
"foo\"bar": {
"type": "number"
},
"foo\\bar": {
"type": "number"
},
"foo\rbar": {
"type": "number"
},
"foo\tbar": {
"type": "number"
},
"foo\fbar": {
"type": "number"
}
}
},
"tests": [
{
"description": "object with all numbers is valid",
"data": {
"foo\nbar": 1,
"foo\"bar": 1,
"foo\\bar": 1,
"foo\rbar": 1,
"foo\tbar": 1,
"foo\fbar": 1
},
"valid": true
},
{
"description": "object with strings is invalid",
"data": {
"foo\nbar": "1",
"foo\"bar": "1",
"foo\\bar": "1",
"foo\rbar": "1",
"foo\tbar": "1",
"foo\fbar": "1"
},
"valid": false
}
]
},
{
"description": "properties with null valued instance properties",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"foo": {
"type": "null"
}
}
},
"tests": [
{
"description": "allows null values",
"data": {
"foo": null
},
"valid": true
}
]
},
{
"description": "properties whose names are Javascript object property names",
"comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"__proto__": {
"type": "number"
},
"toString": {
"properties": {
"length": {
"type": "string"
}
}
},
"constructor": {
"type": "number"
}
}
},
"tests": [
{
"description": "none of the properties mentioned",
"data": {},
"valid": true
},
{
"description": "__proto__ not valid",
"data": {
"__proto__": "foo"
},
"valid": false
},
{
"description": "toString not valid",
"data": {
"toString": {
"length": 37
}
},
"valid": false
},
{
"description": "constructor not valid",
"data": {
"constructor": {
"length": 37
}
},
"valid": false
},
{
"description": "all present and valid",
"data": {
"__proto__": 12,
"toString": {
"length": "foo"
},
"constructor": 37
},
"valid": true
}
]
},
{
"description": "property merging across multi-level inheritance",
"enums": [],
"puncs": [],
"types": [
{
"name": "properties_test.entity",
"schemas": [
{
"$id": "properties_test.entity",
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"const": "properties_test.entity"
}
},
"required": [
"id"
]
}
]
},
{
"name": "properties_test.user",
"schemas": [
{
"$id": "properties_test.user",
"$ref": "properties_test.entity",
"properties": {
"type": {
"type": "string",
"const": "properties_test.user",
"override": true
},
"password": {
"type": "string",
"minLength": 8
}
},
"required": [
"password"
]
}
]
},
{
"name": "properties_test.person",
"schemas": [
{
"$id": "properties_test.person",
"$ref": "properties_test.user",
"properties": {
"type": {
"type": "string",
"const": "properties_test.person",
"override": true
},
"first_name": {
"type": "string",
"minLength": 1
},
"last_name": {
"type": "string",
"minLength": 1
}
},
"required": [
"first_name",
"last_name"
]
}
]
}
],
"tests": [
{
"description": "person inherits all properties correctly",
"schema_id": "properties_test.person",
"data": {},
"valid": true
},
{
"description": "validation keywords inherited and applied",
"schema_id": "properties_test.person",
"data": {},
"valid": false,
"expect_errors": [
{
"code": "MIN_LENGTH_VIOLATED",
"path": "/password"
},
{
"code": "MIN_LENGTH_VIOLATED",
"path": "/first_name"
}
]
}
]
}
]