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]
View as plain text