@@ -37,7 +37,7 @@ const calculateFields = (ak, sk, bucketName, additionalConditions) => {
3737
3838 const now = new Date ( ) ;
3939 const formattedDate = now . toISOString ( ) . replace ( / [: -] | \. \d { 3 } / g, '' ) ;
40- const shortFormattedDate = formatDate ( now ) ;
40+ let shortFormattedDate = formatDate ( now ) ;
4141
4242 const credential = `${ ak } /${ shortFormattedDate } /${ region } /${ service } /aws4_request` ;
4343 const conditionsFields = [
@@ -54,6 +54,9 @@ const calculateFields = (ak, sk, bucketName, additionalConditions) => {
5454 const index = conditionsFields . findIndex ( condition => condition . hasOwnProperty ( key ) ) ;
5555 if ( index !== - 1 ) {
5656 conditionsFields [ index ] [ key ] = value ;
57+ if ( key === 'x-amz-date' ) {
58+ shortFormattedDate = value . split ( 'T' ) [ 0 ] ;
59+ }
5760 } else {
5861 conditionsFields . push ( { [ key ] : value } ) ;
5962 }
@@ -69,11 +72,11 @@ const calculateFields = (ak, sk, bucketName, additionalConditions) => {
6972 const signature = crypto . createHmac ( 'sha256' , signingKey ) . update ( policyBase64 ) . digest ( 'hex' ) ;
7073
7174 const returnFields = [
72- { name : 'X-Amz-Credential ' , value : credential } ,
73- { name : 'X-Amz-Algorithm ' , value : 'AWS4-HMAC-SHA256' } ,
74- { name : 'X-Amz-Signature ' , value : signature } ,
75- { name : 'X-Amz-Date ' , value : formattedDate } ,
76- { name : 'Policy ' , value : policyBase64 } ,
75+ { name : 'x-amz-credential ' , value : credential } ,
76+ { name : 'x-amz-algorithm ' , value : 'AWS4-HMAC-SHA256' } ,
77+ { name : 'x-amz-signature ' , value : signature } ,
78+ { name : 'x-amz-date ' , value : formattedDate } ,
79+ { name : 'policy ' , value : policyBase64 } ,
7780 { name : 'bucket' , value : bucketName } ,
7881 { name : 'key' , value : filename } ,
7982 ] ;
@@ -95,7 +98,6 @@ const calculateFields = (ak, sk, bucketName, additionalConditions) => {
9598 return returnFields ;
9699} ;
97100
98-
99101describe ( 'POST object' , ( ) => {
100102 let bucketUtil ;
101103 let config ;
@@ -372,7 +374,16 @@ describe('POST object', () => {
372374 } )
373375 . catch ( err => {
374376 assert . equal ( err . response . status , 400 ) ;
375- done ( ) ;
377+ xml2js . parseString ( err . response . data , ( parseErr , result ) => {
378+ if ( parseErr ) {
379+ return done ( parseErr ) ;
380+ }
381+
382+ const error = result . Error ;
383+ assert . equal ( error . Code [ 0 ] , 'InvalidArgument' ) ;
384+ assert . equal ( error . Message [ 0 ] , 'POST requires exactly one file upload per request.' ) ;
385+ done ( ) ;
386+ } ) ;
376387 } ) ;
377388 } ) ;
378389 } ) ;
0 commit comments