Skip to content

Commit 8e3ad14

Browse files
committed
object related versionning tests migration
Issue: CLDSRV-724
1 parent c5450c4 commit 8e3ad14

File tree

13 files changed

+2992
-3476
lines changed

13 files changed

+2992
-3476
lines changed

tests/functional/aws-node-sdk/test/versioning/listObjectMasterVersions.js

Lines changed: 70 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
const assert = require('assert');
2-
const async = require('async');
2+
const {
3+
CreateBucketCommand,
4+
PutBucketVersioningCommand,
5+
PutObjectCommand,
6+
DeleteObjectCommand,
7+
ListObjectsCommand,
8+
DeleteBucketCommand,
9+
} = require('@aws-sdk/client-s3');
310

411
const withV4 = require('../support/withV4');
512
const BucketUtility = require('../../lib/utility/bucket-util');
@@ -37,21 +44,18 @@ describe('listObject - Delimiter master', function testSuite() {
3744
const s3 = bucketUtil.s3;
3845

3946
// setup test
40-
before(done => {
41-
s3.createBucket({ Bucket: bucket }, done);
47+
before(async () => {
48+
await s3.send(new CreateBucketCommand({ Bucket: bucket }));
4249
});
4350

44-
// delete bucket after testing
51+
4552
after(done => {
4653
removeAllVersions({ Bucket: bucket }, err => {
4754
if (err) {
4855
return done(err);
4956
}
50-
return s3.deleteBucket({ Bucket: bucket }, err => {
51-
assert.strictEqual(err, null,
52-
`Error deleting bucket: ${err}`);
53-
return done();
54-
});
57+
return s3.send(new DeleteBucketCommand({ Bucket: bucket }))
58+
.then(() => done()).catch(done);
5559
});
5660
});
5761

@@ -81,53 +85,45 @@ describe('listObject - Delimiter master', function testSuite() {
8185
{ name: 'notes/summer/44444.txt', value: null },
8286
];
8387

84-
it('put objects inside bucket', done => {
85-
async.eachSeries(objects, (obj, next) => {
86-
async.waterfall([
87-
next => {
88-
if (!versioning && obj.isNull !== true) {
89-
const params = {
90-
Bucket: bucket,
91-
VersioningConfiguration: {
92-
Status: 'Enabled',
93-
},
94-
};
95-
versioning = true;
96-
return s3.putBucketVersioning(params, err =>
97-
next(err));
98-
} else if (versioning && obj.isNull === true) {
99-
const params = {
100-
Bucket: bucket,
101-
VersioningConfiguration: {
102-
Status: 'Suspended',
103-
},
104-
};
105-
versioning = false;
106-
return s3.putBucketVersioning(params, err =>
107-
next(err));
108-
}
109-
return next();
110-
},
111-
next => {
112-
if (obj.value === null) {
113-
return s3.deleteObject({
114-
Bucket: bucket,
115-
Key: obj.name,
116-
}, function test(err) {
117-
const headers = this.httpResponse.headers;
118-
assert.strictEqual(
119-
headers['x-amz-delete-marker'], 'true');
120-
return next(err);
121-
});
122-
}
123-
return s3.putObject({
88+
it('put objects inside bucket', async () => {
89+
for (const obj of objects) {
90+
// Handle versioning state changes
91+
if (!versioning && obj.isNull !== true) {
92+
const params = {
93+
Bucket: bucket,
94+
VersioningConfiguration: {
95+
Status: 'Enabled',
96+
},
97+
};
98+
versioning = true;
99+
await s3.send(new PutBucketVersioningCommand(params));
100+
} else if (versioning && obj.isNull === true) {
101+
const params = {
102+
Bucket: bucket,
103+
VersioningConfiguration: {
104+
Status: 'Suspended',
105+
},
106+
};
107+
versioning = false;
108+
await s3.send(new PutBucketVersioningCommand(params));
109+
}
110+
111+
// Handle object operations
112+
if (obj.value === null) {
113+
// For delete operations, we need to check the response headers
114+
const result = await s3.send(new DeleteObjectCommand({
124115
Bucket: bucket,
125116
Key: obj.name,
126-
Body: obj.value,
127-
}, err => next(err));
128-
},
129-
], err => next(err));
130-
}, err => done(err));
117+
}));
118+
assert.strictEqual(result.DeleteMarker, true, 'Expected delete marker to be true');
119+
} else {
120+
await s3.send(new PutObjectCommand({
121+
Bucket: bucket,
122+
Key: obj.name,
123+
Body: obj.value,
124+
}));
125+
}
126+
}
131127
});
132128

133129
[
@@ -334,32 +330,27 @@ describe('listObject - Delimiter master', function testSuite() {
334330
},
335331
].forEach(test => {
336332
const runTest = test.skipe2e ? itSkipIfE2E : it;
337-
runTest(test.name, done => {
333+
runTest(test.name, async () => {
338334
const expectedResult = test.expectedResult;
339-
s3.listObjects(Object.assign({ Bucket: bucket }, test.params),
340-
(err, res) => {
341-
if (err) {
342-
return done(err);
343-
}
344-
res.Contents.forEach(result => {
345-
if (!expectedResult
346-
.find(key => key === result.Key)) {
347-
throw new Error('listing fail, ' +
348-
`unexpected key ${result.Key}`);
349-
}
350-
_assertResultElements(result);
351-
});
352-
res.CommonPrefixes.forEach(cp => {
353-
if (!test.commonPrefix
354-
.find(item => item === cp.Prefix)) {
355-
throw new Error('listing fail, ' +
356-
`unexpected prefix ${cp.Prefix}`);
357-
}
358-
});
359-
assert.strictEqual(res.IsTruncated, test.isTruncated);
360-
assert.strictEqual(res.NextMarker, test.nextMarker);
361-
return done();
362-
});
335+
const res = await s3.send(new ListObjectsCommand(Object.assign({ Bucket: bucket }, test.params)));
336+
337+
res.Contents?.forEach(result => {
338+
if (!expectedResult
339+
.find(key => key === result.Key)) {
340+
throw new Error('listing fail, ' +
341+
`unexpected key ${result.Key}`);
342+
}
343+
_assertResultElements(result);
344+
});
345+
res.CommonPrefixes?.forEach(cp => {
346+
if (!test.commonPrefix
347+
.find(item => item === cp.Prefix)) {
348+
throw new Error('listing fail, ' +
349+
`unexpected prefix ${cp.Prefix}`);
350+
}
351+
});
352+
assert.strictEqual(res.IsTruncated, test.isTruncated);
353+
assert.strictEqual(res.NextMarker, test.nextMarker);
363354
});
364355
});
365356
});

0 commit comments

Comments
 (0)