UNPKG

mira

Version:

NearForm Accelerator for Cloud Native Serverless AWS

119 lines 4.62 kB
const mockListObjectVersions = jest.fn(); const mockDeleteObjects = jest.fn(); jest.mock('aws-sdk/clients/s3', () => { return jest.fn().mockImplementation(() => { return { listObjectVersions: mockListObjectVersions, deleteObjects: mockDeleteObjects }; }); }); const { deleteBucket } = require('./delete-bucket'); describe('delete bucket', () => { const mockListObjectVersionsPromise = jest.fn(); mockListObjectVersions.mockReturnValue({ promise: mockListObjectVersionsPromise }); const mockDeleteObjectsPromise = jest.fn(); mockDeleteObjects.mockReturnValue({ promise: mockDeleteObjectsPromise }); beforeEach(() => { mockListObjectVersions.mockClear(); mockDeleteObjects.mockClear(); }); it('deletes all objects from the bucket w/o pagination', async () => { mockListObjectVersionsPromise.mockResolvedValue({ IsTruncated: false, Versions: [ { Key: '1', VersionId: 'v1', RandomKey: 'test1' }, { Key: '2', VersionId: 'v2', RandomKey: 'test2' } ], DeleteMarkers: [{ Key: '3', VersionId: 'v3', RandomKey: 'test3' }] }); await deleteBucket('testBucket'); expect(mockListObjectVersions).toBeCalledTimes(1); expect(mockListObjectVersions).toBeCalledWith({ Bucket: 'testBucket' }); expect(mockDeleteObjects).toBeCalledTimes(1); expect(mockDeleteObjects).toBeCalledWith({ Bucket: 'testBucket', Delete: { Objects: [ { Key: '1', VersionId: 'v1' }, { Key: '2', VersionId: 'v2' }, { Key: '3', VersionId: 'v3' } ] } }); }); it('deletes all objects from the bucket w/ pagination', async () => { mockListObjectVersionsPromise .mockResolvedValueOnce({ IsTruncated: true, Versions: [ { Key: '1', VersionId: 'v1', RandomKey: 'test1' }, { Key: '2', VersionId: 'v2', RandomKey: 'test2' } ] }) .mockResolvedValue({ IsTruncated: false, Versions: [{ Key: '3', VersionId: 'v3', RandomKey: 'test3' }], DeleteMarkers: [{ Key: '4', VersionId: 'v4', RandomKey: 'test4' }] }); await deleteBucket('testBucket'); expect(mockListObjectVersions).toHaveBeenCalledTimes(2); expect(mockListObjectVersions).toHaveBeenNthCalledWith(1, { Bucket: 'testBucket' }); expect(mockListObjectVersions).toHaveBeenNthCalledWith(2, { Bucket: 'testBucket' }); expect(mockDeleteObjects).toHaveBeenCalledTimes(2); expect(mockDeleteObjects).toHaveBeenNthCalledWith(1, { Bucket: 'testBucket', Delete: { Objects: [ { Key: '1', VersionId: 'v1' }, { Key: '2', VersionId: 'v2' } ] } }); expect(mockDeleteObjects).toHaveBeenNthCalledWith(2, { Bucket: 'testBucket', Delete: { Objects: [ { Key: '3', VersionId: 'v3' }, { Key: '4', VersionId: 'v4' } ] } }); }); it('deletes all objects from the bucket without Versions and DeleteMarkers value without Key', async () => { mockListObjectVersionsPromise.mockResolvedValue({ IsTruncated: false, DeleteMarkers: [{ VersionId: 'v3', RandomKey: 'test3' }] }); await deleteBucket('testBucket'); expect(mockListObjectVersions).toBeCalledTimes(1); expect(mockListObjectVersions).toBeCalledWith({ Bucket: 'testBucket' }); expect(mockDeleteObjects).toBeCalledTimes(1); expect(mockDeleteObjects).toBeCalledWith({ Bucket: 'testBucket', Delete: { Objects: [ { Key: '', VersionId: 'v3' } ] } }); }); it('deletes all objects from the bucket without Versions and DeleteMarkers', async () => { mockListObjectVersionsPromise.mockResolvedValue({ IsTruncated: false }); await deleteBucket('testBucket'); expect(mockListObjectVersions).toBeCalledTimes(1); expect(mockListObjectVersions).toBeCalledWith({ Bucket: 'testBucket' }); expect(mockDeleteObjects).toBeCalledTimes(0); }); }); //# sourceMappingURL=delete-bucket.test.js.map