Skip to content

Commit 532fd7c

Browse files
committed
UTAPI tests sdk migration
Issue: CLDSRV-724
1 parent fd45184 commit 532fd7c

File tree

1 file changed

+114
-124
lines changed

1 file changed

+114
-124
lines changed

tests/utapi/awsNodeSdk.js

Lines changed: 114 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
const async = require('async');
22
const assert = require('assert');
3-
const { S3 } = require('aws-sdk');
3+
const {
4+
S3Client,
5+
CreateBucketCommand,
6+
DeleteBucketCommand,
7+
PutObjectCommand,
8+
DeleteObjectCommand,
9+
DeleteObjectsCommand,
10+
CopyObjectCommand,
11+
PutBucketVersioningCommand,
12+
CreateMultipartUploadCommand,
13+
UploadPartCommand,
14+
CompleteMultipartUploadCommand,
15+
ListObjectVersionsCommand,
16+
GetObjectCommand,
17+
} = require('@aws-sdk/client-s3');
418

519
const MockUtapi = require('../utilities/mock/Utapi');
620
const getConfig = require('../functional/aws-node-sdk/test/support/config');
@@ -10,150 +24,132 @@ let s3Client = null;
1024
function wait(timeoutMs, cb) {
1125
setTimeout(cb, timeoutMs);
1226
}
27+
1328
function createBucket(bucket, cb) {
14-
return s3Client.createBucket({
15-
Bucket: bucket,
16-
}, (err, data) => {
17-
assert.ifError(err);
18-
return cb(err, data);
19-
});
29+
s3Client.send(new CreateBucketCommand({ Bucket: bucket }))
30+
.then(data => cb(null, data))
31+
.catch(cb);
2032
}
33+
2134
function deleteBucket(bucket, cb) {
22-
return s3Client.deleteBucket({
23-
Bucket: bucket,
24-
}, err => {
25-
assert.ifError(err);
26-
return cb(err);
27-
});
35+
s3Client.send(new DeleteBucketCommand({ Bucket: bucket }))
36+
.then(() => cb(null))
37+
.catch(cb);
2838
}
39+
2940
function putObject(bucket, key, size, cb) {
30-
return s3Client.putObject({
41+
const body = Buffer.alloc(size);
42+
const params = {
3143
Bucket: bucket,
3244
Key: key,
33-
Body: Buffer.alloc(size),
34-
}, (err, data) => {
35-
assert.ifError(err);
36-
return cb(err, data);
37-
});
45+
Body: body,
46+
};
47+
s3Client.send(new PutObjectCommand(params))
48+
.then(data => cb(null, data))
49+
.catch(cb);
3850
}
51+
3952
function deleteObject(bucket, key, cb) {
40-
return s3Client.deleteObject({
41-
Bucket: bucket,
42-
Key: key,
43-
}, err => {
44-
assert.ifError(err);
45-
return cb(err);
46-
});
53+
s3Client.send(new DeleteObjectCommand({ Bucket: bucket, Key: key }))
54+
.then(() => cb(null))
55+
.catch(cb);
4756
}
57+
4858
function deleteObjects(bucket, keys, cb) {
49-
const objects = keys.map(key => {
50-
const keyObj = {
51-
Key: key,
52-
};
53-
return keyObj;
54-
});
59+
const objects = keys.map(key => ({ Key: key }));
60+
const deleteRequest = { Objects: objects, Quiet: true };
5561
const params = {
5662
Bucket: bucket,
57-
Delete: {
58-
Objects: objects,
59-
Quiet: true,
60-
},
63+
Delete: deleteRequest,
6164
};
62-
return s3Client.deleteObjects(params, err => {
63-
assert.ifError(err);
64-
return cb(err);
65-
});
65+
s3Client.send(new DeleteObjectsCommand(params))
66+
.then(() => cb(null))
67+
.catch(cb);
6668
}
69+
6770
function copyObject(bucket, key, cb) {
68-
return s3Client.copyObject({
69-
Bucket: bucket,
70-
CopySource: `/${bucket}/${key}`,
71-
Key: `${key}-copy`,
72-
}, err => {
73-
assert.ifError(err);
74-
return cb(err);
75-
});
71+
const params = { Bucket: bucket, CopySource: `${bucket}/${key}`, Key: `${key}-copy` };
72+
s3Client.send(new CopyObjectCommand(params))
73+
.then(() => cb(null))
74+
.catch(cb);
7675
}
76+
7777
function enableVersioning(bucket, enable, cb) {
78-
const versioningStatus = {
79-
Status: enable ? 'Enabled' : 'Disabled',
80-
};
81-
return s3Client.putBucketVersioning({
82-
Bucket: bucket,
83-
VersioningConfiguration: versioningStatus,
84-
}, err => {
85-
assert.ifError(err);
86-
return cb(err);
87-
});
78+
const versioningStatus = { Status: enable ? 'Enabled' : 'Disabled' };
79+
const params = { Bucket: bucket, VersioningConfiguration: versioningStatus };
80+
s3Client.send(new PutBucketVersioningCommand(params))
81+
.then(() => cb(null))
82+
.catch(cb);
8883
}
89-
function deleteVersionList(versionList, bucket, callback) {
84+
85+
async function deleteVersionList(versionList, bucket) {
9086
if (versionList === undefined || versionList.length === 0) {
91-
return callback();
87+
return;
9288
}
93-
const params = { Bucket: bucket, Delete: { Objects: [] } };
89+
const deleteRequest = { Objects: [] };
9490
versionList.forEach(version => {
95-
params.Delete.Objects.push({
96-
Key: version.Key, VersionId: version.VersionId,
97-
});
91+
deleteRequest.Objects.push({ Key: version.Key, VersionId: version.VersionId });
9892
});
99-
100-
return s3Client.deleteObjects(params, callback);
93+
const params = {
94+
Bucket: bucket,
95+
Delete: deleteRequest,
96+
};
97+
await s3Client.send(new DeleteObjectsCommand(params));
10198
}
102-
function removeAllVersions(params, callback) {
103-
const bucket = params.Bucket;
104-
async.waterfall([
105-
cb => s3Client.listObjectVersions(params, cb),
106-
(data, cb) => deleteVersionList(data.DeleteMarkers, bucket,
107-
err => cb(err, data)),
108-
(data, cb) => deleteVersionList(data.Versions, bucket,
109-
err => cb(err, data)),
110-
(data, cb) => {
111-
if (data.IsTruncated) {
112-
const params = {
113-
Bucket: bucket,
114-
KeyMarker: data.NextKeyMarker,
115-
VersionIdMarker: data.NextVersionIdMarker,
116-
};
117-
return removeAllVersions(params, cb);
118-
}
119-
return cb();
120-
},
121-
], callback);
99+
100+
async function removeAllVersions(params, callback) {
101+
try {
102+
const bucket = params.Bucket;
103+
const data = await s3Client.send(new ListObjectVersionsCommand(params));
104+
105+
if (data.DeleteMarkers && data.DeleteMarkers.length > 0) {
106+
await deleteVersionList(data.DeleteMarkers, bucket);
107+
}
108+
109+
if (data.Versions && data.Versions.length > 0) {
110+
await deleteVersionList(data.Versions, bucket);
111+
}
112+
113+
if (data.IsTruncated) {
114+
const nextParams = {
115+
Bucket: bucket,
116+
KeyMarker: data.NextKeyMarker,
117+
VersionIdMarker: data.NextVersionIdMarker
118+
};
119+
await removeAllVersions(nextParams);
120+
}
121+
122+
callback();
123+
} catch (error) {
124+
callback(error);
125+
}
122126
}
127+
123128
function objectMPU(bucket, key, parts, partSize, callback) {
124129
let ETags = [];
125130
let uploadId = null;
126131
const partNumbers = Array.from(Array(parts).keys());
127-
const initiateMPUParams = {
128-
Bucket: bucket,
129-
Key: key,
130-
};
131-
return async.waterfall([
132-
next => s3Client.createMultipartUpload(initiateMPUParams,
133-
(err, data) => {
134-
if (err) {
135-
return next(err);
136-
}
132+
const initiateMPUParams = { Bucket: bucket, Key: key };
133+
async.waterfall([
134+
next => s3Client.send(new CreateMultipartUploadCommand(initiateMPUParams))
135+
.then(data => {
137136
uploadId = data.UploadId;
138137
return next();
139-
}),
138+
})
139+
.catch(next),
140140
next =>
141141
async.mapLimit(partNumbers, 1, (partNumber, callback) => {
142+
const body = Buffer.alloc(partSize);
142143
const uploadPartParams = {
143144
Bucket: bucket,
144145
Key: key,
145146
PartNumber: partNumber + 1,
146147
UploadId: uploadId,
147-
Body: Buffer.alloc(partSize),
148+
Body: body,
148149
};
149-
150-
return s3Client.uploadPart(uploadPartParams,
151-
(err, data) => {
152-
if (err) {
153-
return callback(err);
154-
}
155-
return callback(null, data.ETag);
156-
});
150+
s3Client.send(new UploadPartCommand(uploadPartParams))
151+
.then(data => callback(null, data.ETag))
152+
.catch(callback);
157153
}, (err, results) => {
158154
if (err) {
159155
return next(err);
@@ -162,33 +158,28 @@ function objectMPU(bucket, key, parts, partSize, callback) {
162158
return next();
163159
}),
164160
next => {
161+
const completeRequest = { Parts: partNumbers.map(n => ({ ETag: ETags[n], PartNumber: n + 1 })) };
165162
const params = {
166163
Bucket: bucket,
167164
Key: key,
168-
MultipartUpload: {
169-
Parts: partNumbers.map(n => ({
170-
ETag: ETags[n],
171-
PartNumber: n + 1,
172-
})),
173-
},
165+
MultipartUpload: completeRequest,
174166
UploadId: uploadId,
175167
};
176-
return s3Client.completeMultipartUpload(params, next);
168+
s3Client.send(new CompleteMultipartUploadCommand(params))
169+
.then(data => next(null, data))
170+
.catch(next);
177171
},
178172
], callback);
179173
}
174+
180175
function removeVersions(buckets, cb) {
181-
return async.each(buckets,
182-
(bucket, done) => removeAllVersions({ Bucket: bucket }, done), cb);
176+
async.each(buckets, (bucket, done) => removeAllVersions({ Bucket: bucket }, done), cb);
183177
}
178+
184179
function getObject(bucket, key, cb) {
185-
return s3Client.getObject({
186-
Bucket: bucket,
187-
Key: key,
188-
}, (err, data) => {
189-
assert.ifError(err);
190-
return cb(err, data);
191-
});
180+
s3Client.send(new GetObjectCommand({ Bucket: bucket, Key: key }))
181+
.then(data => cb(null, data))
182+
.catch(cb);
192183
}
193184

194185
describe('utapi v2 metrics incoming and outgoing bytes', function t() {
@@ -204,8 +195,7 @@ describe('utapi v2 metrics incoming and outgoing bytes', function t() {
204195
}
205196

206197
before(() => {
207-
const config = getConfig('default', { signatureVersion: 'v4' });
208-
s3Client = new S3(config);
198+
s3Client = new S3Client(getConfig('default'));
209199
utapi.start();
210200
});
211201
afterEach(() => {

0 commit comments

Comments
 (0)