@@ -8,6 +8,7 @@ import {Get} from "../../src/decorator/Get";
88import { QueryParam } from "../../src/decorator/QueryParam" ;
99import { ResponseClassTransformOptions } from "../../src/decorator/ResponseClassTransformOptions" ;
1010import { RoutingControllersOptions } from "../../src/RoutingControllersOptions" ;
11+
1112const chakram = require ( "chakram" ) ;
1213const expect = chakram . expect ;
1314
@@ -208,4 +209,48 @@ describe("parameters auto-validation", () => {
208209 } ) ;
209210 } ) ;
210211
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+ } ) ;
211256} ) ;
0 commit comments