@@ -354,7 +354,7 @@ describe('testing POST object via multipart upload', () => {
354354 expect ( S3Backend . prototype . uploadObject ) . toHaveBeenCalled ( )
355355 } )
356356
357- test ( 'successfully uploading an object with custom metadata' , async ( ) => {
357+ test ( 'successfully uploading an object with custom metadata using form data ' , async ( ) => {
358358 const form = new FormData ( )
359359 form . append ( 'file' , fs . createReadStream ( `./src/test/assets/sadcat.jpg` ) )
360360 form . append (
@@ -395,6 +395,45 @@ describe('testing POST object via multipart upload', () => {
395395 } )
396396 } )
397397
398+ test ( 'successfully uploading an object with custom metadata using stream' , async ( ) => {
399+ const file = fs . createReadStream ( `./src/test/assets/sadcat.jpg` )
400+
401+ const headers = {
402+ authorization : `Bearer ${ serviceKey } ` ,
403+ 'x-upsert' : 'true' ,
404+ 'x-metadata' : Buffer . from (
405+ JSON . stringify ( {
406+ test1 : 'test1' ,
407+ test2 : 'test2' ,
408+ } )
409+ ) . toString ( 'base64' ) ,
410+ }
411+
412+ const response = await app ( ) . inject ( {
413+ method : 'POST' ,
414+ url : '/object/bucket2/sadcat-upload3018.png' ,
415+ headers,
416+ payload : file ,
417+ } )
418+ expect ( response . statusCode ) . toBe ( 200 )
419+ expect ( S3Backend . prototype . uploadObject ) . toHaveBeenCalled ( )
420+
421+ const client = await getSuperuserPostgrestClient ( )
422+
423+ const object = await client
424+ . table ( 'objects' )
425+ . select ( '*' )
426+ . where ( 'name' , 'sadcat-upload3018.png' )
427+ . where ( 'bucket_id' , 'bucket2' )
428+ . first ( )
429+
430+ expect ( object ) . not . toBeFalsy ( )
431+ expect ( object ?. user_metadata ) . toEqual ( {
432+ test1 : 'test1' ,
433+ test2 : 'test2' ,
434+ } )
435+ } )
436+
398437 test ( 'fetch object metadata' , async ( ) => {
399438 const form = new FormData ( )
400439 form . append ( 'file' , fs . createReadStream ( `./src/test/assets/sadcat.jpg` ) )
@@ -2121,7 +2160,7 @@ describe('testing list objects', () => {
21212160 } )
21222161 expect ( response . statusCode ) . toBe ( 200 )
21232162 const responseJSON = JSON . parse ( response . body )
2124- expect ( responseJSON ) . toHaveLength ( 8 )
2163+ expect ( responseJSON ) . toHaveLength ( 9 )
21252164 const names = responseJSON . map ( ( ele : any ) => ele . name )
21262165 expect ( names ) . toContain ( 'curlimage.jpg' )
21272166 expect ( names ) . toContain ( 'private' )
0 commit comments