@@ -928,6 +928,53 @@ describe('POST object', () => {
928
928
} ) ;
929
929
} ) ;
930
930
931
+ it ( 'should return 405 Method Not Allowed if objectKey is present with a non-matching query parameter' , done => {
932
+ const { url } = testContext ;
933
+ const objectKey = 'someObjectKey' ;
934
+ const queryParam = '?nonMatchingParam=true' ;
935
+ const invalidUrl = `${ url } /${ objectKey } ${ queryParam } ` ;
936
+ const fields = calculateFields ( ak , sk ) ;
937
+
938
+ const formData = new FormData ( ) ;
939
+
940
+ fields . forEach ( field => {
941
+ formData . append ( field . name , field . value ) ;
942
+ } ) ;
943
+
944
+ formData . append ( 'file' , fileBuffer , filename ) ;
945
+
946
+ return formData . getLength ( ( err , length ) => {
947
+ if ( err ) {
948
+ return done ( err ) ;
949
+ }
950
+
951
+ return axios . post ( invalidUrl , formData , {
952
+ headers : {
953
+ ...formData . getHeaders ( ) ,
954
+ 'Content-Length' : length ,
955
+ } ,
956
+ } )
957
+ . then ( ( ) => {
958
+ done ( new Error ( 'Request should not succeed with a non-matching query parameter' ) ) ;
959
+ } )
960
+ . catch ( err => {
961
+ assert . ok ( err . response , 'Error should be returned by axios' ) ;
962
+
963
+ xml2js . parseString ( err . response . data , ( err , result ) => {
964
+ if ( err ) {
965
+ return done ( err ) ;
966
+ }
967
+
968
+ const error = result . Error ;
969
+ assert . equal ( error . Code [ 0 ] , 'MethodNotAllowed' ) ;
970
+ assert . equal ( error . Message [ 0 ] , 'The specified method is not allowed against this resource.' ) ;
971
+ return done ( ) ;
972
+ } ) ;
973
+ } ) ;
974
+ } ) ;
975
+ } ) ;
976
+
977
+
931
978
it ( 'should successfully upload an object with bucket versioning enabled and verify version ID' , done => {
932
979
const { url } = testContext ;
933
980
0 commit comments