@@ -471,6 +471,28 @@ describe('browser', () => {
471
471
472
472
assert . equal ( resultGet . content . toString ( ) , body . toString ( ) ) ;
473
473
474
+ const resultDel = yield this . store . delete ( name ) ;
475
+ assert . equal ( resultDel . res . status , 204 ) ;
476
+ } ) ;
477
+ it ( 'GETs and PUTs blob to a bucket' , function * ( ) {
478
+ const name = `${ prefix } put/test` ;
479
+ const body = new Blob ( [ 'blobBody' ] , { type : 'text/plain' } ) ;
480
+ const resultPut = yield this . store . put ( name , body ) ;
481
+ assert . equal ( resultPut . res . status , 200 ) ;
482
+ const resultGet = yield this . store . get ( name ) ;
483
+ assert . equal ( resultGet . res . status , 200 ) ;
484
+
485
+
486
+ yield new Promise ( ( resolve ) => {
487
+ const fr = new FileReader ( ) ;
488
+ fr . onload = function ( ) {
489
+ console . log ( fr . result ) ;
490
+ assert . equal ( resultGet . content . toString ( ) , fr . result ) ;
491
+ resolve ( ) ;
492
+ } ;
493
+ fr . readAsText ( body , 'utf-8' ) ;
494
+ } ) ;
495
+
474
496
const resultDel = yield this . store . delete ( name ) ;
475
497
assert . equal ( resultDel . res . status , 204 ) ;
476
498
} ) ;
@@ -762,6 +784,39 @@ describe('browser', () => {
762
784
assert . deepEqual ( md5 ( object . content ) , md5 ( fileBuf ) ) ;
763
785
} ) ;
764
786
787
+ it ( 'should upload file using multipart upload' , function * ( ) {
788
+ // create a file with 1M random data
789
+ const blobContent = Array ( 1024 * 1024 ) . fill ( 'a' ) . join ( '' ) ;
790
+ const blob = new Blob ( [ blobContent ] , { type : 'text/plain' } ) ;
791
+
792
+ const name = `${ prefix } multipart/upload-blob.js` ;
793
+ let progress = 0 ;
794
+ const result = yield this . store . multipartUpload ( name , blob , {
795
+ partSize : 100 * 1024 ,
796
+ progress ( ) {
797
+ return function ( done ) {
798
+ progress ++ ;
799
+ done ( ) ;
800
+ } ;
801
+ } ,
802
+ } ) ;
803
+ sinon . restore ( ) ;
804
+ assert . equal ( result . res . status , 200 ) ;
805
+ assert . equal ( progress , 12 ) ;
806
+
807
+ const object = yield this . store . get ( name ) ;
808
+ assert . equal ( object . res . status , 200 ) ;
809
+
810
+ const blobBuf = new Uint8Array ( blobContent . length ) ;
811
+ for ( let i = 0 , j = blobContent . length ; i < j ; ++ i ) {
812
+ blobBuf [ i ] = blobContent . charCodeAt ( i ) ;
813
+ }
814
+
815
+ assert . equal ( object . content . length , blobBuf . length ) ;
816
+ // avoid comparing buffers directly for it may hang when generating diffs
817
+ assert . deepEqual ( md5 ( object . content ) , md5 ( blobBuf ) ) ;
818
+ } ) ;
819
+
765
820
it ( 'should return requestId in init, upload part, complete' , function * ( ) {
766
821
const fileContent = Array ( 1024 * 1024 ) . fill ( 'a' ) . join ( '' ) ;
767
822
const file = new File ( [ fileContent ] , 'multipart-fallback' ) ;
0 commit comments