...

Text file src/github.com/qri-io/jsonschema/testdata/draft4/ref.json

Documentation: github.com/qri-io/jsonschema/testdata/draft4

     1[
     2    {
     3        "description": "root pointer ref",
     4        "schema": {
     5            "properties": {
     6                "foo": {"$ref": "#"}
     7            },
     8            "additionalProperties": false
     9        },
    10        "tests": [
    11            {
    12                "description": "match",
    13                "data": {"foo": false},
    14                "valid": true
    15            },
    16            {
    17                "description": "recursive match",
    18                "data": {"foo": {"foo": false}},
    19                "valid": true
    20            },
    21            {
    22                "description": "mismatch",
    23                "data": {"bar": false},
    24                "valid": false
    25            },
    26            {
    27                "description": "recursive mismatch",
    28                "data": {"foo": {"bar": false}},
    29                "valid": false
    30            }
    31        ]
    32    },
    33    {
    34        "description": "relative pointer ref to object",
    35        "schema": {
    36            "properties": {
    37                "foo": {"type": "integer"},
    38                "bar": {"$ref": "#/properties/foo"}
    39            }
    40        },
    41        "tests": [
    42            {
    43                "description": "match",
    44                "data": {"bar": 3},
    45                "valid": true
    46            },
    47            {
    48                "description": "mismatch",
    49                "data": {"bar": true},
    50                "valid": false
    51            }
    52        ]
    53    },
    54    {
    55        "description": "relative pointer ref to array",
    56        "schema": {
    57            "items": [
    58                {"type": "integer"},
    59                {"$ref": "#/items/0"}
    60            ]
    61        },
    62        "tests": [
    63            {
    64                "description": "match array",
    65                "data": [1, 2],
    66                "valid": true
    67            },
    68            {
    69                "description": "mismatch array",
    70                "data": [1, "foo"],
    71                "valid": false
    72            }
    73        ]
    74    },
    75    {
    76        "description": "escaped pointer ref",
    77        "schema": {
    78            "tilda~field": {"type": "integer"},
    79            "slash/field": {"type": "integer"},
    80            "percent%field": {"type": "integer"},
    81            "properties": {
    82                "tilda": {"$ref": "#/tilda~0field"},
    83                "slash": {"$ref": "#/slash~1field"},
    84                "percent": {"$ref": "#/percent%25field"}
    85            }
    86        },
    87        "tests": [
    88            {
    89                "description": "slash invalid",
    90                "data": {"slash": "aoeu"},
    91                "valid": false
    92            },
    93            {
    94                "description": "tilda invalid",
    95                "data": {"tilda": "aoeu"},
    96                "valid": false
    97            },
    98            {
    99                "description": "percent invalid",
   100                "data": {"percent": "aoeu"},
   101                "valid": false
   102            },
   103            {
   104                "description": "slash valid",
   105                "data": {"slash": 123},
   106                "valid": true
   107            },
   108            {
   109                "description": "tilda valid",
   110                "data": {"tilda": 123},
   111                "valid": true
   112            },
   113            {
   114                "description": "percent valid",
   115                "data": {"percent": 123},
   116                "valid": true
   117            }
   118        ]
   119    },
   120    {
   121        "description": "nested refs",
   122        "schema": {
   123            "definitions": {
   124                "a": {"type": "integer"},
   125                "b": {"$ref": "#/definitions/a"},
   126                "c": {"$ref": "#/definitions/b"}
   127            },
   128            "$ref": "#/definitions/c"
   129        },
   130        "tests": [
   131            {
   132                "description": "nested ref valid",
   133                "data": 5,
   134                "valid": true
   135            },
   136            {
   137                "description": "nested ref invalid",
   138                "data": "a",
   139                "valid": false
   140            }
   141        ]
   142    },
   143    {
   144        "description": "ref overrides any sibling keywords",
   145        "schema": {
   146            "definitions": {
   147                "reffed": {
   148                    "type": "array"
   149                }
   150            },
   151            "properties": {
   152                "foo": {
   153                    "$ref": "#/definitions/reffed",
   154                    "maxItems": 2
   155                }
   156            }
   157        },
   158        "tests": [
   159            {
   160                "description": "ref valid",
   161                "data": { "foo": [] },
   162                "valid": true
   163            },
   164            {
   165                "description": "ref valid, maxItems ignored",
   166                "data": { "foo": [ 1, 2, 3] },
   167                "valid": true
   168            },
   169            {
   170                "description": "ref invalid",
   171                "data": { "foo": "string" },
   172                "valid": false
   173            }
   174        ]
   175    },
   176    {
   177        "description": "remote ref, containing refs itself",
   178        "schema": {"$ref": "http://json-schema.org/draft-04/schema#"},
   179        "tests": [
   180            {
   181                "description": "remote ref valid",
   182                "data": {"minLength": 1},
   183                "valid": true
   184            },
   185            {
   186                "description": "remote ref invalid",
   187                "data": {"minLength": -1},
   188                "valid": false
   189            }
   190        ]
   191    },
   192    {
   193        "description": "property named $ref that is not a reference",
   194        "schema": {
   195            "properties": {
   196                "$ref": {"type": "string"}
   197            }
   198        },
   199        "tests": [
   200            {
   201                "description": "property named $ref valid",
   202                "data": {"$ref": "a"},
   203                "valid": true
   204            },
   205            {
   206                "description": "property named $ref invalid",
   207                "data": {"$ref": 2},
   208                "valid": false
   209            }
   210        ]
   211    },
   212    {
   213        "description": "Recursive references between schemas",
   214        "schema": {
   215            "id": "http://localhost:1234/tree",
   216            "description": "tree of nodes",
   217            "type": "object",
   218            "properties": {
   219                "meta": {"type": "string"},
   220                "nodes": {
   221                    "type": "array",
   222                    "items": {"$ref": "node"}
   223                }
   224            },
   225            "required": ["meta", "nodes"],
   226            "definitions": {
   227                "node": {
   228                    "id": "http://localhost:1234/node",
   229                    "description": "node",
   230                    "type": "object",
   231                    "properties": {
   232                        "value": {"type": "number"},
   233                        "subtree": {"$ref": "tree"}
   234                    },
   235                    "required": ["value"]
   236                }
   237            }
   238        },
   239        "tests": [
   240            {
   241                "description": "valid tree",
   242                "data": { 
   243                    "meta": "root",
   244                    "nodes": [
   245                        {
   246                            "value": 1,
   247                            "subtree": {
   248                                "meta": "child",
   249                                "nodes": [
   250                                    {"value": 1.1},
   251                                    {"value": 1.2}
   252                                ]
   253                            }
   254                        },
   255                        {
   256                            "value": 2,
   257                            "subtree": {
   258                                "meta": "child",
   259                                "nodes": [
   260                                    {"value": 2.1},
   261                                    {"value": 2.2}
   262                                ]
   263                            }
   264                        }
   265                    ]
   266                },
   267                "valid": true
   268            },
   269            {
   270                "description": "invalid tree",
   271                "data": { 
   272                    "meta": "root",
   273                    "nodes": [
   274                        {
   275                            "value": 1,
   276                            "subtree": {
   277                                "meta": "child",
   278                                "nodes": [
   279                                    {"value": "string is invalid"},
   280                                    {"value": 1.2}
   281                                ]
   282                            }
   283                        },
   284                        {
   285                            "value": 2,
   286                            "subtree": {
   287                                "meta": "child",
   288                                "nodes": [
   289                                    {"value": 2.1},
   290                                    {"value": 2.2}
   291                                ]
   292                            }
   293                        }
   294                    ]
   295                },
   296                "valid": false
   297            }
   298        ]
   299    },
   300    {
   301        "description": "refs with quote",
   302        "schema": {
   303            "properties": {
   304                "foo\"bar": {"$ref": "#/definitions/foo%22bar"}
   305            },
   306            "definitions": {
   307                "foo\"bar": {"type": "number"}
   308            }
   309        },
   310        "tests": [
   311            {
   312                "description": "object with numbers is valid",
   313                "data": {
   314                    "foo\"bar": 1
   315                },
   316                "valid": true
   317            },
   318            {
   319                "description": "object with strings is invalid",
   320                "data": {
   321                    "foo\"bar": "1"
   322                },
   323                "valid": false
   324            }
   325        ]
   326    },
   327    {
   328        "description": "Location-independent identifier",
   329        "schema": {
   330            "allOf": [{
   331                "$ref": "#foo"
   332            }],
   333            "definitions": {
   334                "A": {
   335                    "id": "#foo",
   336                    "type": "integer"
   337                }
   338            }
   339        },
   340        "tests": [
   341            {
   342                "data": 1,
   343                "description": "match",
   344                "valid": true
   345            },
   346            {
   347                "data": "a",
   348                "description": "mismatch",
   349                "valid": false
   350            }
   351        ]
   352    },
   353    {
   354        "description": "Location-independent identifier with absolute URI",
   355        "schema": {
   356            "allOf": [{
   357                "$ref": "http://localhost:1234/bar#foo"
   358            }],
   359            "definitions": {
   360                "A": {
   361                    "id": "http://localhost:1234/bar#foo",
   362                    "type": "integer"
   363                }
   364            }
   365        },
   366        "tests": [
   367            {
   368                "data": 1,
   369                "description": "match",
   370                "valid": true
   371            },
   372            {
   373                "data": "a",
   374                "description": "mismatch",
   375                "valid": false
   376            }
   377        ]
   378    },
   379    {
   380        "description": "Location-independent identifier with base URI change in subschema",
   381        "schema": {
   382            "id": "http://localhost:1234/root",
   383            "allOf": [{
   384                "$ref": "http://localhost:1234/nested.json#foo"
   385            }],
   386            "definitions": {
   387                "A": {
   388                    "id": "nested.json",
   389                    "definitions": {
   390                        "B": {
   391                            "id": "#foo",
   392                            "type": "integer"
   393                        }
   394                    }
   395                }
   396            }
   397        },
   398        "tests": [
   399            {
   400                "data": 1,
   401                "description": "match",
   402                "valid": true
   403            },
   404            {
   405                "data": "a",
   406                "description": "mismatch",
   407                "valid": false
   408            }
   409        ]
   410    }
   411]

View as plain text