@@ -852,6 +852,51 @@ describe('POST object', () => {
852852 } ) ;
853853 } ) ;
854854
855+ it ( 'should return an error if a query parameter is present in the URL' , done => {
856+ const { url } = testContext ;
857+ const queryParam = '?invalidParam=true' ;
858+ const invalidUrl = `${ url } ${ queryParam } ` ;
859+ const fields = calculateFields ( ak , sk ) ;
860+
861+ const formData = new FormData ( ) ;
862+
863+ fields . forEach ( field => {
864+ formData . append ( field . name , field . value ) ;
865+ } ) ;
866+
867+ formData . append ( 'file' , fileBuffer , filename ) ;
868+
869+ return formData . getLength ( ( err , length ) => {
870+ if ( err ) {
871+ return done ( err ) ;
872+ }
873+
874+ return axios . post ( invalidUrl , formData , {
875+ headers : {
876+ ...formData . getHeaders ( ) ,
877+ 'Content-Length' : length ,
878+ } ,
879+ } )
880+ . then ( ( ) => {
881+ done ( new Error ( 'Request should not succeed with an invalid query parameter' ) ) ;
882+ } )
883+ . catch ( err => {
884+ assert . ok ( err . response , 'Error should be returned by axios' ) ;
885+
886+ xml2js . parseString ( err . response . data , ( err , result ) => {
887+ if ( err ) {
888+ return done ( err ) ;
889+ }
890+
891+ const error = result . Error ;
892+ assert . equal ( error . Code [ 0 ] , 'InvalidArgument' ) ;
893+ assert . equal ( error . Message [ 0 ] , 'Query String Parameters not allowed on POST requests.' ) ;
894+ return done ( ) ;
895+ } ) ;
896+ } ) ;
897+ } ) ;
898+ } ) ;
899+
855900 it ( 'should successfully upload an object with bucket versioning enabled and verify version ID' , done => {
856901 const { url } = testContext ;
857902
0 commit comments