Compare commits
1 Commits
developmen
...
improvemen
Author | SHA1 | Date |
---|---|---|
Nicolas Humbert | 6ec8cf7ad2 |
|
@ -80,7 +80,7 @@
|
||||||
"ft_awssdk_external_backends": "cd tests/functional/aws-node-sdk && mocha --reporter mocha-multi-reporters --reporter-options configFile=$INIT_CWD/tests/reporter-config.json test/multipleBackend",
|
"ft_awssdk_external_backends": "cd tests/functional/aws-node-sdk && mocha --reporter mocha-multi-reporters --reporter-options configFile=$INIT_CWD/tests/reporter-config.json test/multipleBackend",
|
||||||
"ft_mixed_bucket_format_version": "cd tests/functional/metadata && mocha --reporter mocha-multi-reporters --reporter-options configFile=$INIT_CWD/tests/reporter-config.json MixedVersionFormat.js",
|
"ft_mixed_bucket_format_version": "cd tests/functional/metadata && mocha --reporter mocha-multi-reporters --reporter-options configFile=$INIT_CWD/tests/reporter-config.json MixedVersionFormat.js",
|
||||||
"ft_management": "cd tests/functional/report && yarn test",
|
"ft_management": "cd tests/functional/report && yarn test",
|
||||||
"ft_backbeat": "cd tests/functional/backbeat && mocha --reporter mocha-multi-reporters --reporter-options configFile=$INIT_CWD/tests/reporter-config.json -t 40000 *.js",
|
"ft_backbeat": "cd tests/functional/backbeat && mocha --reporter mocha-multi-reporters --reporter-options configFile=$INIT_CWD/tests/reporter-config.json -t 40000 listNullVersion.js",
|
||||||
"ft_node": "cd tests/functional/raw-node && yarn test",
|
"ft_node": "cd tests/functional/raw-node && yarn test",
|
||||||
"ft_node_routes": "cd tests/functional/raw-node && npm run test-routes",
|
"ft_node_routes": "cd tests/functional/raw-node && npm run test-routes",
|
||||||
"ft_gcp": "cd tests/functional/raw-node && yarn run test-gcp",
|
"ft_gcp": "cd tests/functional/raw-node && yarn run test-gcp",
|
||||||
|
|
|
@ -11,10 +11,408 @@ const credentials = {
|
||||||
secretKey: 'verySecretKey1',
|
secretKey: 'verySecretKey1',
|
||||||
};
|
};
|
||||||
|
|
||||||
runIfMongoV1('listLifecycle if null version', () => {
|
// runIfMongoV1('listLifecycle if null version', () => {
|
||||||
|
// let bucketUtil;
|
||||||
|
// let s3;
|
||||||
|
// let versionForKey2;
|
||||||
|
|
||||||
|
// before(done => {
|
||||||
|
// bucketUtil = new BucketUtility('account1', { signatureVersion: 'v4' });
|
||||||
|
// s3 = bucketUtil.s3;
|
||||||
|
|
||||||
|
// return async.series([
|
||||||
|
// next => s3.createBucket({ Bucket: testBucket }, next),
|
||||||
|
// next => s3.putObject({ Bucket: testBucket, Key: 'key1', Body: '123' }, next),
|
||||||
|
// next => s3.putObject({ Bucket: testBucket, Key: 'key2', Body: '123' }, next),
|
||||||
|
// next => s3.putBucketVersioning({
|
||||||
|
// Bucket: testBucket,
|
||||||
|
// VersioningConfiguration: { Status: 'Enabled' },
|
||||||
|
// }, next),
|
||||||
|
// next => s3.putObject({ Bucket: testBucket, Key: 'key1', Body: '123' }, (err, data) => {
|
||||||
|
// if (err) {
|
||||||
|
// return next(err);
|
||||||
|
// }
|
||||||
|
// // delete version to create a null current version for key1.
|
||||||
|
// return s3.deleteObject({ Bucket: testBucket, Key: 'key1', VersionId: data.VersionId }, next);
|
||||||
|
// }),
|
||||||
|
// next => s3.putObject({ Bucket: testBucket, Key: 'key2', Body: '123' }, (err, data) => {
|
||||||
|
// if (err) {
|
||||||
|
// return next(err);
|
||||||
|
// }
|
||||||
|
// versionForKey2 = data.VersionId;
|
||||||
|
// return next();
|
||||||
|
// }),
|
||||||
|
// ], done);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// after(done => async.series([
|
||||||
|
// next => removeAllVersions({ Bucket: testBucket }, next),
|
||||||
|
// next => s3.deleteBucket({ Bucket: testBucket }, next),
|
||||||
|
// ], done));
|
||||||
|
|
||||||
|
// it('should return the null noncurrent versions', done => {
|
||||||
|
// makeBackbeatRequest({
|
||||||
|
// method: 'GET',
|
||||||
|
// bucket: testBucket,
|
||||||
|
// queryObj: { 'list-type': 'noncurrent' },
|
||||||
|
// authCredentials: credentials,
|
||||||
|
// }, (err, response) => {
|
||||||
|
// assert.ifError(err);
|
||||||
|
// assert.strictEqual(response.statusCode, 200);
|
||||||
|
// const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
// assert.strictEqual(data.IsTruncated, false);
|
||||||
|
// assert(!data.NextKeyMarker);
|
||||||
|
// assert.strictEqual(data.MaxKeys, 1000);
|
||||||
|
|
||||||
|
// const contents = data.Contents;
|
||||||
|
// assert.strictEqual(contents.length, 1);
|
||||||
|
// assert.strictEqual(contents[0].Key, 'key2');
|
||||||
|
// assert.strictEqual(contents[0].VersionId, 'null');
|
||||||
|
// return done();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
||||||
|
// it('should return the null current versions', done => {
|
||||||
|
// makeBackbeatRequest({
|
||||||
|
// method: 'GET',
|
||||||
|
// bucket: testBucket,
|
||||||
|
// queryObj: { 'list-type': 'current' },
|
||||||
|
// authCredentials: credentials,
|
||||||
|
// }, (err, response) => {
|
||||||
|
// assert.ifError(err);
|
||||||
|
// assert.strictEqual(response.statusCode, 200);
|
||||||
|
// const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
// assert.strictEqual(data.IsTruncated, false);
|
||||||
|
// assert(!data.NextKeyMarker);
|
||||||
|
// assert.strictEqual(data.MaxKeys, 1000);
|
||||||
|
|
||||||
|
// const contents = data.Contents;
|
||||||
|
// assert.strictEqual(contents.length, 2);
|
||||||
|
|
||||||
|
// const firstKey = contents[0];
|
||||||
|
// assert.strictEqual(firstKey.Key, 'key1');
|
||||||
|
// assert.strictEqual(firstKey.VersionId, 'null');
|
||||||
|
|
||||||
|
// const secondKey = contents[1];
|
||||||
|
// assert.strictEqual(secondKey.Key, 'key2');
|
||||||
|
// assert.strictEqual(secondKey.VersionId, versionForKey2);
|
||||||
|
// return done();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
||||||
|
// runIfMongoV1('listLifecycle with null current version after versioning suspended', () => {
|
||||||
|
// let bucketUtil;
|
||||||
|
// let s3;
|
||||||
|
// let expectedVersionId;
|
||||||
|
// const nullObjectBucket = 'bucket-for-list-lifecycle-current-null-tests';
|
||||||
|
// const keyName = 'key0';
|
||||||
|
|
||||||
|
// before(done => {
|
||||||
|
// bucketUtil = new BucketUtility('account1', { signatureVersion: 'v4' });
|
||||||
|
// s3 = bucketUtil.s3;
|
||||||
|
|
||||||
|
// return async.series([
|
||||||
|
// next => s3.createBucket({ Bucket: nullObjectBucket }, next),
|
||||||
|
// next => s3.putBucketVersioning({
|
||||||
|
// Bucket: nullObjectBucket,
|
||||||
|
// VersioningConfiguration: { Status: 'Enabled' },
|
||||||
|
// }, next),
|
||||||
|
// next => s3.putObject({ Bucket: nullObjectBucket, Key: keyName }, (err, data) => {
|
||||||
|
// if (err) {
|
||||||
|
// return next(err);
|
||||||
|
// }
|
||||||
|
// expectedVersionId = data.VersionId;
|
||||||
|
// return next();
|
||||||
|
// }),
|
||||||
|
// next => s3.putBucketVersioning({
|
||||||
|
// Bucket: nullObjectBucket,
|
||||||
|
// VersioningConfiguration: { Status: 'Suspended' },
|
||||||
|
// }, next),
|
||||||
|
// next => s3.putObject({ Bucket: nullObjectBucket, Key: keyName }, next),
|
||||||
|
// ], done);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// after(done => async.series([
|
||||||
|
// next => removeAllVersions({ Bucket: nullObjectBucket }, next),
|
||||||
|
// next => s3.deleteBucket({ Bucket: nullObjectBucket }, next),
|
||||||
|
// ], done));
|
||||||
|
|
||||||
|
// it('should return list of current versions when bucket has a null current version', done => {
|
||||||
|
// makeBackbeatRequest({
|
||||||
|
// method: 'GET',
|
||||||
|
// bucket: nullObjectBucket,
|
||||||
|
// queryObj: { 'list-type': 'current' },
|
||||||
|
// authCredentials: credentials,
|
||||||
|
// }, (err, response) => {
|
||||||
|
// assert.ifError(err);
|
||||||
|
// assert.strictEqual(response.statusCode, 200);
|
||||||
|
// const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
// assert.strictEqual(data.IsTruncated, false);
|
||||||
|
// assert(!data.NextKeyMarker);
|
||||||
|
// assert.strictEqual(data.MaxKeys, 1000);
|
||||||
|
// assert.strictEqual(data.Contents.length, 1);
|
||||||
|
// const key = data.Contents[0];
|
||||||
|
// assert.strictEqual(key.Key, keyName);
|
||||||
|
// assert.strictEqual(key.VersionId, 'null');
|
||||||
|
// return done();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
||||||
|
// it('should return list of non-current versions when bucket has a null current version', done => {
|
||||||
|
// makeBackbeatRequest({
|
||||||
|
// method: 'GET',
|
||||||
|
// bucket: nullObjectBucket,
|
||||||
|
// queryObj: { 'list-type': 'noncurrent' },
|
||||||
|
// authCredentials: credentials,
|
||||||
|
// }, (err, response) => {
|
||||||
|
// assert.ifError(err);
|
||||||
|
// assert.strictEqual(response.statusCode, 200);
|
||||||
|
// const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
// assert.strictEqual(data.IsTruncated, false);
|
||||||
|
// assert(!data.NextKeyMarker);
|
||||||
|
// assert.strictEqual(data.MaxKeys, 1000);
|
||||||
|
// assert.strictEqual(data.Contents.length, 1);
|
||||||
|
// const key = data.Contents[0];
|
||||||
|
// assert.strictEqual(key.Key, keyName);
|
||||||
|
// assert.strictEqual(key.VersionId, expectedVersionId);
|
||||||
|
// return done();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
||||||
|
// runIfMongoV1('listLifecycle with null current versions and version id marker', () => {
|
||||||
|
// let bucketUtil;
|
||||||
|
// let s3;
|
||||||
|
// let expectedKey0VersionId;
|
||||||
|
// let expectedKey1VersionId;
|
||||||
|
// const bucketName = 'bucket-for-list-lifecycle-null-with-marker-tests';
|
||||||
|
// const keyName0 = 'key0';
|
||||||
|
// const keyName1 = 'key1';
|
||||||
|
|
||||||
|
// before(done => {
|
||||||
|
// bucketUtil = new BucketUtility('account1', { signatureVersion: 'v4' });
|
||||||
|
// s3 = bucketUtil.s3;
|
||||||
|
|
||||||
|
// return async.series([
|
||||||
|
// next => s3.createBucket({ Bucket: bucketName }, next),
|
||||||
|
// next => s3.putBucketVersioning({
|
||||||
|
// Bucket: bucketName,
|
||||||
|
// VersioningConfiguration: { Status: 'Enabled' },
|
||||||
|
// }, next),
|
||||||
|
// next => s3.putObject({ Bucket: bucketName, Key: keyName0 }, (err, data) => {
|
||||||
|
// if (err) {
|
||||||
|
// return next(err);
|
||||||
|
// }
|
||||||
|
// expectedKey0VersionId = data.VersionId;
|
||||||
|
// return next();
|
||||||
|
// }),
|
||||||
|
// next => s3.putObject({ Bucket: bucketName, Key: keyName1 }, (err, data) => {
|
||||||
|
// if (err) {
|
||||||
|
// return next(err);
|
||||||
|
// }
|
||||||
|
// expectedKey1VersionId = data.VersionId;
|
||||||
|
// return next();
|
||||||
|
// }),
|
||||||
|
// next => s3.putBucketVersioning({
|
||||||
|
// Bucket: bucketName,
|
||||||
|
// VersioningConfiguration: { Status: 'Suspended' },
|
||||||
|
// }, next),
|
||||||
|
// next => s3.putObject({ Bucket: bucketName, Key: keyName0 }, next),
|
||||||
|
// next => s3.putObject({ Bucket: bucketName, Key: keyName1 }, next),
|
||||||
|
// ], done);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// after(done => async.series([
|
||||||
|
// next => removeAllVersions({ Bucket: bucketName }, next),
|
||||||
|
// next => s3.deleteBucket({ Bucket: bucketName }, next),
|
||||||
|
// ], done));
|
||||||
|
|
||||||
|
// it('should return the truncated list of noncurrent version - part 1', done => {
|
||||||
|
// makeBackbeatRequest({
|
||||||
|
// method: 'GET',
|
||||||
|
// bucket: bucketName,
|
||||||
|
// queryObj: { 'list-type': 'noncurrent', 'max-keys': '1' },
|
||||||
|
// authCredentials: credentials,
|
||||||
|
// }, (err, response) => {
|
||||||
|
// assert.ifError(err);
|
||||||
|
// assert.strictEqual(response.statusCode, 200);
|
||||||
|
// const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
// assert.strictEqual(data.IsTruncated, true);
|
||||||
|
// assert.strictEqual(data.NextKeyMarker, keyName0);
|
||||||
|
// assert.strictEqual(data.NextVersionIdMarker, expectedKey0VersionId);
|
||||||
|
// assert.strictEqual(data.MaxKeys, 1);
|
||||||
|
// assert.strictEqual(data.Contents.length, 1);
|
||||||
|
// const key = data.Contents[0];
|
||||||
|
// assert.strictEqual(key.Key, keyName0);
|
||||||
|
// assert.strictEqual(key.VersionId, expectedKey0VersionId);
|
||||||
|
// return done();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
||||||
|
// it('should return the truncated list of noncurrent version - part 2', done => {
|
||||||
|
// makeBackbeatRequest({
|
||||||
|
// method: 'GET',
|
||||||
|
// bucket: bucketName,
|
||||||
|
// queryObj: {
|
||||||
|
// 'list-type': 'noncurrent',
|
||||||
|
// 'max-keys': '1',
|
||||||
|
// 'key-marker': keyName0,
|
||||||
|
// 'version-id-marker': expectedKey0VersionId,
|
||||||
|
// },
|
||||||
|
// authCredentials: credentials,
|
||||||
|
// }, (err, response) => {
|
||||||
|
// assert.ifError(err);
|
||||||
|
// assert.strictEqual(response.statusCode, 200);
|
||||||
|
// const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
// assert.strictEqual(data.IsTruncated, false);
|
||||||
|
// assert(!data.NextKeyMarker);
|
||||||
|
// assert(!data.NextVersionIdMarker);
|
||||||
|
// assert.strictEqual(data.MaxKeys, 1);
|
||||||
|
// assert.strictEqual(data.Contents.length, 1);
|
||||||
|
// const key = data.Contents[0];
|
||||||
|
// assert.strictEqual(key.Key, keyName1);
|
||||||
|
// assert.strictEqual(key.VersionId, expectedKey1VersionId);
|
||||||
|
// return done();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
||||||
|
// runIfMongoV1('listLifecycle with null noncurrent versions and version id marker', () => {
|
||||||
|
// let bucketUtil;
|
||||||
|
// let s3;
|
||||||
|
// let versionForKey0;
|
||||||
|
// let versionForKey1;
|
||||||
|
|
||||||
|
// before(done => {
|
||||||
|
// bucketUtil = new BucketUtility('account1', { signatureVersion: 'v4' });
|
||||||
|
// s3 = bucketUtil.s3;
|
||||||
|
|
||||||
|
// return async.series([
|
||||||
|
// next => s3.createBucket({ Bucket: testBucket }, next),
|
||||||
|
// next => s3.putObject({ Bucket: testBucket, Key: 'key0', Body: '123' }, next),
|
||||||
|
// next => s3.putObject({ Bucket: testBucket, Key: 'key1', Body: '123' }, next),
|
||||||
|
// next => s3.putBucketVersioning({
|
||||||
|
// Bucket: testBucket,
|
||||||
|
// VersioningConfiguration: { Status: 'Enabled' },
|
||||||
|
// }, next),
|
||||||
|
// next => s3.putObject({ Bucket: testBucket, Key: 'key0', Body: '123' }, (err, data) => {
|
||||||
|
// if (err) {
|
||||||
|
// return next(err);
|
||||||
|
// }
|
||||||
|
// versionForKey0 = data.VersionId;
|
||||||
|
// return next();
|
||||||
|
// }),
|
||||||
|
// next => s3.putObject({ Bucket: testBucket, Key: 'key1', Body: '123' }, (err, data) => {
|
||||||
|
// if (err) {
|
||||||
|
// return next(err);
|
||||||
|
// }
|
||||||
|
// versionForKey1 = data.VersionId;
|
||||||
|
// return next();
|
||||||
|
// }),
|
||||||
|
// ], done);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// after(done => async.series([
|
||||||
|
// next => removeAllVersions({ Bucket: testBucket }, next),
|
||||||
|
// next => s3.deleteBucket({ Bucket: testBucket }, next),
|
||||||
|
// ], done));
|
||||||
|
|
||||||
|
// // it('list versions', done => {
|
||||||
|
// // s3.listObjectVersions({ Bucket: testBucket, MaxKeys: 2, KeyMarker: 'key0', VersionIdMarker: 'null' }, (err, data) => {
|
||||||
|
// // console.log('data!!!', data);
|
||||||
|
// // done();
|
||||||
|
// // });
|
||||||
|
// // });
|
||||||
|
|
||||||
|
// // it('should return the truncated list of null noncurrent versions', done => {
|
||||||
|
// // makeBackbeatRequest({
|
||||||
|
// // method: 'GET',
|
||||||
|
// // bucket: testBucket,
|
||||||
|
// // queryObj: {
|
||||||
|
// // 'list-type': 'noncurrent',
|
||||||
|
// // 'max-keys': '1',
|
||||||
|
// // 'key-marker': 'key0',
|
||||||
|
// // 'version-id-marker': 'ok',
|
||||||
|
// // },
|
||||||
|
// // authCredentials: credentials,
|
||||||
|
// // }, (err, response) => {
|
||||||
|
// // assert.ifError(err);
|
||||||
|
// // assert.strictEqual(response.statusCode, 200);
|
||||||
|
// // const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
// // console.log('data!!!', data);
|
||||||
|
// // done();
|
||||||
|
// // });
|
||||||
|
// // });
|
||||||
|
|
||||||
|
|
||||||
|
// it('should return the truncated list of null noncurrent versions', done => {
|
||||||
|
// makeBackbeatRequest({
|
||||||
|
// method: 'GET',
|
||||||
|
// bucket: testBucket,
|
||||||
|
// queryObj: { 'list-type': 'noncurrent', 'max-keys': '1' },
|
||||||
|
// authCredentials: credentials,
|
||||||
|
// }, (err, response) => {
|
||||||
|
// assert.ifError(err);
|
||||||
|
// assert.strictEqual(response.statusCode, 200);
|
||||||
|
// const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
// console.log('data!!!', data);
|
||||||
|
|
||||||
|
// assert.strictEqual(data.IsTruncated, true);
|
||||||
|
// assert.strictEqual(data.NextKeyMarker, 'key0');
|
||||||
|
// // assert.strictEqual(data.NextVersionIdMarker, versionForKey1);
|
||||||
|
// assert.strictEqual(data.MaxKeys, 1);
|
||||||
|
|
||||||
|
// const contents = data.Contents;
|
||||||
|
// assert.strictEqual(contents.length, 1);
|
||||||
|
// assert.strictEqual(contents[0].Key, 'key0');
|
||||||
|
// assert.strictEqual(contents[0].VersionId, 'null');
|
||||||
|
|
||||||
|
// const nextVersionIdMarker = data.NextVersionIdMarker;
|
||||||
|
// makeBackbeatRequest({
|
||||||
|
// method: 'GET',
|
||||||
|
// bucket: testBucket,
|
||||||
|
// queryObj: {
|
||||||
|
// 'list-type': 'noncurrent',
|
||||||
|
// 'max-keys': '1',
|
||||||
|
// 'key-marker': 'key0',
|
||||||
|
// 'version-id-marker': nextVersionIdMarker,
|
||||||
|
// },
|
||||||
|
// authCredentials: credentials,
|
||||||
|
// }, (err, response) => {
|
||||||
|
// assert.ifError(err);
|
||||||
|
// assert.strictEqual(response.statusCode, 200);
|
||||||
|
// const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
// assert.strictEqual(data.IsTruncated, false);
|
||||||
|
// assert(!data.NextKeyMarker);
|
||||||
|
// assert(!data.NextVersionIdMarker);
|
||||||
|
// assert.strictEqual(data.MaxKeys, 1);
|
||||||
|
|
||||||
|
// const contents = data.Contents;
|
||||||
|
// assert.strictEqual(contents.length, 1);
|
||||||
|
// assert.strictEqual(contents[0].Key, 'key1');
|
||||||
|
// assert.strictEqual(contents[0].VersionId, 'null');
|
||||||
|
// return done();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
describe.only('listLifecycle with null noncurrent', () => {
|
||||||
let bucketUtil;
|
let bucketUtil;
|
||||||
let s3;
|
let s3;
|
||||||
let versionForKey2;
|
let versionForKey01;
|
||||||
|
let versionForKey02;
|
||||||
|
|
||||||
before(done => {
|
before(done => {
|
||||||
bucketUtil = new BucketUtility('account1', { signatureVersion: 'v4' });
|
bucketUtil = new BucketUtility('account1', { signatureVersion: 'v4' });
|
||||||
|
@ -22,24 +420,23 @@ runIfMongoV1('listLifecycle if null version', () => {
|
||||||
|
|
||||||
return async.series([
|
return async.series([
|
||||||
next => s3.createBucket({ Bucket: testBucket }, next),
|
next => s3.createBucket({ Bucket: testBucket }, next),
|
||||||
next => s3.putObject({ Bucket: testBucket, Key: 'key1', Body: '123' }, next),
|
next => s3.putObject({ Bucket: testBucket, Key: 'key0', Body: '123' }, next),
|
||||||
next => s3.putObject({ Bucket: testBucket, Key: 'key2', Body: '123' }, next),
|
|
||||||
next => s3.putBucketVersioning({
|
next => s3.putBucketVersioning({
|
||||||
Bucket: testBucket,
|
Bucket: testBucket,
|
||||||
VersioningConfiguration: { Status: 'Enabled' },
|
VersioningConfiguration: { Status: 'Enabled' },
|
||||||
}, next),
|
}, next),
|
||||||
next => s3.putObject({ Bucket: testBucket, Key: 'key1', Body: '123' }, (err, data) => {
|
next => s3.putObject({ Bucket: testBucket, Key: 'key0', Body: '123' }, (err, data) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
// delete version to create a null current version for key1.
|
versionForKey01 = data.VersionId;
|
||||||
return s3.deleteObject({ Bucket: testBucket, Key: 'key1', VersionId: data.VersionId }, next);
|
return next();
|
||||||
}),
|
}),
|
||||||
next => s3.putObject({ Bucket: testBucket, Key: 'key2', Body: '123' }, (err, data) => {
|
next => s3.putObject({ Bucket: testBucket, Key: 'key0', Body: '123' }, (err, data) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
versionForKey2 = data.VersionId;
|
versionForKey02 = data.VersionId;
|
||||||
return next();
|
return next();
|
||||||
}),
|
}),
|
||||||
], done);
|
], done);
|
||||||
|
@ -50,136 +447,58 @@ runIfMongoV1('listLifecycle if null version', () => {
|
||||||
next => s3.deleteBucket({ Bucket: testBucket }, next),
|
next => s3.deleteBucket({ Bucket: testBucket }, next),
|
||||||
], done));
|
], done));
|
||||||
|
|
||||||
it('should return the null noncurrent versions', done => {
|
|
||||||
|
// it('should return the truncated list of null noncurrent versions', done => {
|
||||||
|
// makeBackbeatRequest({
|
||||||
|
// method: 'GET',
|
||||||
|
// bucket: testBucket,
|
||||||
|
// queryObj: { 'list-type': 'noncurrent', 'max-keys': '1' },
|
||||||
|
// authCredentials: credentials,
|
||||||
|
// }, (err, response) => {
|
||||||
|
// assert.ifError(err);
|
||||||
|
// assert.strictEqual(response.statusCode, 200);
|
||||||
|
// const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
// console.log('data!!!', data);
|
||||||
|
|
||||||
|
// assert.strictEqual(data.IsTruncated, true);
|
||||||
|
// assert.strictEqual(data.NextKeyMarker, 'key0');
|
||||||
|
// assert.strictEqual(data.NextVersionIdMarker, versionForKey01);
|
||||||
|
// assert.strictEqual(data.MaxKeys, 1);
|
||||||
|
|
||||||
|
// const contents = data.Contents;
|
||||||
|
// assert.strictEqual(contents.length, 1);
|
||||||
|
// assert.strictEqual(contents[0].Key, 'key0');
|
||||||
|
// assert.strictEqual(contents[0].VersionId, versionForKey01);
|
||||||
|
|
||||||
|
// return done();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
||||||
|
it('should return the truncated list of null noncurrent versions', done => {
|
||||||
makeBackbeatRequest({
|
makeBackbeatRequest({
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
bucket: testBucket,
|
bucket: testBucket,
|
||||||
queryObj: { 'list-type': 'noncurrent' },
|
queryObj: { 'list-type': 'noncurrent', 'max-keys': '1', 'key-marker': 'key0',
|
||||||
|
'version-id-marker': versionForKey01, },
|
||||||
authCredentials: credentials,
|
authCredentials: credentials,
|
||||||
}, (err, response) => {
|
}, (err, response) => {
|
||||||
assert.ifError(err);
|
assert.ifError(err);
|
||||||
assert.strictEqual(response.statusCode, 200);
|
assert.strictEqual(response.statusCode, 200);
|
||||||
const data = JSON.parse(response.body);
|
const data = JSON.parse(response.body);
|
||||||
|
|
||||||
|
console.log('data!!!', data);
|
||||||
|
|
||||||
assert.strictEqual(data.IsTruncated, false);
|
assert.strictEqual(data.IsTruncated, false);
|
||||||
assert(!data.NextKeyMarker);
|
assert(!data.NextKeyMarker);
|
||||||
assert.strictEqual(data.MaxKeys, 1000);
|
assert(!data.NextVersionIdMarker);
|
||||||
|
assert.strictEqual(data.MaxKeys, 1);
|
||||||
|
|
||||||
const contents = data.Contents;
|
const contents = data.Contents;
|
||||||
assert.strictEqual(contents.length, 1);
|
assert.strictEqual(contents.length, 1);
|
||||||
assert.strictEqual(contents[0].Key, 'key2');
|
assert.strictEqual(contents[0].Key, 'key0');
|
||||||
assert.strictEqual(contents[0].VersionId, 'null');
|
assert.strictEqual(contents[0].VersionId, 'null');
|
||||||
return done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return the null current versions', done => {
|
|
||||||
makeBackbeatRequest({
|
|
||||||
method: 'GET',
|
|
||||||
bucket: testBucket,
|
|
||||||
queryObj: { 'list-type': 'current' },
|
|
||||||
authCredentials: credentials,
|
|
||||||
}, (err, response) => {
|
|
||||||
assert.ifError(err);
|
|
||||||
assert.strictEqual(response.statusCode, 200);
|
|
||||||
const data = JSON.parse(response.body);
|
|
||||||
|
|
||||||
assert.strictEqual(data.IsTruncated, false);
|
|
||||||
assert(!data.NextKeyMarker);
|
|
||||||
assert.strictEqual(data.MaxKeys, 1000);
|
|
||||||
|
|
||||||
const contents = data.Contents;
|
|
||||||
assert.strictEqual(contents.length, 2);
|
|
||||||
|
|
||||||
const firstKey = contents[0];
|
|
||||||
assert.strictEqual(firstKey.Key, 'key1');
|
|
||||||
assert.strictEqual(firstKey.VersionId, 'null');
|
|
||||||
|
|
||||||
const secondKey = contents[1];
|
|
||||||
assert.strictEqual(secondKey.Key, 'key2');
|
|
||||||
assert.strictEqual(secondKey.VersionId, versionForKey2);
|
|
||||||
return done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
runIfMongoV1('listLifecycle with null current version after versioning suspended', () => {
|
|
||||||
let bucketUtil;
|
|
||||||
let s3;
|
|
||||||
let expectedVersionId;
|
|
||||||
const nullObjectBucket = 'bucket-for-list-lifecycle-current-null-tests';
|
|
||||||
const keyName = 'key0';
|
|
||||||
|
|
||||||
before(done => {
|
|
||||||
bucketUtil = new BucketUtility('account1', { signatureVersion: 'v4' });
|
|
||||||
s3 = bucketUtil.s3;
|
|
||||||
|
|
||||||
return async.series([
|
|
||||||
next => s3.createBucket({ Bucket: nullObjectBucket }, next),
|
|
||||||
next => s3.putBucketVersioning({
|
|
||||||
Bucket: nullObjectBucket,
|
|
||||||
VersioningConfiguration: { Status: 'Enabled' },
|
|
||||||
}, next),
|
|
||||||
next => s3.putObject({ Bucket: nullObjectBucket, Key: keyName }, (err, data) => {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
expectedVersionId = data.VersionId;
|
|
||||||
return next();
|
|
||||||
}),
|
|
||||||
next => s3.putBucketVersioning({
|
|
||||||
Bucket: nullObjectBucket,
|
|
||||||
VersioningConfiguration: { Status: 'Suspended' },
|
|
||||||
}, next),
|
|
||||||
next => s3.putObject({ Bucket: nullObjectBucket, Key: keyName }, next),
|
|
||||||
], done);
|
|
||||||
});
|
|
||||||
|
|
||||||
after(done => async.series([
|
|
||||||
next => removeAllVersions({ Bucket: nullObjectBucket }, next),
|
|
||||||
next => s3.deleteBucket({ Bucket: nullObjectBucket }, next),
|
|
||||||
], done));
|
|
||||||
|
|
||||||
it('should return list of current versions when bucket has a null current version', done => {
|
|
||||||
makeBackbeatRequest({
|
|
||||||
method: 'GET',
|
|
||||||
bucket: nullObjectBucket,
|
|
||||||
queryObj: { 'list-type': 'current' },
|
|
||||||
authCredentials: credentials,
|
|
||||||
}, (err, response) => {
|
|
||||||
assert.ifError(err);
|
|
||||||
assert.strictEqual(response.statusCode, 200);
|
|
||||||
const data = JSON.parse(response.body);
|
|
||||||
|
|
||||||
assert.strictEqual(data.IsTruncated, false);
|
|
||||||
assert(!data.NextKeyMarker);
|
|
||||||
assert.strictEqual(data.MaxKeys, 1000);
|
|
||||||
assert.strictEqual(data.Contents.length, 1);
|
|
||||||
const key = data.Contents[0];
|
|
||||||
assert.strictEqual(key.Key, keyName);
|
|
||||||
assert.strictEqual(key.VersionId, 'null');
|
|
||||||
return done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return list of non-current versions when bucket has a null current version', done => {
|
|
||||||
makeBackbeatRequest({
|
|
||||||
method: 'GET',
|
|
||||||
bucket: nullObjectBucket,
|
|
||||||
queryObj: { 'list-type': 'noncurrent' },
|
|
||||||
authCredentials: credentials,
|
|
||||||
}, (err, response) => {
|
|
||||||
assert.ifError(err);
|
|
||||||
assert.strictEqual(response.statusCode, 200);
|
|
||||||
const data = JSON.parse(response.body);
|
|
||||||
|
|
||||||
assert.strictEqual(data.IsTruncated, false);
|
|
||||||
assert(!data.NextKeyMarker);
|
|
||||||
assert.strictEqual(data.MaxKeys, 1000);
|
|
||||||
assert.strictEqual(data.Contents.length, 1);
|
|
||||||
const key = data.Contents[0];
|
|
||||||
assert.strictEqual(key.Key, keyName);
|
|
||||||
assert.strictEqual(key.VersionId, expectedVersionId);
|
|
||||||
return done();
|
return done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue