1[ 2 { 3 "description": 4 "additionalProperties being false does not allow other properties", 5 "schema": { 6 "$schema": "https://json-schema.org/draft/2020-12/schema", 7 "properties": {"foo": {}, "bar": {}}, 8 "patternProperties": { "^v": {} }, 9 "additionalProperties": false 10 }, 11 "tests": [ 12 { 13 "description": "no additional properties is valid", 14 "data": {"foo": 1}, 15 "valid": true 16 }, 17 { 18 "description": "an additional property is invalid", 19 "data": {"foo" : 1, "bar" : 2, "quux" : "boom"}, 20 "valid": false 21 }, 22 { 23 "description": "ignores arrays", 24 "data": [1, 2, 3], 25 "valid": true 26 }, 27 { 28 "description": "ignores strings", 29 "data": "foobarbaz", 30 "valid": true 31 }, 32 { 33 "description": "ignores other non-objects", 34 "data": 12, 35 "valid": true 36 }, 37 { 38 "description": "patternProperties are not additional properties", 39 "data": {"foo":1, "vroom": 2}, 40 "valid": true 41 } 42 ] 43 }, 44 { 45 "description": "non-ASCII pattern with additionalProperties", 46 "schema": { 47 "$schema": "https://json-schema.org/draft/2020-12/schema", 48 "patternProperties": {"^á": {}}, 49 "additionalProperties": false 50 }, 51 "tests": [ 52 { 53 "description": "matching the pattern is valid", 54 "data": {"ármányos": 2}, 55 "valid": true 56 }, 57 { 58 "description": "not matching the pattern is invalid", 59 "data": {"élmény": 2}, 60 "valid": false 61 } 62 ] 63 }, 64 { 65 "description": "additionalProperties with schema", 66 "schema": { 67 "$schema": "https://json-schema.org/draft/2020-12/schema", 68 "properties": {"foo": {}, "bar": {}}, 69 "additionalProperties": {"type": "boolean"} 70 }, 71 "tests": [ 72 { 73 "description": "no additional properties is valid", 74 "data": {"foo": 1}, 75 "valid": true 76 }, 77 { 78 "description": "an additional valid property is valid", 79 "data": {"foo" : 1, "bar" : 2, "quux" : true}, 80 "valid": true 81 }, 82 { 83 "description": "an additional invalid property is invalid", 84 "data": {"foo" : 1, "bar" : 2, "quux" : 12}, 85 "valid": false 86 } 87 ] 88 }, 89 { 90 "description": 91 "additionalProperties can exist by itself", 92 "schema": { 93 "$schema": "https://json-schema.org/draft/2020-12/schema", 94 "additionalProperties": {"type": "boolean"} 95 }, 96 "tests": [ 97 { 98 "description": "an additional valid property is valid", 99 "data": {"foo" : true}, 100 "valid": true 101 }, 102 { 103 "description": "an additional invalid property is invalid", 104 "data": {"foo" : 1}, 105 "valid": false 106 } 107 ] 108 }, 109 { 110 "description": "additionalProperties are allowed by default", 111 "schema": { 112 "$schema": "https://json-schema.org/draft/2020-12/schema", 113 "properties": {"foo": {}, "bar": {}} 114 }, 115 "tests": [ 116 { 117 "description": "additional properties are allowed", 118 "data": {"foo": 1, "bar": 2, "quux": true}, 119 "valid": true 120 } 121 ] 122 }, 123 { 124 "description": "additionalProperties does not look in applicators", 125 "schema": { 126 "$schema": "https://json-schema.org/draft/2020-12/schema", 127 "allOf": [ 128 {"properties": {"foo": {}}} 129 ], 130 "additionalProperties": {"type": "boolean"} 131 }, 132 "tests": [ 133 { 134 "description": "properties defined in allOf are not examined", 135 "data": {"foo": 1, "bar": true}, 136 "valid": false 137 } 138 ] 139 }, 140 { 141 "description": "additionalProperties with null valued instance properties", 142 "schema": { 143 "$schema": "https://json-schema.org/draft/2020-12/schema", 144 "additionalProperties": { 145 "type": "null" 146 } 147 }, 148 "tests": [ 149 { 150 "description": "allows null values", 151 "data": {"foo": null}, 152 "valid": true 153 } 154 ] 155 } 156] 157