Skip to content

Commit 15ba997

Browse files
authored
Merge pull request #259 from epoberezkin/epoberezkin/special-chars
Escaped characters in schemas
2 parents 92eeeb4 + 6f74063 commit 15ba997

15 files changed

+585
-0
lines changed

tests/draft4/dependencies.json

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,5 +119,76 @@
119119
"valid": false
120120
}
121121
]
122+
},
123+
{
124+
"description": "dependencies with escaped characters",
125+
"schema": {
126+
"dependencies": {
127+
"foo\nbar": ["foo\rbar"],
128+
"foo\tbar": {
129+
"minProperties": 4
130+
},
131+
"foo'bar": {"required": ["foo\"bar"]},
132+
"foo\"bar": ["foo'bar"]
133+
}
134+
},
135+
"tests": [
136+
{
137+
"description": "valid object 1",
138+
"data": {
139+
"foo\nbar": 1,
140+
"foo\rbar": 2
141+
},
142+
"valid": true
143+
},
144+
{
145+
"description": "valid object 2",
146+
"data": {
147+
"foo\tbar": 1,
148+
"a": 2,
149+
"b": 3,
150+
"c": 4
151+
},
152+
"valid": true
153+
},
154+
{
155+
"description": "valid object 3",
156+
"data": {
157+
"foo'bar": 1,
158+
"foo\"bar": 2
159+
},
160+
"valid": true
161+
},
162+
{
163+
"description": "invalid object 1",
164+
"data": {
165+
"foo\nbar": 1,
166+
"foo": 2
167+
},
168+
"valid": false
169+
},
170+
{
171+
"description": "invalid object 2",
172+
"data": {
173+
"foo\tbar": 1,
174+
"a": 2
175+
},
176+
"valid": false
177+
},
178+
{
179+
"description": "invalid object 3",
180+
"data": {
181+
"foo'bar": 1
182+
},
183+
"valid": false
184+
},
185+
{
186+
"description": "invalid object 4",
187+
"data": {
188+
"foo\"bar": 2
189+
},
190+
"valid": false
191+
}
192+
]
122193
}
123194
]

tests/draft4/enum.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,28 @@
6868
"valid": false
6969
}
7070
]
71+
},
72+
{
73+
"description": "enum with escaped characters",
74+
"schema": {
75+
"enum": ["foo\nbar", "foo\rbar"]
76+
},
77+
"tests": [
78+
{
79+
"description": "member 1 is valid",
80+
"data": "foo\nbar",
81+
"valid": true
82+
},
83+
{
84+
"description": "member 2 is valid",
85+
"data": "foo\rbar",
86+
"valid": true
87+
},
88+
{
89+
"description": "another string is invalid",
90+
"data": "abc",
91+
"valid": false
92+
}
93+
]
7194
}
7295
]

tests/draft4/properties.json

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,5 +93,44 @@
9393
"valid": false
9494
}
9595
]
96+
},
97+
{
98+
"description": "properties with escaped characters",
99+
"schema": {
100+
"properties": {
101+
"foo\nbar": {"type": "number"},
102+
"foo\"bar": {"type": "number"},
103+
"foo\\bar": {"type": "number"},
104+
"foo\rbar": {"type": "number"},
105+
"foo\tbar": {"type": "number"},
106+
"foo\fbar": {"type": "number"}
107+
}
108+
},
109+
"tests": [
110+
{
111+
"description": "object with all numbers is valid",
112+
"data": {
113+
"foo\nbar": 1,
114+
"foo\"bar": 1,
115+
"foo\\bar": 1,
116+
"foo\rbar": 1,
117+
"foo\tbar": 1,
118+
"foo\fbar": 1
119+
},
120+
"valid": true
121+
},
122+
{
123+
"description": "object with strings is invalid",
124+
"data": {
125+
"foo\nbar": "1",
126+
"foo\"bar": "1",
127+
"foo\\bar": "1",
128+
"foo\rbar": "1",
129+
"foo\tbar": "1",
130+
"foo\fbar": "1"
131+
},
132+
"valid": false
133+
}
134+
]
96135
}
97136
]

tests/draft4/ref.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,5 +296,32 @@
296296
"valid": false
297297
}
298298
]
299+
},
300+
{
301+
"description": "refs with quote",
302+
"schema": {
303+
"properties": {
304+
"foo\"bar": {"$ref": "#/definitions/foo\"bar"}
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+
]
299326
}
300327
]

