@@ -436,6 +436,104 @@ describe('POST object', () => {
436436        } ) ; 
437437    } ) ; 
438438
439+     it ( 'should handle error when content-type is incorrect' ,  done  =>  { 
440+         const  {  bucketName,  url }  =  testContext ; 
441+         // Prep fields then remove the key field 
442+         let  fields  =  calculateFields ( ak ,  sk ,  bucketName ) ; 
443+         fields  =  fields . filter ( e  =>  e . name  !==  'key' ) ; 
444+ 
445+         const  formData  =  new  FormData ( ) ; 
446+ 
447+         fields . forEach ( field  =>  { 
448+             formData . append ( field . name ,  field . value ) ; 
449+         } ) ; 
450+ 
451+         formData . append ( 'file' ,  fs . createReadStream ( path . join ( __dirname ,  filename ) ) ) ; 
452+ 
453+         formData . getLength ( ( err ,  length )  =>  { 
454+             if  ( err )  { 
455+                 return  done ( err ) ; 
456+             } 
457+ 
458+             const  headers  =  { 
459+                 ...formData . getHeaders ( ) , 
460+                 'Content-Length' : length , 
461+             } ; 
462+             headers [ 'content-type' ]  =  'application/json' ; 
463+             return  axios . post ( url ,  formData ,  { 
464+                 headers, 
465+             } ) 
466+                 . then ( ( )  =>  { 
467+                     done ( new  Error ( 'Request should not succeed wrong content-type' ) ) ; 
468+                 } ) 
469+                 . catch ( err  =>  { 
470+                     assert . ok ( err . response ,  'Error should be returned by axios' ) ; 
471+ 
472+                     // Parse the XML error response 
473+                     xml2js . parseString ( err . response . data ,  ( err ,  result )  =>  { 
474+                         if  ( err )  { 
475+                             return  done ( err ) ; 
476+                         } 
477+ 
478+                         const  error  =  result . Error ; 
479+                         assert . equal ( error . Code [ 0 ] ,  'PreconditionFailed' ) ; 
480+                         assert . equal ( error . Message [ 0 ] , 
481+                             'Bucket POST must be of the enclosure-type multipart/form-data' ) ; 
482+                         return  done ( ) ; 
483+                     } ) ; 
484+                 } ) ; 
485+         } ) ; 
486+     } ) ; 
487+ 
488+     it ( 'should handle error when content-type is missing' ,  done  =>  { 
489+         const  {  bucketName,  url }  =  testContext ; 
490+         // Prep fields then remove the key field 
491+         let  fields  =  calculateFields ( ak ,  sk ,  bucketName ) ; 
492+         fields  =  fields . filter ( e  =>  e . name  !==  'key' ) ; 
493+ 
494+         const  formData  =  new  FormData ( ) ; 
495+ 
496+         fields . forEach ( field  =>  { 
497+             formData . append ( field . name ,  field . value ) ; 
498+         } ) ; 
499+ 
500+         formData . append ( 'file' ,  fs . createReadStream ( path . join ( __dirname ,  filename ) ) ) ; 
501+ 
502+         formData . getLength ( ( err ,  length )  =>  { 
503+             if  ( err )  { 
504+                 return  done ( err ) ; 
505+             } 
506+ 
507+             const  headers  =  { 
508+                 ...formData . getHeaders ( ) , 
509+                 'Content-Length' : length , 
510+             } ; 
511+             delete  headers [ 'content-type' ] ; 
512+             return  axios . post ( url ,  formData ,  { 
513+                 headers, 
514+             } ) 
515+                 . then ( ( )  =>  { 
516+                     done ( new  Error ( 'Request should not succeed without correct content-type' ) ) ; 
517+                 } ) 
518+                 . catch ( err  =>  { 
519+                     assert . ok ( err . response ,  'Error should be returned by axios' ) ; 
520+ 
521+                     // Parse the XML error response 
522+                     xml2js . parseString ( err . response . data ,  ( err ,  result )  =>  { 
523+                         if  ( err )  { 
524+                             return  done ( err ) ; 
525+                         } 
526+ 
527+                         const  error  =  result . Error ; 
528+                         assert . equal ( error . Code [ 0 ] ,  'PreconditionFailed' ) ; 
529+                         assert . equal ( error . Message [ 0 ] , 
530+                             'Bucket POST must be of the enclosure-type multipart/form-data' ) ; 
531+                         return  done ( ) ; 
532+                     } ) ; 
533+                 } ) ; 
534+         } ) ; 
535+     } ) ; 
536+ 
439537    it ( 'should upload an object with key slash' ,  done  =>  { 
440538        const  {  bucketName,  url }  =  testContext ; 
441539        const  slashKey  =  '/' ; 
0 commit comments