1[ 2 { 3 "description": "allOf", 4 "schema": { 5 "$schema": "https://json-schema.org/draft/2019-09/schema", 6 "allOf": [ 7 { 8 "properties": { 9 "bar": {"type": "integer"} 10 }, 11 "required": ["bar"] 12 }, 13 { 14 "properties": { 15 "foo": {"type": "string"} 16 }, 17 "required": ["foo"] 18 } 19 ] 20 }, 21 "tests": [ 22 { 23 "description": "allOf", 24 "data": {"foo": "baz", "bar": 2}, 25 "valid": true 26 }, 27 { 28 "description": "mismatch second", 29 "data": {"foo": "baz"}, 30 "valid": false 31 }, 32 { 33 "description": "mismatch first", 34 "data": {"bar": 2}, 35 "valid": false 36 }, 37 { 38 "description": "wrong type", 39 "data": {"foo": "baz", "bar": "quux"}, 40 "valid": false 41 } 42 ] 43 }, 44 { 45 "description": "allOf with base schema", 46 "schema": { 47 "$schema": "https://json-schema.org/draft/2019-09/schema", 48 "properties": {"bar": {"type": "integer"}}, 49 "required": ["bar"], 50 "allOf" : [ 51 { 52 "properties": { 53 "foo": {"type": "string"} 54 }, 55 "required": ["foo"] 56 }, 57 { 58 "properties": { 59 "baz": {"type": "null"} 60 }, 61 "required": ["baz"] 62 } 63 ] 64 }, 65 "tests": [ 66 { 67 "description": "valid", 68 "data": {"foo": "quux", "bar": 2, "baz": null}, 69 "valid": true 70 }, 71 { 72 "description": "mismatch base schema", 73 "data": {"foo": "quux", "baz": null}, 74 "valid": false 75 }, 76 { 77 "description": "mismatch first allOf", 78 "data": {"bar": 2, "baz": null}, 79 "valid": false 80 }, 81 { 82 "description": "mismatch second allOf", 83 "data": {"foo": "quux", "bar": 2}, 84 "valid": false 85 }, 86 { 87 "description": "mismatch both", 88 "data": {"bar": 2}, 89 "valid": false 90 } 91 ] 92 }, 93 { 94 "description": "allOf simple types", 95 "schema": { 96 "$schema": "https://json-schema.org/draft/2019-09/schema", 97 "allOf": [ 98 {"maximum": 30}, 99 {"minimum": 20} 100 ] 101 }, 102 "tests": [ 103 { 104 "description": "valid", 105 "data": 25, 106 "valid": true 107 }, 108 { 109 "description": "mismatch one", 110 "data": 35, 111 "valid": false 112 } 113 ] 114 }, 115 { 116 "description": "allOf with boolean schemas, all true", 117 "schema": { 118 "$schema": "https://json-schema.org/draft/2019-09/schema", 119 "allOf": [true, true] 120 }, 121 "tests": [ 122 { 123 "description": "any value is valid", 124 "data": "foo", 125 "valid": true 126 } 127 ] 128 }, 129 { 130 "description": "allOf with boolean schemas, some false", 131 "schema": { 132 "$schema": "https://json-schema.org/draft/2019-09/schema", 133 "allOf": [true, false] 134 }, 135 "tests": [ 136 { 137 "description": "any value is invalid", 138 "data": "foo", 139 "valid": false 140 } 141 ] 142 }, 143 { 144 "description": "allOf with boolean schemas, all false", 145 "schema": { 146 "$schema": "https://json-schema.org/draft/2019-09/schema", 147 "allOf": [false, false] 148 }, 149 "tests": [ 150 { 151 "description": "any value is invalid", 152 "data": "foo", 153 "valid": false 154 } 155 ] 156 }, 157 { 158 "description": "allOf with one empty schema", 159 "schema": { 160 "$schema": "https://json-schema.org/draft/2019-09/schema", 161 "allOf": [ 162 {} 163 ] 164 }, 165 "tests": [ 166 { 167 "description": "any data is valid", 168 "data": 1, 169 "valid": true 170 } 171 ] 172 }, 173 { 174 "description": "allOf with two empty schemas", 175 "schema": { 176 "$schema": "https://json-schema.org/draft/2019-09/schema", 177 "allOf": [ 178 {}, 179 {} 180 ] 181 }, 182 "tests": [ 183 { 184 "description": "any data is valid", 185 "data": 1, 186 "valid": true 187 } 188 ] 189 }, 190 { 191 "description": "allOf with the first empty schema", 192 "schema": { 193 "$schema": "https://json-schema.org/draft/2019-09/schema", 194 "allOf": [ 195 {}, 196 { "type": "number" } 197 ] 198 }, 199 "tests": [ 200 { 201 "description": "number is valid", 202 "data": 1, 203 "valid": true 204 }, 205 { 206 "description": "string is invalid", 207 "data": "foo", 208 "valid": false 209 } 210 ] 211 }, 212 { 213 "description": "allOf with the last empty schema", 214 "schema": { 215 "$schema": "https://json-schema.org/draft/2019-09/schema", 216 "allOf": [ 217 { "type": "number" }, 218 {} 219 ] 220 }, 221 "tests": [ 222 { 223 "description": "number is valid", 224 "data": 1, 225 "valid": true 226 }, 227 { 228 "description": "string is invalid", 229 "data": "foo", 230 "valid": false 231 } 232 ] 233 }, 234 { 235 "description": "nested allOf, to check validation semantics", 236 "schema": { 237 "$schema": "https://json-schema.org/draft/2019-09/schema", 238 "allOf": [ 239 { 240 "allOf": [ 241 { 242 "type": "null" 243 } 244 ] 245 } 246 ] 247 }, 248 "tests": [ 249 { 250 "description": "null is valid", 251 "data": null, 252 "valid": true 253 }, 254 { 255 "description": "anything non-null is invalid", 256 "data": 123, 257 "valid": false 258 } 259 ] 260 }, 261 { 262 "description": "allOf combined with anyOf, oneOf", 263 "schema": { 264 "$schema": "https://json-schema.org/draft/2019-09/schema", 265 "allOf": [ { "multipleOf": 2 } ], 266 "anyOf": [ { "multipleOf": 3 } ], 267 "oneOf": [ { "multipleOf": 5 } ] 268 }, 269 "tests": [ 270 { 271 "description": "allOf: false, anyOf: false, oneOf: false", 272 "data": 1, 273 "valid": false 274 }, 275 { 276 "description": "allOf: false, anyOf: false, oneOf: true", 277 "data": 5, 278 "valid": false 279 }, 280 { 281 "description": "allOf: false, anyOf: true, oneOf: false", 282 "data": 3, 283 "valid": false 284 }, 285 { 286 "description": "allOf: false, anyOf: true, oneOf: true", 287 "data": 15, 288 "valid": false 289 }, 290 { 291 "description": "allOf: true, anyOf: false, oneOf: false", 292 "data": 2, 293 "valid": false 294 }, 295 { 296 "description": "allOf: true, anyOf: false, oneOf: true", 297 "data": 10, 298 "valid": false 299 }, 300 { 301 "description": "allOf: true, anyOf: true, oneOf: false", 302 "data": 6, 303 "valid": false 304 }, 305 { 306 "description": "allOf: true, anyOf: true, oneOf: true", 307 "data": 30, 308 "valid": true 309 } 310 ] 311 } 312] 313