1
+ package com .relogiclabs .json .schema .negative ;
2
+
3
+ import com .relogiclabs .json .schema .JsonAssert ;
4
+ import com .relogiclabs .json .schema .JsonSchema ;
5
+ import com .relogiclabs .json .schema .exception .DuplicatePropertyKeyException ;
6
+ import com .relogiclabs .json .schema .exception .JsonSchemaException ;
7
+ import org .junit .jupiter .api .Test ;
8
+
9
+ import static com .relogiclabs .json .schema .message .ErrorCode .DTYP04 ;
10
+ import static com .relogiclabs .json .schema .message .ErrorCode .DTYP06 ;
11
+ import static com .relogiclabs .json .schema .message .ErrorCode .ENUM02 ;
12
+ import static com .relogiclabs .json .schema .message .ErrorCode .KEYS01 ;
13
+ import static com .relogiclabs .json .schema .message .ErrorCode .NEMT03 ;
14
+ import static com .relogiclabs .json .schema .message .ErrorCode .OLEN01 ;
15
+ import static com .relogiclabs .json .schema .message .ErrorCode .OLEN02 ;
16
+ import static com .relogiclabs .json .schema .message .ErrorCode .OLEN04 ;
17
+ import static com .relogiclabs .json .schema .message .ErrorCode .OLEN05 ;
18
+ import static com .relogiclabs .json .schema .message .ErrorCode .PROP03 ;
19
+ import static com .relogiclabs .json .schema .message .ErrorCode .VALU01 ;
20
+ import static org .junit .jupiter .api .Assertions .assertEquals ;
21
+ import static org .junit .jupiter .api .Assertions .assertThrows ;
22
+
23
+ public class ObjectTests {
24
+ @ Test
25
+ public void When_JsonNotObject_ExceptionThrown () {
26
+ var schema = "#object" ;
27
+ var json = "100" ;
28
+
29
+ JsonSchema .isValid (schema , json );
30
+ var exception = assertThrows (JsonSchemaException .class ,
31
+ () -> JsonAssert .isValid (schema , json ));
32
+ assertEquals (DTYP04 , exception .getCode ());
33
+ exception .printStackTrace ();
34
+ }
35
+
36
+ @ Test
37
+ public void When_JsonNotObjectInObject_ExceptionThrown () {
38
+ var schema =
39
+ """
40
+ {
41
+ "key1": #object,
42
+ "key2": #object,
43
+ "key3": #object
44
+ }
45
+ """ ;
46
+ var json =
47
+ """
48
+ {
49
+ "key1": [],
50
+ "key2": "value1",
51
+ "key3": [10, 20, 30]
52
+ }
53
+ """ ;
54
+ JsonSchema .isValid (schema , json );
55
+ var exception = assertThrows (JsonSchemaException .class ,
56
+ () -> JsonAssert .isValid (schema , json ));
57
+ assertEquals (DTYP04 , exception .getCode ());
58
+ exception .printStackTrace ();
59
+ }
60
+
61
+ @ Test
62
+ public void When_JsonNotObjectInArray_ExceptionThrown () {
63
+ var schema =
64
+ """
65
+ [#object, #object, #object]
66
+ """ ;
67
+ var json =
68
+ """
69
+ [null, "value1", true]
70
+ """ ;
71
+ JsonSchema .isValid (schema , json );
72
+ var exception = assertThrows (JsonSchemaException .class ,
73
+ () -> JsonAssert .isValid (schema , json ));
74
+ assertEquals (DTYP04 , exception .getCode ());
75
+ exception .printStackTrace ();
76
+ }
77
+
78
+ @ Test
79
+ public void When_NestedJsonNotObjectInArray_ExceptionThrown () {
80
+ var schema =
81
+ """
82
+ #object*
83
+ """ ;
84
+ var json =
85
+ """
86
+ [ 100, true, false ]
87
+ """ ;
88
+ JsonSchema .isValid (schema , json );
89
+ var exception = assertThrows (JsonSchemaException .class ,
90
+ () -> JsonAssert .isValid (schema , json ));
91
+ assertEquals (DTYP06 , exception .getCode ());
92
+ exception .printStackTrace ();
93
+ }
94
+
95
+ @ Test
96
+ public void When_NestedJsonNotObjectInObject_ExceptionThrown () {
97
+ var schema =
98
+ """
99
+ #object*
100
+ """ ;
101
+ var json =
102
+ """
103
+ {
104
+ "key1": 15.4,
105
+ "key2": 0,
106
+ "key3": [10]
107
+ }
108
+ """ ;
109
+ JsonSchema .isValid (schema , json );
110
+ var exception = assertThrows (JsonSchemaException .class ,
111
+ () -> JsonAssert .isValid (schema , json ));
112
+ assertEquals (DTYP06 , exception .getCode ());
113
+ exception .printStackTrace ();
114
+ }
115
+
116
+ @ Test
117
+ public void When_KeysWithWrongObject_ExceptionThrown () {
118
+ var schema =
119
+ """
120
+ @keys("key1", "key2") #integer*
121
+ """ ;
122
+ var json =
123
+ """
124
+ {
125
+ "key4": 100,
126
+ "key5": 150,
127
+ "key6": 200
128
+ }
129
+ """ ;
130
+ JsonSchema .isValid (schema , json );
131
+ var exception = assertThrows (JsonSchemaException .class ,
132
+ () -> JsonAssert .isValid (schema , json ));
133
+ assertEquals (KEYS01 , exception .getCode ());
134
+ exception .printStackTrace ();
135
+ }
136
+
137
+ @ Test
138
+ public void When_ValuesWithWrongObject_ExceptionThrown () {
139
+ var schema =
140
+ """
141
+ @values(100, 200) #integer*
142
+ """ ;
143
+ var json =
144
+ """
145
+ {
146
+ "key1": 1,
147
+ "key2": 2,
148
+ "key3": 3
149
+ }
150
+ """ ;
151
+ JsonSchema .isValid (schema , json );
152
+ var exception = assertThrows (JsonSchemaException .class ,
153
+ () -> JsonAssert .isValid (schema , json ));
154
+ assertEquals (VALU01 , exception .getCode ());
155
+ exception .printStackTrace ();
156
+ }
157
+
158
+ @ Test
159
+ public void When_NestedKeysWithWrongObjectInObject_ExceptionThrown () {
160
+ var schema =
161
+ """
162
+ @keys*("key") #object*
163
+ """ ;
164
+ var json =
165
+ """
166
+ {
167
+ "key1": {"value": 10},
168
+ "key2": {"value": 150},
169
+ "key3": {"value": 1000}
170
+ }
171
+ """ ;
172
+ JsonSchema .isValid (schema , json );
173
+ var exception = assertThrows (JsonSchemaException .class ,
174
+ () -> JsonAssert .isValid (schema , json ));
175
+ assertEquals (KEYS01 , exception .getCode ());
176
+ exception .printStackTrace ();
177
+ }
178
+
179
+ @ Test
180
+ public void When_NestedKeysAndValuesWithWrongObjectInArray_ExceptionThrown () {
181
+ var schema =
182
+ """
183
+ @keys*("key1", "key2") @values*(100, 200) #object*
184
+ """ ;
185
+ var json =
186
+ """
187
+ [{"value": 10}, {"value": 20}, {"value": 30}]
188
+ """ ;
189
+ JsonSchema .isValid (schema , json );
190
+ var exception = assertThrows (JsonSchemaException .class ,
191
+ () -> JsonAssert .isValid (schema , json ));
192
+ assertEquals (KEYS01 , exception .getCode ());
193
+ exception .printStackTrace ();
194
+ }
195
+
196
+ @ Test
197
+ public void When_EnumWithWrongObject_ExceptionThrown () {
198
+ var schema =
199
+ """
200
+ {
201
+ "key1": @enum(5, 10, 15),
202
+ "key2": @enum(100, 150, 200),
203
+ "key3": @enum("abc", "pqr", "xyz")
204
+ } #object
205
+ """ ;
206
+ var json =
207
+ """
208
+ {
209
+ "key1": 1,
210
+ "key2": 10,
211
+ "key3": "efg"
212
+ }
213
+ """ ;
214
+ JsonSchema .isValid (schema , json );
215
+ var exception = assertThrows (JsonSchemaException .class ,
216
+ () -> JsonAssert .isValid (schema , json ));
217
+ assertEquals (ENUM02 , exception .getCode ());
218
+ exception .printStackTrace ();
219
+ }
220
+
221
+ @ Test
222
+ public void When_DuplicateJsonPropertyInObject_ExceptionThrown () {
223
+ var schema =
224
+ """
225
+ {
226
+ "key1": #object,
227
+ "key2": #object,
228
+ "key3": #object
229
+ }
230
+ """ ;
231
+ var json =
232
+ """
233
+ {
234
+ "key1": [],
235
+ "key2": "value1",
236
+ "key2": [10, 20, 30]
237
+ }
238
+ """ ;
239
+ //JsonSchema.IsValid(schema, json);
240
+ var exception = assertThrows (DuplicatePropertyKeyException .class ,
241
+ () -> JsonAssert .isValid (schema , json ));
242
+ assertEquals (PROP03 , exception .getCode ());
243
+ exception .printStackTrace ();
244
+ }
245
+
246
+ @ Test
247
+ public void When_DuplicateSchemaPropertyInObject_ExceptionThrown () {
248
+ var schema =
249
+ """
250
+ {
251
+ "key1": #object,
252
+ "key2": #object,
253
+ "key2": #object
254
+ }
255
+ """ ;
256
+ var json =
257
+ """
258
+ {
259
+ "key1": [],
260
+ "key2": "value1",
261
+ "key3": [10, 20, 30]
262
+ }
263
+ """ ;
264
+ //JsonSchema.IsValid(schema, json);
265
+ var exception = assertThrows (DuplicatePropertyKeyException .class ,
266
+ () -> JsonAssert .isValid (schema , json ));
267
+ assertEquals (PROP03 , exception .getCode ());
268
+ exception .printStackTrace ();
269
+ }
270
+
271
+ @ Test
272
+ public void When_EmptyObjectInArray_ExceptionThrown () {
273
+ var schema =
274
+ """
275
+ [
276
+ @nonempty #object,
277
+ @nonempty #object
278
+ ]
279
+ """ ;
280
+ var json =
281
+ """
282
+ [
283
+ { },
284
+ { "key1": ["val1", "val2"] }
285
+ ]
286
+ """ ;
287
+ JsonSchema .isValid (schema , json );
288
+ var exception = assertThrows (JsonSchemaException .class ,
289
+ () -> JsonAssert .isValid (schema , json ));
290
+ assertEquals (NEMT03 , exception .getCode ());
291
+ exception .printStackTrace ();
292
+ }
293
+
294
+ @ Test
295
+ public void When_WrongLengthOfObjectInArray1_ExceptionThrown () {
296
+ var schema =
297
+ """
298
+ [
299
+ @length(1) #object
300
+ ]
301
+ """ ;
302
+ var json =
303
+ """
304
+ [
305
+ { "key1": 10, "key2": 20 }
306
+ ]
307
+ """ ;
308
+ JsonSchema .isValid (schema , json );
309
+ var exception = assertThrows (JsonSchemaException .class ,
310
+ () -> JsonAssert .isValid (schema , json ));
311
+ assertEquals (OLEN01 , exception .getCode ());
312
+ exception .printStackTrace ();
313
+ }
314
+
315
+ @ Test
316
+ public void When_WrongLengthOfObjectInArray2_ExceptionThrown () {
317
+ var schema =
318
+ """
319
+ [
320
+ @length(1, 4) #object
321
+ ]
322
+ """ ;
323
+ var json =
324
+ """
325
+ [
326
+ { }
327
+ ]
328
+ """ ;
329
+ JsonSchema .isValid (schema , json );
330
+ var exception = assertThrows (JsonSchemaException .class ,
331
+ () -> JsonAssert .isValid (schema , json ));
332
+ assertEquals (OLEN02 , exception .getCode ());
333
+ exception .printStackTrace ();
334
+ }
335
+
336
+ @ Test
337
+ public void When_WrongLengthOfObjectInArray3_ExceptionThrown () {
338
+ var schema =
339
+ """
340
+ [
341
+ @length(!, 4) #object
342
+ ]
343
+ """ ;
344
+ var json =
345
+ """
346
+ [
347
+ { "key1": 10, "key2": 20, "key3": 30, "key4": 40, "key5": 50 }
348
+ ]
349
+ """ ;
350
+ JsonSchema .isValid (schema , json );
351
+ var exception = assertThrows (JsonSchemaException .class ,
352
+ () -> JsonAssert .isValid (schema , json ));
353
+ assertEquals (OLEN05 , exception .getCode ());
354
+ exception .printStackTrace ();
355
+ }
356
+
357
+ @ Test
358
+ public void When_WrongLengthOfObjectInArray4_ExceptionThrown () {
359
+ var schema =
360
+ """
361
+ [
362
+ @length(2, !) #object
363
+ ]
364
+ """ ;
365
+ var json =
366
+ """
367
+ [
368
+ { "key1": 10 }
369
+ ]
370
+ """ ;
371
+ JsonSchema .isValid (schema , json );
372
+ var exception = assertThrows (JsonSchemaException .class ,
373
+ () -> JsonAssert .isValid (schema , json ));
374
+ assertEquals (OLEN04 , exception .getCode ());
375
+ exception .printStackTrace ();
376
+ }
377
+ }
0 commit comments