Skip to content

Commit bcc5e50

Browse files
committed
delete operation related tests migration
Issue: CLDSRV-724
1 parent d503f6b commit bcc5e50

File tree

4 files changed

+531
-510
lines changed

4 files changed

+531
-510
lines changed
Lines changed: 114 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
const assert = require('assert');
2-
const async = require('async');
2+
const {
3+
CreateBucketCommand,
4+
PutObjectCommand,
5+
PutObjectTaggingCommand,
6+
DeleteObjectTaggingCommand,
7+
PutObjectAclCommand,
8+
PutBucketAclCommand,
9+
GetObjectTaggingCommand,
10+
} = require('@aws-sdk/client-s3');
311

412
const withV4 = require('../support/withV4');
513
const BucketUtility = require('../../lib/utility/bucket-util');
@@ -21,8 +29,8 @@ const taggingConfig = { TagSet: [
2129

2230
function _checkError(err, code, statusCode) {
2331
assert(err, 'Expected error but found none');
24-
assert.strictEqual(err.code, code);
25-
assert.strictEqual(err.statusCode, statusCode);
32+
assert.strictEqual(err.name, code);
33+
assert.strictEqual(err.$metadata.httpStatusCode, statusCode);
2634
}
2735

2836
describe('DELETE object taggings', () => {
@@ -32,112 +40,133 @@ describe('DELETE object taggings', () => {
3240
const otherAccountBucketUtility = new BucketUtility('lisa', {});
3341
const otherAccountS3 = otherAccountBucketUtility.s3;
3442

35-
beforeEach(done => s3.createBucket({ Bucket: bucketName }, err => {
36-
if (err) {
37-
return done(err);
38-
}
39-
return s3.putObject({ Bucket: bucketName, Key: objectName }, done);
40-
}));
43+
beforeEach(async () => {
44+
await s3.send(new CreateBucketCommand({ Bucket: bucketName }));
45+
await s3.send(new PutObjectCommand({ Bucket: bucketName, Key: objectName }));
46+
});
4147

42-
afterEach(() => {
48+
afterEach(async () => {
4349
process.stdout.write('Emptying bucket');
44-
return bucketUtil.empty(bucketName)
45-
.then(() => {
46-
process.stdout.write('Deleting bucket');
47-
return bucketUtil.deleteOne(bucketName);
48-
})
49-
.catch(err => {
50-
process.stdout.write('Error in afterEach');
51-
throw err;
52-
});
50+
await bucketUtil.empty(bucketName);
51+
process.stdout.write('Deleting bucket');
52+
await bucketUtil.deleteOne(bucketName);
5353
});
5454

55-
it('should delete tag set', done => {
56-
s3.putObjectTagging({
55+
it('should delete tag set', async () => {
56+
await s3.send(new PutObjectTaggingCommand({
5757
Bucket: bucketName,
5858
Key: objectName,
5959
Tagging: taggingConfig,
60-
}, err => {
61-
assert.ifError(err, `putObjectTagging error: ${err}`);
62-
s3.deleteObjectTagging({ Bucket: bucketName, Key: objectName },
63-
(err, data) => {
64-
assert.ifError(err, `Found unexpected err ${err}`);
65-
assert.strictEqual(Object.keys(data).length, 0);
66-
done();
67-
});
68-
});
60+
}));
61+
await s3.send(new DeleteObjectTaggingCommand({
62+
Bucket: bucketName,
63+
Key: objectName
64+
}));
65+
const dataGet = await s3.send(new GetObjectTaggingCommand({
66+
Bucket: bucketName,
67+
Key: objectName,
68+
}));
69+
assert.strictEqual(dataGet.TagSet.length, 0);
6970
});
7071

71-
it('should delete a non-existing tag set', done => {
72-
s3.deleteObjectTagging({ Bucket: bucketName, Key: objectName },
73-
(err, data) => {
74-
assert.ifError(err, `Found unexpected err ${err}`);
75-
assert.strictEqual(Object.keys(data).length, 0);
76-
done();
77-
});
72+
it('should delete a non-existing tag set', async () => {
73+
await s3.send(new DeleteObjectTaggingCommand({
74+
Bucket: bucketName,
75+
Key: objectName
76+
}));
77+
const dataGet = await s3.send(new GetObjectTaggingCommand({
78+
Bucket: bucketName,
79+
Key: objectName
80+
}));
81+
assert.strictEqual(dataGet.TagSet.length, 0);
7882
});
7983

8084
it('should return NoSuchKey deleting tag set to a non-existing object',
81-
done => {
82-
s3.deleteObjectTagging({
83-
Bucket: bucketName,
84-
Key: 'nonexisting',
85-
}, err => {
85+
async () => {
86+
try {
87+
await s3.send(new DeleteObjectTaggingCommand({
88+
Bucket: bucketName,
89+
Key: 'nonexisting',
90+
}));
91+
assert.fail('Expected NoSuchKey error');
92+
} catch (err) {
8693
_checkError(err, 'NoSuchKey', 404);
87-
done();
88-
});
94+
}
8995
});
96+
9097
it('should return 403 AccessDenied deleting tag set with another ' +
91-
'account', done => {
92-
otherAccountS3.deleteObjectTagging({ Bucket: bucketName, Key:
93-
objectName }, err => {
98+
'account', async () => {
99+
try {
100+
await otherAccountS3.send(new DeleteObjectTaggingCommand({
101+
Bucket: bucketName,
102+
Key: objectName
103+
}));
104+
assert.fail('Expected AccessDenied error');
105+
} catch (err) {
94106
_checkError(err, 'AccessDenied', 403);
95-
done();
96-
});
107+
}
97108
});
98109

99110
it('should return 403 AccessDenied deleting tag set with a different ' +
100-
'account to an object with ACL "public-read-write"',
101-
done => {
102-
s3.putObjectAcl({ Bucket: bucketName, Key: objectName,
103-
ACL: 'public-read-write' }, err => {
104-
if (err) {
105-
return done(err);
106-
}
107-
return otherAccountS3.deleteObjectTagging({ Bucket: bucketName,
108-
Key: objectName }, err => {
109-
_checkError(err, 'AccessDenied', 403);
110-
done();
111-
});
112-
});
111+
'account to an object with ACL "public-read-write"',
112+
async () => {
113+
await s3.send(new PutObjectAclCommand({
114+
Bucket: bucketName,
115+
Key: objectName,
116+
ACL: 'public-read-write'
117+
}));
118+
119+
try {
120+
await otherAccountS3.send(new DeleteObjectTaggingCommand({
121+
Bucket: bucketName,
122+
Key: objectName
123+
}));
124+
assert.fail('Expected AccessDenied error');
125+
} catch (err) {
126+
_checkError(err, 'AccessDenied', 403);
127+
}
113128
});
114129

115-
it('should return 403 AccessDenied deleting tag set to an object' +
116-
' in a bucket created with a different account',
117-
done => {
118-
async.waterfall([
119-
next => s3.putBucketAcl({ Bucket: bucketName, ACL:
120-
'public-read-write' }, err => next(err)),
121-
next => otherAccountS3.putObject({ Bucket: bucketName, Key:
122-
objectNameAcl }, err => next(err)),
123-
next => otherAccountS3.deleteObjectTagging({ Bucket: bucketName,
124-
Key: objectNameAcl }, err => next(err)),
125-
], err => {
130+
it('should return 403 AccessDenied deleting tag set to an object '+
131+
' in a bucket created with a different account',
132+
async () => {
133+
await s3.send(new PutBucketAclCommand({
134+
Bucket: bucketName,
135+
ACL: 'public-read-write'
136+
}));
137+
138+
await otherAccountS3.send(new PutObjectCommand({
139+
Bucket: bucketName,
140+
Key: objectNameAcl
141+
}));
142+
143+
try {
144+
await otherAccountS3.send(new DeleteObjectTaggingCommand({
145+
Bucket: bucketName,
146+
Key: objectNameAcl
147+
}));
148+
assert.fail('Expected AccessDenied error');
149+
} catch (err) {
126150
_checkError(err, 'AccessDenied', 403);
127-
done();
128-
});
151+
}
129152
});
130153

131-
it('should delete tag set to an object in a bucket created with same ' +
132-
'account even though object put by other account', done => {
133-
async.waterfall([
134-
next => s3.putBucketAcl({ Bucket: bucketName, ACL:
135-
'public-read-write' }, err => next(err)),
136-
next => otherAccountS3.putObject({ Bucket: bucketName, Key:
137-
objectNameAcl }, err => next(err)),
138-
next => s3.deleteObjectTagging({ Bucket: bucketName,
139-
Key: objectNameAcl }, err => next(err)),
140-
], done);
154+
it('should delete tag set to an object in a bucket created with '+
155+
'same account even though object put by other account', async () => {
156+
await s3.send(new PutBucketAclCommand({
157+
Bucket: bucketName,
158+
ACL: 'public-read-write'
159+
}));
160+
161+
await otherAccountS3.send(new PutObjectCommand({
162+
Bucket: bucketName,
163+
Key: objectNameAcl
164+
}));
165+
166+
await s3.send(new DeleteObjectTaggingCommand({
167+
Bucket: bucketName,
168+
Key: objectNameAcl
169+
}));
141170
});
142171
});
143172
});

0 commit comments

Comments
 (0)