diff --git a/src/test/unit_tests/jest_tests/test_bucket_diff.test.js b/src/test/unit_tests/jest_tests/test_bucket_diff.test.js index ddbf3e451f..ec90cdd5c5 100644 --- a/src/test/unit_tests/jest_tests/test_bucket_diff.test.js +++ b/src/test/unit_tests/jest_tests/test_bucket_diff.test.js @@ -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;