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