@@ -8,6 +8,7 @@ import {Get} from "../../src/decorator/Get";
8
8
import { QueryParam } from "../../src/decorator/QueryParam" ;
9
9
import { ResponseClassTransformOptions } from "../../src/decorator/ResponseClassTransformOptions" ;
10
10
import { RoutingControllersOptions } from "../../src/RoutingControllersOptions" ;
11
+
11
12
const chakram = require ( "chakram" ) ;
12
13
const expect = chakram . expect ;
13
14
@@ -208,4 +209,48 @@ describe("parameters auto-validation", () => {
208
209
} ) ;
209
210
} ) ;
210
211
211
- } ) ;
212
+ describe ( "should contain param name on validation failed" , ( ) => {
213
+
214
+ let requestFilter : any ;
215
+ beforeEach ( ( ) => {
216
+ requestFilter = undefined ;
217
+ } ) ;
218
+
219
+ before ( ( ) => {
220
+ getMetadataArgsStorage ( ) . reset ( ) ;
221
+
222
+ @JsonController ( )
223
+ class UserController {
224
+
225
+ @Get ( "/user" )
226
+ getUsers ( @QueryParam ( "filter" ) filter : UserFilter ) : any {
227
+ requestFilter = filter ;
228
+ const user = new UserModel ( ) ;
229
+ user . id = 1 ;
230
+ user . _firstName = "Umed" ;
231
+ user . _lastName = "Khudoiberdiev" ;
232
+ return user ;
233
+ }
234
+ }
235
+ } ) ;
236
+
237
+ const options : RoutingControllersOptions = {
238
+ validation : true
239
+ } ;
240
+
241
+ let expressApp : any , koaApp : any ;
242
+ before ( done => expressApp = createExpressServer ( options ) . listen ( 3001 , done ) ) ;
243
+ after ( done => expressApp . close ( done ) ) ;
244
+ before ( done => koaApp = createKoaServer ( options ) . listen ( 3002 , done ) ) ;
245
+ after ( done => koaApp . close ( done ) ) ;
246
+
247
+ const invalidFilter = {
248
+ keyword : "aa"
249
+ } ;
250
+
251
+ assertRequest ( [ 3001 , 3002 ] , "get" , `user?filter=${ JSON . stringify ( invalidFilter ) } ` , response => {
252
+ expect ( response ) . to . have . status ( 400 ) ;
253
+ expect ( response . body . paramName ) . to . equal ( "filter" ) ;
254
+ } ) ;
255
+ } ) ;
256
+ } ) ;
0 commit comments