-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixed error while calling emptyBucket() (#11)
- Loading branch information
1 parent
7533193
commit d1938ae
Showing
11 changed files
with
112 additions
and
76 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,6 @@ | ||
# IDE | ||
.idea | ||
|
||
# Logs | ||
logs | ||
*.log | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import { S3Client } from '@aws-sdk/client-s3'; | ||
import { emptyBucket } from './emptyBucket'; | ||
|
||
/** | ||
* Delete an S3 Bucket | ||
* Attempt to empty it first before deleting. | ||
* @param {String} srcBucket - The S3 Bucket Name to Delete | ||
* | ||
*/ | ||
|
||
export const deleteBucket = async (srcBucket) => { | ||
const s3 = new S3Client(); | ||
|
||
try { | ||
// Attempt to empty the bucket first before deleting it. | ||
await emptyBucket(srcBucket); | ||
|
||
const response = await s3.deleteBucket({ Bucket: srcBucket }); | ||
console.info(`Bucket: [${srcBucket}] deleted.`); | ||
return response; | ||
} catch (err) { | ||
if (err.code === 'NoSuchBucket') { | ||
//Bucket likely already Deleted | ||
console.info(`Bucket: [${srcBucket}] not found. May have already been deleted.`); | ||
return; | ||
} else { | ||
throw new Error(`Error Deleting Bucket: [${srcBucket}] - ${err.message}`); | ||
} | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
import * as emptyBucket from './emptyBucket'; | ||
import { MOCK_ERROR_S3_BUCKET_NOT_EXIST, MOCK_ERROR_S3_BUCKET_UNKNOWN, MOCK_S3_SOURCE_BUCKET } from './mocks'; | ||
import { S3Client } from '@aws-sdk/client-s3'; | ||
import { deleteBucket } from './deleteBucket'; | ||
|
||
jest.mock('@aws-sdk/client-s3'); | ||
|
||
describe('[s3.js] unit tests', () => { | ||
const mock_deleteBucket = jest.fn(); | ||
const mock_deleteObjects = jest.fn(); | ||
const mock_listObjectsV2 = jest.fn(); | ||
|
||
// What to do before test is executed | ||
beforeEach(() => { | ||
jest.restoreAllMocks(); | ||
S3Client.mockImplementation(() => ({ | ||
deleteBucket: mock_deleteBucket, | ||
deleteObjects: mock_deleteObjects, | ||
listObjectsV2: mock_listObjectsV2, | ||
})); | ||
jest.spyOn(console, 'error').mockImplementation(() => {}); | ||
jest.spyOn(console, 'info').mockImplementation(() => {}); | ||
jest.spyOn(console, 'log').mockImplementation(() => {}); | ||
}); | ||
|
||
// What to do after each test is executed | ||
afterEach(() => { | ||
jest.clearAllMocks(); | ||
}); | ||
|
||
describe('[deleteBucket] when a bucket name is passed', () => { | ||
it('must first empty then delete the bucket when the bucket exists', async () => { | ||
jest.spyOn(emptyBucket, 'emptyBucket').mockResolvedValue({}); | ||
mock_deleteBucket.mockResolvedValue({}); | ||
const response = await deleteBucket(MOCK_S3_SOURCE_BUCKET); | ||
expect(mock_deleteBucket).toHaveBeenCalledWith({ | ||
Bucket: MOCK_S3_SOURCE_BUCKET, | ||
}); | ||
expect(emptyBucket.emptyBucket).toHaveBeenCalledTimes(1); | ||
expect(emptyBucket.emptyBucket).toHaveBeenCalledWith(MOCK_S3_SOURCE_BUCKET); | ||
expect(console.info).toHaveBeenCalledWith(`Bucket: [${MOCK_S3_SOURCE_BUCKET}] deleted.`); | ||
expect(response).toEqual({}); | ||
}); | ||
|
||
it('must ignore a bucket not found error as the bucket may have already been deleted', async () => { | ||
jest.spyOn(emptyBucket, 'emptyBucket').mockResolvedValue({}); | ||
mock_deleteBucket.mockRejectedValue(MOCK_ERROR_S3_BUCKET_NOT_EXIST); | ||
const response = await deleteBucket(MOCK_S3_SOURCE_BUCKET); | ||
expect(console.info).toHaveBeenCalledWith( | ||
`Bucket: [${MOCK_S3_SOURCE_BUCKET}] not found. May have already been deleted.` | ||
); | ||
expect(response).toEqual(); | ||
}); | ||
|
||
it('must throw all other errors', async () => { | ||
jest.spyOn(emptyBucket, 'emptyBucket').mockResolvedValue({}); | ||
mock_deleteBucket.mockRejectedValue(MOCK_ERROR_S3_BUCKET_UNKNOWN); | ||
await expect(deleteBucket(MOCK_S3_SOURCE_BUCKET)).rejects.toThrowError( | ||
`Error Deleting Bucket: [fake_bucket] - Unknown Error` | ||
); | ||
expect(console.info).not.toHaveBeenCalled(); | ||
}); | ||
|
||
// TODO: Test an error being thrown by the empty bucket function | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters