@@ -6069,6 +6069,197 @@ group('sliceUploadFile() 续传', function () {
60696069 } ) ;
60706070} ) ;
60716071
6072+
6073+ group ( 'getObject() 默认开启合并 Key 校验' , function ( ) {
6074+ function getObjectErrorKey ( Key , done ) {
6075+ cos . getObject (
6076+ {
6077+ Bucket : config . Bucket ,
6078+ Region : config . Region ,
6079+ Key,
6080+ } ,
6081+ function ( err , data ) {
6082+ assert . ok ( err . message === 'The Getobject Key is illegal' ) ;
6083+ done ( ) ;
6084+ }
6085+ ) ;
6086+ }
6087+ test ( 'getObject() object The Getobject Key is illegal 1' , function ( done ) {
6088+ getObjectErrorKey ( '///////' , done ) ;
6089+ } ) ;
6090+ test ( 'getObject() object The Getobject Key is illegal 2' , function ( done ) {
6091+ getObjectErrorKey ( '/abc/../' , done ) ;
6092+ } ) ;
6093+ test ( 'getObject() object The Getobject Key is illegal 3' , function ( done ) {
6094+ getObjectErrorKey ( '/./' , done ) ;
6095+ } ) ;
6096+ test ( 'getObject() object The Getobject Key is illegal 4' , function ( done ) {
6097+ getObjectErrorKey ( '///abc/.//def//../../' , done ) ;
6098+ } ) ;
6099+ test ( 'getObject() object The Getobject Key is illegal 5' , function ( done ) {
6100+ getObjectErrorKey ( '/././///abc/.//def//../../' , done ) ;
6101+ } ) ;
6102+ } ) ;
6103+
6104+ group ( 'getObject() 手动关闭合并 Key 校验' , function ( ) {
6105+ var cos = new COS ( {
6106+ // 必选参数
6107+ SecretId : config . SecretId ,
6108+ SecretKey : config . SecretKey ,
6109+ Protocol : 'http' ,
6110+ ObjectKeySimplifyCheck : false ,
6111+ } ) ;
6112+ function putObjectAndGetObject ( Key , done ) {
6113+ const Body = Key ;
6114+ cos . putObject ( {
6115+ Bucket : config . Bucket ,
6116+ Region : config . Region ,
6117+ Key,
6118+ Body,
6119+ } , function ( err , data ) {
6120+ if ( err ) {
6121+ done ( err ) ;
6122+ } else {
6123+ cos . getObject (
6124+ {
6125+ Bucket : config . Bucket ,
6126+ Region : config . Region ,
6127+ Key,
6128+ } ,
6129+ function ( err , data ) {
6130+ assert . ok ( data . Body . toString ( ) === Body ) ;
6131+ done ( ) ;
6132+ }
6133+ ) ;
6134+ }
6135+ } ) ;
6136+ }
6137+ test ( 'getObject() object The Getobject Key is illegal 1' , function ( done ) {
6138+ // 会转成 getBucket
6139+ cos . getObject (
6140+ {
6141+ Bucket : config . Bucket ,
6142+ Region : config . Region ,
6143+ Key : '///////' ,
6144+ } ,
6145+ function ( err , data ) {
6146+ assert . ok ( data . Body . toString ( ) . includes ( 'ListBucketResult' ) ) ;
6147+ done ( ) ;
6148+ }
6149+ ) ;
6150+ } ) ;
6151+ test ( 'getObject() object The Getobject Key is illegal 2' , function ( done ) {
6152+ putObjectAndGetObject ( '/abc/../' , done ) ;
6153+ } ) ;
6154+ test ( 'getObject() object The Getobject Key is illegal 3' , function ( done ) {
6155+ // 会转成 getBucket
6156+ cos . getObject (
6157+ {
6158+ Bucket : config . Bucket ,
6159+ Region : config . Region ,
6160+ Key : '/./' ,
6161+ } ,
6162+ function ( err , data ) {
6163+ assert . ok ( data . Body . toString ( ) . includes ( 'ListBucketResult' ) ) ;
6164+ done ( ) ;
6165+ }
6166+ ) ;
6167+ } ) ;
6168+ test ( 'getObject() object The Getobject Key is illegal 4' , function ( done ) {
6169+ putObjectAndGetObject ( '///abc/.//def//../../' , done ) ;
6170+ } ) ;
6171+ test ( 'getObject() object The Getobject Key is illegal 5' , function ( done ) {
6172+ putObjectAndGetObject ( '/././///abc/.//def//../../' , done ) ;
6173+ } ) ;
6174+ } ) ;
6175+
6176+ group ( 'downloadFile() 默认开启合并 Key 校验' , function ( ) {
6177+ function downloadFileErrorKey ( Key , done ) {
6178+ cos . downloadFile (
6179+ {
6180+ Bucket : config . Bucket ,
6181+ Region : config . Region ,
6182+ Key,
6183+ FilePath : './' + Key
6184+ } ,
6185+ function ( err , data ) {
6186+ assert . ok ( err . message === 'The Getobject Key is illegal' ) ;
6187+ done ( ) ;
6188+ }
6189+ ) ;
6190+ }
6191+ test ( 'downloadFile() object The Getobject Key is illegal 1' , function ( done ) {
6192+ downloadFileErrorKey ( '///////' , done ) ;
6193+ } ) ;
6194+ test ( 'downloadFile() object The Getobject Key is illegal 2' , function ( done ) {
6195+ downloadFileErrorKey ( '/abc/../' , done ) ;
6196+ } ) ;
6197+ test ( 'downloadFile() object The Getobject Key is illegal 3' , function ( done ) {
6198+ downloadFileErrorKey ( '/./' , done ) ;
6199+ } ) ;
6200+ test ( 'downloadFile() object The Getobject Key is illegal 4' , function ( done ) {
6201+ downloadFileErrorKey ( '///abc/.//def//../../' , done ) ;
6202+ } ) ;
6203+ test ( 'downloadFile() object The Getobject Key is illegal 5' , function ( done ) {
6204+ downloadFileErrorKey ( '/././///abc/.//def//../../' , done ) ;
6205+ } ) ;
6206+ } ) ;
6207+
6208+ group ( 'downloadFile() 手动关闭合并 Key 校验' , function ( ) {
6209+ var cos = new COS ( {
6210+ // 必选参数
6211+ SecretId : config . SecretId ,
6212+ SecretKey : config . SecretKey ,
6213+ Protocol : 'http' ,
6214+ ObjectKeySimplifyCheck : false ,
6215+ } ) ;
6216+ function getObjectOrGetBucket ( Key , hasEtag , done ) {
6217+ const Body = Key ;
6218+ cos . putObject ( {
6219+ Bucket : config . Bucket ,
6220+ Region : config . Region ,
6221+ Key,
6222+ Body,
6223+ } , function ( err , data ) {
6224+ if ( err ) {
6225+ done ( ) ;
6226+ } else {
6227+ cos . downloadFile (
6228+ {
6229+ Bucket : config . Bucket ,
6230+ Region : config . Region ,
6231+ Key,
6232+ FilePath : './testFile'
6233+ } ,
6234+ function ( err , data ) {
6235+ const isGetBucket = data . ETag === '' ;
6236+ const isGetObject = data . ETag !== '' ;
6237+ const ok = hasEtag ? isGetObject : isGetBucket ;
6238+ fs . unlinkSync ( './testFile' ) ;
6239+ assert . ok ( ok ) ;
6240+ done ( ) ;
6241+ }
6242+ ) ;
6243+ }
6244+ } ) ;
6245+ }
6246+ test ( 'downloadFile() object The Getobject Key is illegal 1' , function ( done ) {
6247+ getObjectOrGetBucket ( '///////' , false , done ) ;
6248+ } ) ;
6249+ test ( 'downloadFile() object The Getobject Key is illegal 2' , function ( done ) {
6250+ getObjectOrGetBucket ( '/abc/../' , true , done ) ;
6251+ } ) ;
6252+ test ( 'downloadFile() object The Getobject Key is illegal 3' , function ( done ) {
6253+ getObjectOrGetBucket ( '/./' , false , done ) ;
6254+ } ) ;
6255+ test ( 'downloadFile() object The Getobject Key is illegal 4' , function ( done ) {
6256+ getObjectOrGetBucket ( '///abc/.//def//../../' , true , done ) ;
6257+ } ) ;
6258+ test ( 'downloadFile() object The Getobject Key is illegal 5' , function ( done ) {
6259+ getObjectOrGetBucket ( '/././///abc/.//def//../../' , true , done ) ;
6260+ } ) ;
6261+ } ) ;
6262+
60726263group ( 'getStream() 流式下载 ECONNREFUSED 错误' , function ( ) {
60736264 test ( 'getStream() 流式下载 ECONNREFUSED 错误' , function ( done , assert ) {
60746265 cos . options . Domain = '127.0.0.1:12345' ;
@@ -6155,6 +6346,7 @@ group('downloadFile', function () {
61556346 } ) ;
61566347 test ( 'downloadFile() fileSize=0' , function ( done , assert ) {
61576348 var Key = '0b.zip' ;
6349+ var FilePath = './' + Key ;
61586350 cos . downloadFile (
61596351 {
61606352 Bucket : config . Bucket , // Bucket 格式:test-1250000000
@@ -6167,7 +6359,8 @@ group('downloadFile', function () {
61676359 TaskId : '123' , // 可以自己生成TaskId,用于取消下载
61686360 } ,
61696361 function ( err , data ) {
6170- assert . ok ( err ) ;
6362+ fs . unlinkSync ( FilePath ) ;
6363+ assert . ok ( ! err ) ;
61716364 done ( ) ;
61726365 }
61736366 ) ;
@@ -6198,6 +6391,7 @@ group('downloadFile', function () {
61986391 TaskId : '123' , // 可以自己生成TaskId,用于取消下载
61996392 } ,
62006393 function ( err , data ) {
6394+ fs . unlinkSync ( filePath ) ;
62016395 assert . ok ( ! err ) ;
62026396 done ( ) ;
62036397 }
@@ -6238,6 +6432,7 @@ group('downloadFile', function () {
62386432 TaskId : '123' , // 可以自己生成TaskId,用于取消下载
62396433 } ,
62406434 function ( err , data ) {
6435+ fs . unlinkSync ( filePath ) ;
62416436 assert . ok ( ! err ) ;
62426437 done ( ) ;
62436438 }
@@ -6345,6 +6540,7 @@ group('downloadFile', function () {
63456540 onProgress : function ( progressData ) {
63466541 if ( progressData . percent >= 0.1 ) {
63476542 cos . emit ( 'inner-kill-task' , { TaskId : 'downloadFile-123' } ) ;
6543+ fs . unlinkSync ( filePath ) ;
63486544 assert . ok ( 1 ) ;
63496545 done ( ) ;
63506546 }
0 commit comments