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  ]