tests/draft4/required.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,40 @@
5050
"valid": true
5151
}
5252
]
53+
},
54+
{
55+
"description": "required with escaped characters",
56+
"schema": {
57+
"required": [
58+
"foo\nbar",
59+
"foo\"bar",
60+
"foo\\bar",
61+
"foo\rbar",
62+
"foo\tbar",
63+
"foo\fbar"
64+
]
65+
},
66+
"tests": [
67+
{
68+
"description": "object with all properties present is valid",
69+
"data": {
70+
"foo\nbar": 1,
71+
"foo\"bar": 1,
72+
"foo\\bar": 1,
73+
"foo\rbar": 1,
74+
"foo\tbar": 1,
75+
"foo\fbar": 1
76+
},
77+
"valid": true
78+
},
79+
{
80+
"description": "object with some properties missing is invalid",
81+
"data": {
82+
"foo\nbar": "1",
83+
"foo\"bar": "1"
84+
},
85+
"valid": false
86+
}
87+
]
5388
}
5489
]

tests/draft6/dependencies.json

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,5 +193,76 @@
193193
"valid": true
194194
}
195195
]
196+
},
197+
{
198+
"description": "dependencies with escaped characters",
199+
"schema": {
200+
"dependencies": {
201+
"foo\nbar": ["foo\rbar"],
202+
"foo\tbar": {
203+
"minProperties": 4
204+
},
205+
"foo'bar": {"required": ["foo\"bar"]},
206+
"foo\"bar": ["foo'bar"]
207+
}
208+
},
209+
"tests": [
210+
{
211+
"description": "valid object 1",
212+
"data": {
213+
"foo\nbar": 1,
214+
"foo\rbar": 2
215+
},
216+
"valid": true
217+
},
218+
{
219+
"description": "valid object 2",
220+
"data": {
221+
"foo\tbar": 1,
222+
"a": 2,
223+
"b": 3,
224+
"c": 4
225+
},
226+
"valid": true
227+
},
228+
{
229+
"description": "valid object 3",
230+
"data": {
231+
"foo'bar": 1,
232+
"foo\"bar": 2
233+
},
234+
"valid": true
235+
},
236+
{
237+
"description": "invalid object 1",
238+
"data": {
239+
"foo\nbar": 1,
240+
"foo": 2
241+
},
242+
"valid": false
243+
},
244+
{
245+
"description": "invalid object 2",
246+
"data": {
247+
"foo\tbar": 1,
248+
"a": 2
249+
},
250+
"valid": false
251+
},
252+
{
253+
"description": "invalid object 3",
254+
"data": {
255+
"foo'bar": 1
256+
},
257+
"valid": false
258+
},
259+
{
260+
"description": "invalid object 4",
261+
"data": {
262+
"foo\"bar": 2
263+
},
264+
"valid": false
265+
}
266+
]
196267
}
197268
]

tests/draft6/enum.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,28 @@
6868
"valid": false
6969
}
7070
]
71+
},
72+
{
73+
"description": "enum with escaped characters",
74+
"schema": {
75+
"enum": ["foo\nbar", "foo\rbar"]
76+
},
77+
"tests": [
78+
{
79+
"description": "member 1 is valid",
80+
"data": "foo\nbar",
81+
"valid": true
82+
},
83+
{
84+
"description": "member 2 is valid",
85+
"data": "foo\rbar",
86+
"valid": true
87+
},
88+
{
89+
"description": "another string is invalid",
90+
"data": "abc",
91+
"valid": false
92+
}
93+
]
7194
}
7295
]

tests/draft6/properties.json

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,5 +124,44 @@
124124
"valid": false
125125
}
126126
]
127+
},
128+
{
129+
"description": "properties with escaped characters",
130+
"schema": {
131+
"properties": {
132+
"foo\nbar": {"type": "number"},
133+
"foo\"bar": {"type": "number"},
134+
"foo\\bar": {"type": "number"},
135+
"foo\rbar": {"type": "number"},
136+
"foo\tbar": {"type": "number"},
137+
"foo\fbar": {"type": "number"}
138+
}
139+
},
140+
"tests": [
141+
{
142+
"description": "object with all numbers is valid",
143+
"data": {
144+
"foo\nbar": 1,
145+
"foo\"bar": 1,
146+
"foo\\bar": 1,
147+
"foo\rbar": 1,
148+
"foo\tbar": 1,
149+
"foo\fbar": 1
150+
},
151+
"valid": true
152+
},
153+
{
154+
"description": "object with strings is invalid",
155+
"data": {
156+
"foo\nbar": "1",
157+
"foo\"bar": "1",
158+
"foo\\bar": "1",
159+
"foo\rbar": "1",
160+
"foo\tbar": "1",
161+
"foo\fbar": "1"
162+
},
163+
"valid": false
164+
}
165+
]
127166
}
128167
]

0 commit comments

Comments
 (0)