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  ]