@@ -1339,6 +1339,128 @@ describe('browser', () => {
1339
1339
} ) ;
1340
1340
} ) ;
1341
1341
1342
+ describe ( 'symlink()' , ( ) => {
1343
+ it ( 'Should put and get Symlink' , async ( ) => {
1344
+ const store = oss ( ossConfig ) ;
1345
+ const targetName = '/oss/target-测试.js' ;
1346
+ const name = '/oss/symlink-软链接.js' ;
1347
+ let result = await store . put ( targetName , Buffer . from ( 'test-symlink' ) ) ;
1348
+ assert . equal ( result . res . status , 200 ) ;
1349
+
1350
+ result = await store . putSymlink ( name , targetName , {
1351
+ storageClass : 'IA' ,
1352
+ meta : {
1353
+ uid : '1' ,
1354
+ slus : 'test.html'
1355
+ }
1356
+ } ) ;
1357
+ assert . equal ( result . res . status , 200 ) ;
1358
+
1359
+ result = await store . getSymlink ( name ) ;
1360
+ assert . equal ( result . res . status , 200 ) ;
1361
+ // 需要设置暴露headers x-oss-symlink-target
1362
+ // assert.equal(result.targetName, store._objectName(targetName));
1363
+
1364
+ result = await store . head ( name ) ;
1365
+
1366
+ assert . equal ( result . res . status , 200 ) ;
1367
+ // 需要设置暴露headers x-oss-object-type
1368
+ assert . equal ( result . res . headers [ 'x-oss-object-type' ] , 'Symlink' ) ;
1369
+ // 需要设置对应暴露的headers 每个对应meta的header
1370
+ // assert.deepEqual(result.meta, {
1371
+ // uid: '1',
1372
+ // slus: 'test.html'
1373
+ // });
1374
+ // TODO getObjectMeta should return storage class,
1375
+ // headObject return targetObject storage class
1376
+ // result = await store.getObjectMeta(name);
1377
+ // console.log(result);
1378
+ } ) ;
1379
+ } ) ;
1380
+
1381
+ describe ( 'deleteMulti()' , ( ) => {
1382
+ const names = [ ] ;
1383
+ beforeEach ( async ( ) => {
1384
+ const store = oss ( ossConfig ) ;
1385
+ let name = `${ prefix } ali-sdk/oss/deleteMulti0.js` ;
1386
+ names . push ( name ) ;
1387
+ await store . put ( name , Buffer . from ( name ) ) ;
1388
+
1389
+ name = `${ prefix } ali-sdk/oss/deleteMulti1.js` ;
1390
+ names . push ( name ) ;
1391
+ await store . put ( name , Buffer . from ( name ) ) ;
1392
+
1393
+ name = `${ prefix } ali-sdk/oss/deleteMulti2.js` ;
1394
+ names . push ( name ) ;
1395
+ await store . put ( name , Buffer . from ( name ) ) ;
1396
+ } ) ;
1397
+
1398
+ it ( 'should delete 3 exists objs' , async ( ) => {
1399
+ const store = oss ( ossConfig ) ;
1400
+ const result = await store . deleteMulti ( names ) ;
1401
+ assert . deepEqual ( result . deleted . map ( v => v . Key ) , names ) ;
1402
+ assert . equal ( result . res . status , 200 ) ;
1403
+ } ) ;
1404
+
1405
+ it ( 'should delete 2 exists and 2 not exists objs' , async ( ) => {
1406
+ const store = oss ( ossConfig ) ;
1407
+ const result = await store . deleteMulti ( names . slice ( 0 , 2 ) . concat ( [ 'not-exist1' , 'not-exist2' ] ) ) ;
1408
+ assert . deepEqual ( result . deleted . map ( v => v . Key ) , names . slice ( 0 , 2 ) . concat ( [ 'not-exist1' , 'not-exist2' ] ) ) ;
1409
+ assert . equal ( result . res . status , 200 ) ;
1410
+ } ) ;
1411
+
1412
+ it ( 'should delete 1 exists objs' , async ( ) => {
1413
+ const store = oss ( ossConfig ) ;
1414
+ const result = await store . deleteMulti ( names . slice ( 0 , 1 ) ) ;
1415
+ assert . deepEqual ( result . deleted . map ( v => v . Key ) , names . slice ( 0 , 1 ) ) ;
1416
+ assert . equal ( result . res . status , 200 ) ;
1417
+ } ) ;
1418
+
1419
+ it ( 'should delete in quiet mode' , async ( ) => {
1420
+ const store = oss ( ossConfig ) ;
1421
+ const result = await store . deleteMulti ( names , {
1422
+ quiet : true
1423
+ } ) ;
1424
+ assert ( result . deleted . length === 0 ) ;
1425
+ assert . equal ( result . res . status , 200 ) ;
1426
+ } ) ;
1427
+ } ) ;
1428
+
1429
+ describe ( 'getObjectMeta()' , ( ) => {
1430
+ let name ;
1431
+ let resHeaders ;
1432
+ let fileSize ;
1433
+ before ( async ( ) => {
1434
+ const store = oss ( ossConfig ) ;
1435
+ name = `${ prefix } ali-sdk/oss/object-meta.js` ;
1436
+ const fileContent = Array ( 10 * 100 * 1024 ) . fill ( 'a' ) . join ( '' ) ;
1437
+ const file = new File ( [ fileContent ] , 'multipart-upload-part' ) ;
1438
+ const object = await store . put ( name , file ) ;
1439
+ fileSize = 10 * 100 * 1024 ;
1440
+ assert . equal ( typeof object . res . headers [ 'x-oss-request-id' ] , 'string' ) ;
1441
+ resHeaders = object . res . headers ;
1442
+ } ) ;
1443
+
1444
+ it ( 'should head not exists object throw NoSuchKeyError' , async ( ) => {
1445
+ const store = oss ( ossConfig ) ;
1446
+ try {
1447
+ await store . head ( `${ name } not-exists` ) ;
1448
+ } catch ( error ) {
1449
+ assert . equal ( error . name , 'NoSuchKeyError' ) ;
1450
+ assert . equal ( error . status , 404 ) ;
1451
+ assert . equal ( typeof error . requestId , 'string' ) ;
1452
+ }
1453
+ } ) ;
1454
+
1455
+ it ( 'should return Etag and Content-Length' , async ( ) => {
1456
+ const store = oss ( ossConfig ) ;
1457
+ const info = await store . getObjectMeta ( name ) ;
1458
+ assert . equal ( info . status , 200 ) ;
1459
+ assert . equal ( info . res . headers . etag , resHeaders . etag ) ;
1460
+ assert . equal ( info . res . headers [ 'content-length' ] , fileSize ) ;
1461
+ } ) ;
1462
+ } ) ;
1463
+
1342
1464
describe ( 'request time is skew' , ( ) => {
1343
1465
it ( 'When the client\'s date is skew, the request will calibration time and retry' , async ( ) => {
1344
1466
const store = oss ( ossConfig ) ;
0 commit comments