Skip to content

Commit

Permalink
Added unit tests for delete replication flow in bucketDiff
Browse files Browse the repository at this point in the history
Signed-off-by: Aayush Chouhan <[email protected]>
  • Loading branch information
achouhan09 committed Jan 10, 2024
1 parent 9b9fbd1 commit d0ef8fd
Showing 1 changed file with 100 additions and 0 deletions.
100 changes: 100 additions & 0 deletions src/test/unit_tests/jest_tests/test_bucket_diff.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1560,6 +1560,106 @@ describe('BucketDiff get_keys_diff', () => {
});
});

describe('BucketDiff get_first_bucket_keys_del', () => {
let bucketDiff;
beforeEach(() => {
const s3_params = {
accessKeyId: 'YOUR_ACCESS_KEY_ID',
secretAccessKey: 'YOUR_SECRET_ACCESS_KEY'
};

bucketDiff = new BucketDiff({
first_bucket: 'first-bucket',
second_bucket: 'second-bucket',
version: true,
s3_params: s3_params,
for_replication: false
});
replication_utils.get_object_md = mock_fn2.mockReturnValueOnce('metadata').mockReturnValueOnce('metadata');
});

describe('get_first_bucket_keys_del returns delete keys identified in first bucket', () => {
it('should return empty list if no latest delete markers present for any key', async () => {
const first_bucket_contents_left = {
"1": [
{ ETag: 'etag1.5', Size: 89317, Key: '1', IsLatest: true, },
{ ETag: 'etag1.4', Size: 24599, Key: '1', IsLatest: false, },
{ ETag: 'etag1.3', Size: 89317, Key: '1', IsLatest: false, },
],
"2": [
{ ETag: 'etag2.5', Size: 89317, Key: '2', IsLatest: true, },
{ ETag: 'etag2.5', Size: 89317, Key: '2', IsLatest: false, },
],
};
const first_bucket_delete_markers = {};
const result = await bucketDiff.get_first_bucket_keys_del(first_bucket_contents_left, first_bucket_delete_markers);
expect(result).toEqual([]);
});

it('should return list of keys with latest delete markers', async () => {
const first_bucket_contents_left = {
"1": [
{ ETag: 'etag1.5', Size: 89317, Key: '1', IsLatest: false, },
{ ETag: 'etag1.4', Size: 24599, Key: '1', IsLatest: false, },
{ ETag: 'etag1.3', Size: 89317, Key: '1', IsLatest: false, },
],
"2": [
{ ETag: 'etag2.5', Size: 89317, Key: '2', IsLatest: true, },
{ ETag: 'etag2.5', Size: 89317, Key: '2', IsLatest: false, },
],
};
const first_bucket_delete_markers = {
"1": { Key: '1', IsLatest: true, }
};
const result = await bucketDiff.get_first_bucket_keys_del(first_bucket_contents_left, first_bucket_delete_markers);
expect(result).toEqual(['1']);
});
});

});

describe('BucketDiff get_keys_del', () => {
let bucketDiff;
beforeEach(() => {
const s3_params = {
accessKeyId: 'YOUR_ACCESS_KEY_ID',
secretAccessKey: 'YOUR_SECRET_ACCESS_KEY'
};

bucketDiff = new BucketDiff({
first_bucket: 'first-bucket',
second_bucket: 'second-bucket',
version: true,
s3_params: s3_params,
for_replication: false
});
replication_utils.get_object_md = mock_fn2.mockReturnValueOnce('metadata').mockReturnValueOnce('metadata');
});

describe('get_keys_del verify the delete keys in second bucket and return', () => {
it('should return empty list if latest delete markers are present', async () => {
const first_bucket_delete_keys = [ '1', '2' ];
const second_bucket_delete_markers = {
"1": { Key: '1', IsLatest: true, },
"2": { Key: '2', IsLatest: true, }
};
const result = await bucketDiff.get_keys_del(first_bucket_delete_keys, second_bucket_delete_markers);
expect(result).toEqual([]);
});

it('should return list of keys with no latest delete markers', async () => {
const first_bucket_delete_keys = [ '1', '2' ];
const second_bucket_delete_markers = {
"1": { Key: '1', IsLatest: false, },
"3": {Key: '3', IsLatest: true},
};
const result = await bucketDiff.get_keys_del(first_bucket_delete_keys, second_bucket_delete_markers);
expect(result).toEqual([ '1', '2' ]);
});
});

});

describe('BucketDiff get_buckets_diff', () => {
let params;
let bucketDiff;
Expand Down

0 comments on commit d0ef8fd

Please sign in to comment.