cuelang.org/go@v0.13.0/encoding/jsonschema/testdata/external/tests/draft2019-09/properties.json (about) 1 [ 2 { 3 "description": "object properties validation", 4 "schema": { 5 "$schema": "https://json-schema.org/draft/2019-09/schema", 6 "properties": { 7 "foo": { 8 "type": "integer" 9 }, 10 "bar": { 11 "type": "string" 12 } 13 } 14 }, 15 "tests": [ 16 { 17 "description": "both properties present and valid is valid", 18 "data": { 19 "foo": 1, 20 "bar": "baz" 21 }, 22 "valid": true 23 }, 24 { 25 "description": "one property invalid is invalid", 26 "data": { 27 "foo": 1, 28 "bar": {} 29 }, 30 "valid": false 31 }, 32 { 33 "description": "both properties invalid is invalid", 34 "data": { 35 "foo": [], 36 "bar": {} 37 }, 38 "valid": false 39 }, 40 { 41 "description": "doesn't invalidate other properties", 42 "data": { 43 "quux": [] 44 }, 45 "valid": true 46 }, 47 { 48 "description": "ignores arrays", 49 "data": [], 50 "valid": true 51 }, 52 { 53 "description": "ignores other non-objects", 54 "data": 12, 55 "valid": true 56 } 57 ] 58 }, 59 { 60 "description": "properties, patternProperties, additionalProperties interaction", 61 "schema": { 62 "$schema": "https://json-schema.org/draft/2019-09/schema", 63 "properties": { 64 "foo": { 65 "type": "array", 66 "maxItems": 3 67 }, 68 "bar": { 69 "type": "array" 70 } 71 }, 72 "patternProperties": { 73 "f.o": { 74 "minItems": 2 75 } 76 }, 77 "additionalProperties": { 78 "type": "integer" 79 } 80 }, 81 "tests": [ 82 { 83 "description": "property validates property", 84 "data": { 85 "foo": [ 86 1, 87 2 88 ] 89 }, 90 "valid": true 91 }, 92 { 93 "description": "property invalidates property", 94 "data": { 95 "foo": [ 96 1, 97 2, 98 3, 99 4 100 ] 101 }, 102 "valid": false 103 }, 104 { 105 "description": "patternProperty invalidates property", 106 "data": { 107 "foo": [] 108 }, 109 "valid": false, 110 "skip": { 111 "v2": "unexpected success", 112 "v3": "unexpected success" 113 } 114 }, 115 { 116 "description": "patternProperty validates nonproperty", 117 "data": { 118 "fxo": [ 119 1, 120 2 121 ] 122 }, 123 "valid": true 124 }, 125 { 126 "description": "patternProperty invalidates nonproperty", 127 "data": { 128 "fxo": [] 129 }, 130 "valid": false 131 }, 132 { 133 "description": "additionalProperty ignores property", 134 "data": { 135 "bar": [] 136 }, 137 "valid": true 138 }, 139 { 140 "description": "additionalProperty validates others", 141 "data": { 142 "quux": 3 143 }, 144 "valid": true 145 }, 146 { 147 "description": "additionalProperty invalidates others", 148 "data": { 149 "quux": "foo" 150 }, 151 "valid": false 152 } 153 ] 154 }, 155 { 156 "description": "properties with boolean schema", 157 "schema": { 158 "$schema": "https://json-schema.org/draft/2019-09/schema", 159 "properties": { 160 "foo": true, 161 "bar": false 162 } 163 }, 164 "tests": [ 165 { 166 "description": "no property present is valid", 167 "data": {}, 168 "valid": true 169 }, 170 { 171 "description": "only 'true' property present is valid", 172 "data": { 173 "foo": 1 174 }, 175 "valid": true 176 }, 177 { 178 "description": "only 'false' property present is invalid", 179 "data": { 180 "bar": 2 181 }, 182 "valid": false 183 }, 184 { 185 "description": "both properties present is invalid", 186 "data": { 187 "foo": 1, 188 "bar": 2 189 }, 190 "valid": false 191 } 192 ] 193 }, 194 { 195 "description": "properties with escaped characters", 196 "schema": { 197 "$schema": "https://json-schema.org/draft/2019-09/schema", 198 "properties": { 199 "foo\nbar": { 200 "type": "number" 201 }, 202 "foo\"bar": { 203 "type": "number" 204 }, 205 "foo\\bar": { 206 "type": "number" 207 }, 208 "foo\rbar": { 209 "type": "number" 210 }, 211 "foo\tbar": { 212 "type": "number" 213 }, 214 "foo\fbar": { 215 "type": "number" 216 } 217 } 218 }, 219 "tests": [ 220 { 221 "description": "object with all numbers is valid", 222 "data": { 223 "foo\nbar": 1, 224 "foo\"bar": 1, 225 "foo\\bar": 1, 226 "foo\rbar": 1, 227 "foo\tbar": 1, 228 "foo\fbar": 1 229 }, 230 "valid": true 231 }, 232 { 233 "description": "object with strings is invalid", 234 "data": { 235 "foo\nbar": "1", 236 "foo\"bar": "1", 237 "foo\\bar": "1", 238 "foo\rbar": "1", 239 "foo\tbar": "1", 240 "foo\fbar": "1" 241 }, 242 "valid": false 243 } 244 ] 245 }, 246 { 247 "description": "properties with null valued instance properties", 248 "schema": { 249 "$schema": "https://json-schema.org/draft/2019-09/schema", 250 "properties": { 251 "foo": { 252 "type": "null" 253 } 254 } 255 }, 256 "tests": [ 257 { 258 "description": "allows null values", 259 "data": { 260 "foo": null 261 }, 262 "valid": true 263 } 264 ] 265 }, 266 { 267 "description": "properties whose names are Javascript object property names", 268 "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.", 269 "schema": { 270 "$schema": "https://json-schema.org/draft/2019-09/schema", 271 "properties": { 272 "__proto__": { 273 "type": "number" 274 }, 275 "toString": { 276 "properties": { 277 "length": { 278 "type": "string" 279 } 280 } 281 }, 282 "constructor": { 283 "type": "number" 284 } 285 } 286 }, 287 "tests": [ 288 { 289 "description": "ignores arrays", 290 "data": [], 291 "valid": true 292 }, 293 { 294 "description": "ignores other non-objects", 295 "data": 12, 296 "valid": true 297 }, 298 { 299 "description": "none of the properties mentioned", 300 "data": {}, 301 "valid": true 302 }, 303 { 304 "description": "__proto__ not valid", 305 "data": { 306 "__proto__": "foo" 307 }, 308 "valid": false 309 }, 310 { 311 "description": "toString not valid", 312 "data": { 313 "toString": { 314 "length": 37 315 } 316 }, 317 "valid": false 318 }, 319 { 320 "description": "constructor not valid", 321 "data": { 322 "constructor": { 323 "length": 37 324 } 325 }, 326 "valid": false 327 }, 328 { 329 "description": "all present and valid", 330 "data": { 331 "__proto__": 12, 332 "toString": { 333 "length": "foo" 334 }, 335 "constructor": 37 336 }, 337 "valid": true 338 } 339 ] 340 } 341 ]