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