@@ -8,7 +8,7 @@ import {validateRequestBody} from '../../src/validation/request-body.validator';
8
8
import { RestHttpErrors } from '../../' ;
9
9
import { aBodySpec } from '../helpers' ;
10
10
import {
11
- RequestBodyObject ,
11
+ ReferenceObject ,
12
12
SchemaObject ,
13
13
SchemasObject ,
14
14
} from '@loopback/openapi-v3-types' ;
@@ -53,7 +53,10 @@ const INVALID_ACCOUNT_SCHEMA = {
53
53
54
54
describe ( 'validateRequestBody' , ( ) => {
55
55
it ( 'accepts valid data omitting optional properties' , ( ) => {
56
- validateRequestBody ( { title : 'work' } , aBodySpec ( TODO_SCHEMA ) ) ;
56
+ validateRequestBody (
57
+ { value : { title : 'work' } , schema : TODO_SCHEMA } ,
58
+ aBodySpec ( TODO_SCHEMA ) ,
59
+ ) ;
57
60
} ) ;
58
61
59
62
it ( 'rejects data missing a required property' , ( ) => {
@@ -72,7 +75,7 @@ describe('validateRequestBody', () => {
72
75
{
73
76
description : 'missing required "title"' ,
74
77
} ,
75
- aBodySpec ( TODO_SCHEMA ) ,
78
+ TODO_SCHEMA ,
76
79
) ;
77
80
} ) ;
78
81
@@ -93,7 +96,7 @@ describe('validateRequestBody', () => {
93
96
title : 'todo with a string value of "isComplete"' ,
94
97
isComplete : 'a string value' ,
95
98
} ,
96
- aBodySpec ( TODO_SCHEMA ) ,
99
+ TODO_SCHEMA ,
97
100
) ;
98
101
} ) ;
99
102
@@ -120,13 +123,13 @@ describe('validateRequestBody', () => {
120
123
description : 'missing title and a string value of "isComplete"' ,
121
124
isComplete : 'a string value' ,
122
125
} ,
123
- aBodySpec ( TODO_SCHEMA ) ,
126
+ TODO_SCHEMA ,
124
127
) ;
125
128
} ) ;
126
129
127
130
it ( 'reports schema generation errors' , ( ) => {
128
131
expect ( ( ) =>
129
- validateRequestBody ( { } , aBodySpec ( INVALID_ACCOUNT_SCHEMA ) ) ,
132
+ validateRequestBody ( { value : { } , schema : INVALID_ACCOUNT_SCHEMA } ) ,
130
133
) . to . throw (
131
134
"can't resolve reference #/components/schemas/Invalid from id #" ,
132
135
) ;
@@ -146,7 +149,7 @@ describe('validateRequestBody', () => {
146
149
'VALIDATION_FAILED' ,
147
150
details ,
148
151
{ description : 'missing title' } ,
149
- aBodySpec ( { $ref : '#/components/schemas/Todo' } ) ,
152
+ { $ref : '#/components/schemas/Todo' } ,
150
153
{ Todo : TODO_SCHEMA } ,
151
154
) ;
152
155
} ) ;
@@ -157,12 +160,17 @@ describe('validateRequestBody', () => {
157
160
'MISSING_REQUIRED_PARAMETER' ,
158
161
undefined ,
159
162
null ,
160
- aBodySpec ( TODO_SCHEMA , { required : true } ) ,
163
+ TODO_SCHEMA ,
164
+ { } ,
165
+ true ,
161
166
) ;
162
167
} ) ;
163
168
164
169
it ( 'allows empty values when body is optional' , ( ) => {
165
- validateRequestBody ( null , aBodySpec ( TODO_SCHEMA , { required : false } ) ) ;
170
+ validateRequestBody (
171
+ { value : null , schema : TODO_SCHEMA } ,
172
+ aBodySpec ( TODO_SCHEMA , { required : false } ) ,
173
+ ) ;
166
174
} ) ;
167
175
168
176
it ( 'rejects invalid values for number properties' , ( ) => {
@@ -184,7 +192,7 @@ describe('validateRequestBody', () => {
184
192
'VALIDATION_FAILED' ,
185
193
details ,
186
194
{ count : 'string value' } ,
187
- aBodySpec ( schema ) ,
195
+ schema ,
188
196
) ;
189
197
} ) ;
190
198
@@ -214,7 +222,7 @@ describe('validateRequestBody', () => {
214
222
'VALIDATION_FAILED' ,
215
223
details ,
216
224
{ orders : [ 'order1' , 1 ] } ,
217
- aBodySpec ( schema ) ,
225
+ schema ,
218
226
) ;
219
227
} ) ;
220
228
@@ -238,7 +246,7 @@ describe('validateRequestBody', () => {
238
246
'VALIDATION_FAILED' ,
239
247
details ,
240
248
[ { title : 'a good todo' } , { description : 'a todo item missing title' } ] ,
241
- aBodySpec ( schema ) ,
249
+ schema ,
242
250
{ Todo : TODO_SCHEMA } ,
243
251
) ;
244
252
} ) ;
@@ -280,7 +288,7 @@ describe('validateRequestBody', () => {
280
288
{ description : 'a todo with wrong type of title' , title : 2 } ,
281
289
] ,
282
290
} ,
283
- aBodySpec ( schema ) ,
291
+ schema ,
284
292
{ Todo : TODO_SCHEMA } ,
285
293
) ;
286
294
} ) ;
@@ -314,7 +322,7 @@ describe('validateRequestBody', () => {
314
322
{ title : 'an account with invalid address' , address : { city : 1 } } ,
315
323
] ,
316
324
} ,
317
- aBodySpec ( schema ) ,
325
+ schema ,
318
326
{ Account : ACCOUNT_SCHEMA , Address : ADDRESS_SCHEMA } ,
319
327
) ;
320
328
} ) ;
@@ -328,11 +336,16 @@ function verifyValidationRejectsInputWithError(
328
336
expectedCode : string ,
329
337
expectedDetails : RestHttpErrors . ValidationErrorDetails [ ] | undefined ,
330
338
body : object | null ,
331
- spec : RequestBodyObject | undefined ,
339
+ schema : SchemaObject | ReferenceObject ,
332
340
schemas ?: SchemasObject ,
341
+ required ?: boolean ,
333
342
) {
334
343
try {
335
- validateRequestBody ( body , spec , schemas ) ;
344
+ validateRequestBody (
345
+ { value : body , schema} ,
346
+ aBodySpec ( schema , { required} ) ,
347
+ schemas ,
348
+ ) ;
336
349
throw new Error (
337
350
"expected Function { name: 'validateRequestBody' } to throw exception" ,
338
351
) ;
0 commit comments