Skip to content

Commit

Permalink
CLDSRV-554 fix route metadata API tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolas2bert committed Jul 23, 2024
1 parent 9b77587 commit 9fe2d31
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 15 deletions.
57 changes: 44 additions & 13 deletions tests/functional/raw-node/test/routes/routeMetadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ const http = require('http');
const { makeRequest } = require('../../utils/makeRequest');
const MetadataMock = require('../../utils/MetadataMock');
const { getCredentials } = require('../../../aws-node-sdk/test/support/credentials');
const BucketUtility = require('../../../aws-node-sdk/lib/utility/bucket-util');
const metadataMock = new MetadataMock();

const ipAddress = process.env.IP ? process.env.IP : 'localhost';
const metadataMock = new MetadataMock();

const { accessKeyId, secretAccessKey } = getCredentials();

Expand All @@ -32,15 +33,39 @@ function makeMetadataRequest(params, callback) {
makeRequest(options, callback);
}

describe('metadata routes with metadata mock backend', () => {
let httpServer;
describe('metadata routes with metadata', () => {
const bucketUtil = new BucketUtility(
'default', { signatureVersion: 'v4' });
const s3 = bucketUtil.s3;

before(done => {
httpServer = http.createServer(
(req, res) => metadataMock.onRequest(req, res)).listen(9000, done);
});
const bucket1 = 'bucket1';
const bucket2 = 'bucket2';
const keyName = 'testobject1';

after(() => httpServer.close());
// E2E tests use S3C metadata, whereas functional tests use mocked metadata.
if (process.env.S3_END_TO_END) {
before(done => s3.createBucket({ Bucket: bucket1 }).promise()
.then(() => s3.putObject({ Bucket: bucket1, Key: keyName, Body: '' }).promise())
.then(() => s3.createBucket({ Bucket: bucket2 }).promise())
.then(() => done(), err => done(err))
);

after(done => bucketUtil.empty(bucket1)
.then(() => s3.deleteBucket({ Bucket: bucket1 }).promise())
.then(() => bucketUtil.empty(bucket2))
.then(() => s3.deleteBucket({ Bucket: bucket2 }).promise())
.then(() => done(), err => done(err))
);
} else {
let httpServer;

before(done => {
httpServer = http.createServer(
(req, res) => metadataMock.onRequest(req, res)).listen(9000, done);
});

after(() => httpServer.close());
}

it('should retrieve list of buckets', done => {
makeMetadataRequest({
Expand All @@ -51,7 +76,13 @@ describe('metadata routes with metadata mock backend', () => {
assert.ifError(err);
assert.strictEqual(res.statusCode, 200);
assert(res.body);
assert.strictEqual(res.body, '["bucket1","bucket2"]');
const expectedArray = [bucket1, 'users..bucket', bucket2];
const responseArray = JSON.parse(res.body);

expectedArray.sort();
responseArray.sort();

assert.deepStrictEqual(responseArray, expectedArray);
return done();
});
});
Expand All @@ -60,7 +91,7 @@ describe('metadata routes with metadata mock backend', () => {
makeMetadataRequest({
method: 'GET',
authCredentials: metadataAuthCredentials,
path: '/_/metadata/default/bucket/bucket1',
path: `/_/metadata/default/bucket/${bucket1}`,
queryObj: { listingType: 'Delimiter' },
}, (err, res) => {
assert.ifError(err);
Expand All @@ -75,7 +106,7 @@ describe('metadata routes with metadata mock backend', () => {
makeMetadataRequest({
method: 'GET',
authCredentials: metadataAuthCredentials,
path: '/_/metadata/default/attributes/bucket1',
path: `/_/metadata/default/attributes/${bucket1}`,
}, (err, res) => {
assert.ifError(err);
assert.strictEqual(res.statusCode, 200);
Expand All @@ -88,13 +119,13 @@ describe('metadata routes with metadata mock backend', () => {
makeMetadataRequest({
method: 'GET',
authCredentials: metadataAuthCredentials,
path: '/_/metadata/default/bucket/bucket1/testobject1',
path: `/_/metadata/default/bucket/${bucket1}/${keyName}`,
}, (err, res) => {
assert.ifError(err);
assert(res.body);
assert.strictEqual(res.statusCode, 200);
const body = JSON.parse(res.body);
assert.strictEqual(body.metadata, 'dogsAreGood');
assert(body['owner-id']);
return done();
});
});
Expand Down
5 changes: 3 additions & 2 deletions tests/functional/raw-node/utils/MetadataMock.js
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ class MetadataMock {
}));
}
if (/\/_\/raft_sessions\/[1-8]\/bucket/.test(req.url)) {
const value = ['bucket1', 'bucket2'];
const value = ['bucket1', 'bucket2', 'users..bucket'];
res.writeHead(200, { 'content-type': 'application/json' });
return res.end(JSON.stringify(value));
} else if (/\/default\/attributes\/[a-z0-9]/.test(req.url)) {
Expand All @@ -228,7 +228,8 @@ class MetadataMock {
return res.end(JSON.stringify(objectList));
} else if (/\/default\/bucket\/.*\/.*?/.test(req.url)) {
return res.end(JSON.stringify({
metadata: 'dogsAreGood',
'owner-id': '123',
'metadata': 'dogsAreGood',
}));
} else if (mockLogURLRegex.test(req.url)) {
return res.end(JSON.stringify(mockLogs));
Expand Down

0 comments on commit 9fe2d31

Please sign in to comment.