mira
Version:
NearForm Accelerator for Cloud Native Serverless AWS
114 lines • 4.36 kB
JavaScript
const mockDeleteBucket = jest.fn();
const mockSendResponse = jest.fn();
jest.mock('../utils/delete-bucket', () => ({
deleteBucket: mockDeleteBucket
}));
jest.mock('../utils/send-response', () => ({
sendResponse: mockSendResponse
}));
const { handler } = require('.');
const eventBase = {
ResponseURL: 'ResponseURL',
LogicalResourceId: 'LogicalResourceId',
StackId: 'StackId',
RequestId: 'RequestId',
ResourceProperties: { BucketName: 'testBucket' }
};
describe('auto-delete bucket lambda', () => {
beforeEach(() => {
mockDeleteBucket.mockClear();
mockSendResponse.mockClear();
});
it('fails if ResourceProperties is not provided no matter the request type', async () => {
await handler({
...eventBase,
RequestType: 'Create',
ResourceProperties: undefined
});
expect(mockDeleteBucket).not.toHaveBeenCalled();
expect(mockSendResponse).toHaveBeenCalledTimes(1);
expect(mockSendResponse).toHaveBeenCalledWith('ResponseURL', {
status: 'FAILED',
reason: 'BucketName is required',
physicalResourceId: 'LogicalResourceId',
stackId: 'StackId',
requestId: 'RequestId',
logicalResourceId: 'LogicalResourceId',
data: undefined
});
});
it('fails if bucket name is not provided no matter the request type', async () => {
await handler({
...eventBase,
RequestType: 'Create',
ResourceProperties: { test: 'test' }
});
expect(mockDeleteBucket).not.toHaveBeenCalled();
expect(mockSendResponse).toHaveBeenCalledTimes(1);
expect(mockSendResponse).toHaveBeenCalledWith('ResponseURL', {
status: 'FAILED',
reason: 'BucketName is required',
physicalResourceId: 'LogicalResourceId',
stackId: 'StackId',
requestId: 'RequestId',
logicalResourceId: 'LogicalResourceId',
data: { test: 'test' }
});
});
it('runs without doing anything if the request type is not delete', async () => {
await handler({
...eventBase,
RequestType: 'Update'
});
expect(mockDeleteBucket).not.toHaveBeenCalled();
expect(mockSendResponse).toHaveBeenCalledTimes(1);
expect(mockSendResponse).toHaveBeenCalledWith('ResponseURL', {
status: 'SUCCESS',
reason: '',
physicalResourceId: 'LogicalResourceId',
stackId: 'StackId',
requestId: 'RequestId',
logicalResourceId: 'LogicalResourceId',
data: { BucketName: 'testBucket' }
});
});
it('fails if delete bucket throws', async () => {
mockDeleteBucket.mockRejectedValue('delete-bucket-error');
await handler({
...eventBase,
RequestType: 'Delete'
});
expect(mockDeleteBucket).toHaveBeenCalledTimes(1);
expect(mockDeleteBucket).toHaveBeenCalledWith('testBucket');
expect(mockSendResponse).toHaveBeenCalledTimes(1);
expect(mockSendResponse).toHaveBeenCalledWith('ResponseURL', {
status: 'FAILED',
reason: 'Faild to empty bucket. delete-bucket-error',
physicalResourceId: 'LogicalResourceId',
stackId: 'StackId',
requestId: 'RequestId',
logicalResourceId: 'LogicalResourceId',
data: { BucketName: 'testBucket' }
});
});
it('runs successfully and deletes the bucket', async () => {
mockDeleteBucket.mockResolvedValueOnce(true);
await handler({
...eventBase,
RequestType: 'Delete'
});
expect(mockDeleteBucket).toHaveBeenCalledTimes(1);
expect(mockDeleteBucket).toHaveBeenCalledWith('testBucket');
expect(mockSendResponse).toHaveBeenCalledTimes(1);
expect(mockSendResponse).toHaveBeenCalledWith('ResponseURL', {
status: 'SUCCESS',
reason: '',
physicalResourceId: 'LogicalResourceId',
stackId: 'StackId',
requestId: 'RequestId',
logicalResourceId: 'LogicalResourceId',
data: { BucketName: 'testBucket' }
});
});
});
//# sourceMappingURL=index.test.js.map