@aws-solutions-constructs/core
Version:
Core CDK Construct for patterns library
131 lines • 16.4 kB
JavaScript
"use strict";
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
* with the License. A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
const defaults = require("../index");
const aws_lambda_event_sources_1 = require("aws-cdk-lib/aws-lambda-event-sources");
const lambda = require("aws-cdk-lib/aws-lambda");
const s3 = require("aws-cdk-lib/aws-s3");
const assertions_1 = require("aws-cdk-lib/assertions");
const aws_cdk_lib_1 = require("aws-cdk-lib");
test('test DynamoEventSourceProps with defaults', () => {
const stack = new aws_cdk_lib_1.Stack();
const props = defaults.DefaultDynamoEventSourceProps(stack);
expect(props.onFailure).toBeInstanceOf(aws_lambda_event_sources_1.SqsDlq);
expect(props.startingPosition).toEqual("TRIM_HORIZON");
expect(props.bisectBatchOnError).toEqual(true);
expect(props.retryAttempts).toEqual(500);
expect(props.maxRecordAge).toEqual(aws_cdk_lib_1.Duration.hours(24));
});
test('test DynamoEventSourceProps with deployDeadLetterQueue: false', () => {
const stack = new aws_cdk_lib_1.Stack();
const props = defaults.DefaultDynamoEventSourceProps(stack, {
deploySqsDlqQueue: false
});
expect(props).toEqual({
startingPosition: "TRIM_HORIZON",
bisectBatchOnError: true,
maxRecordAge: aws_cdk_lib_1.Duration.hours(24),
retryAttempts: 500
});
});
test('test DynamoEventSourceProps override', () => {
const stack = new aws_cdk_lib_1.Stack();
const myProps = {
startingPosition: lambda.StartingPosition.LATEST,
batchSize: 5,
retryAttempts: 3
};
const props = defaults.DefaultDynamoEventSourceProps(stack, {
eventSourceProps: myProps,
deploySqsDlqQueue: false
});
expect(props).toEqual({
batchSize: 5,
startingPosition: "LATEST",
maxRecordAge: aws_cdk_lib_1.Duration.hours(24),
bisectBatchOnError: true,
retryAttempts: 3
});
});
test('test S3EventSourceProps w/ default props', () => {
const props = defaults.DefaultS3EventSourceProps();
expect(props).toEqual({
events: ["s3:ObjectCreated:*"]
});
});
test('test S3EventSourceProps w/ user props', () => {
const s3EventSourceProps = {
events: [
s3.EventType.OBJECT_CREATED_POST
]
};
const props = defaults.DefaultS3EventSourceProps(s3EventSourceProps);
expect(props).toEqual({
events: ["s3:ObjectCreated:Post"]
});
});
test('test KinesisEventSourceProps with defaults', () => {
const stack = new aws_cdk_lib_1.Stack();
const props = defaults.DefaultKinesisEventSourceProps(stack);
expect(props.onFailure).toBeInstanceOf(aws_lambda_event_sources_1.SqsDlq);
expect(props.startingPosition).toEqual("TRIM_HORIZON");
expect(props.bisectBatchOnError).toEqual(true);
expect(props.retryAttempts).toEqual(500);
expect(props.maxRecordAge).toEqual(aws_cdk_lib_1.Duration.hours(24));
});
test('test KinesisEventSourceProps with deployDeadLetterQueue: false', () => {
const stack = new aws_cdk_lib_1.Stack();
const props = defaults.DefaultKinesisEventSourceProps(stack, {
deploySqsDlqQueue: false
});
expect(props).toEqual({
startingPosition: "TRIM_HORIZON",
bisectBatchOnError: true,
maxRecordAge: aws_cdk_lib_1.Duration.hours(24),
retryAttempts: 500
});
});
test('test KinesisEventSourceProps override', () => {
const stack = new aws_cdk_lib_1.Stack();
const myProps = {
startingPosition: lambda.StartingPosition.LATEST,
batchSize: 5,
retryAttempts: 3
};
const props = defaults.DefaultKinesisEventSourceProps(stack, {
eventSourceProps: myProps,
deploySqsDlqQueue: false
});
expect(props).toEqual({
batchSize: 5,
startingPosition: "LATEST",
maxRecordAge: aws_cdk_lib_1.Duration.hours(24),
bisectBatchOnError: true,
retryAttempts: 3
});
});
test('test sqsDlqQueueProps override', () => {
const stack = new aws_cdk_lib_1.Stack();
defaults.DefaultKinesisEventSourceProps(stack, {
sqsDlqQueueProps: {
queueName: 'hello-world',
visibilityTimeout: aws_cdk_lib_1.Duration.seconds(50)
}
});
assertions_1.Template.fromStack(stack).hasResourceProperties("AWS::SQS::Queue", {
QueueName: "hello-world",
VisibilityTimeout: 50
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWV2ZW50LXNvdXJjZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibGFtYmRhLWV2ZW50LXNvdXJjZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxxQ0FBcUM7QUFDckMsbUZBQStHO0FBQy9HLGlEQUFpRDtBQUNqRCx5Q0FBeUM7QUFDekMsdURBQWtEO0FBQ2xELDZDQUE4QztBQUU5QyxJQUFJLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxFQUFFO0lBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU1RCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxpQ0FBTSxDQUFDLENBQUM7SUFDL0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2RCxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLHNCQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsK0RBQStELEVBQUUsR0FBRyxFQUFFO0lBQ3pFLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLEVBQUU7UUFDMUQsaUJBQWlCLEVBQUUs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QztJQUUxQixRQUFRLENBQUMsOEJBQThCLENBQUMsS0FBSyxFQUFFO1FBQzdDLGdCQUFnQixFQUFFO1lBQ2hCLFNBQVMsRUFBRSxhQUFhO1lBQ3hCLGlCQUFpQixFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUN4QztLQUNGLENBQUMsQ0FBQztJQUVILHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixFQUFFO1FBQ2pFLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLGlCQUFpQixFQUFFLEVBQUU7S0FDdEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgeyBEeW5hbW9FdmVudFNvdXJjZVByb3BzLCBLaW5lc2lzRXZlbnRTb3VyY2VQcm9wcywgU3FzRGxxIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG50ZXN0KCd0ZXN0IER5bmFtb0V2ZW50U291cmNlUHJvcHMgd2l0aCBkZWZhdWx0cycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJvcHMgPSBkZWZhdWx0cy5EZWZhdWx0RHluYW1vRXZlbnRTb3VyY2VQcm9wcyhzdGFjayk7XG5cbiAgZXhwZWN0KHByb3BzLm9uRmFpbHVyZSkudG9CZUluc3RhbmNlT2YoU3FzRGxxKTtcbiAgZXhwZWN0KHByb3BzLnN0YXJ0aW5nUG9zaXRpb24pLnRvRXF1YWwoXCJUUklNX0hPUklaT05cIik7XG4gIGV4cGVjdChwcm9wcy5iaXNlY3RCYXRjaE9uRXJyb3IpLnRvRXF1YWwodHJ1ZSk7XG4gIGV4cGVjdChwcm9wcy5yZXRyeUF0dGVtcHRzKS50b0VxdWFsKDUwMCk7XG4gIGV4cGVjdChwcm9wcy5tYXhSZWNvcmRBZ2UpLnRvRXF1YWwoRHVyYXRpb24uaG91cnMoMjQpKTtcbn0pO1xuXG50ZXN0KCd0ZXN0IER5bmFtb0V2ZW50U291cmNlUHJvcHMgd2l0aCBkZXBsb3lEZWFkTGV0dGVyUXVldWU6IGZhbHNlJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcm9wcyA9IGRlZmF1bHRzLkRlZmF1bHREeW5hbW9FdmVudFNvdXJjZVByb3BzKHN0YWNrLCB7XG4gICAgZGVwbG95U3FzRGxxUXVldWU6IGZhbHNlXG4gIH0pO1xuXG4gIGV4cGVjdChwcm9wcykudG9FcXVhbCh7XG4gICAgc3RhcnRpbmdQb3NpdGlvbjogXCJUUklNX0hPUklaT05cIixcbiAgICBiaXNlY3RCYXRjaE9uRXJyb3I6IHRydWUsXG4gICAgbWF4UmVjb3JkQWdlOiBEdXJhdGlvbi5ob3VycygyNCksXG4gICAgcmV0cnlBdHRlbXB0czogNTAwXG4gIH0pO1xufSk7XG5cbnRlc3QoJ3Rlc3QgRHluYW1vRXZlbnRTb3VyY2VQcm9wcyBvdmVycmlkZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgbXlQcm9wczogRHluYW1vRXZlbnRTb3VyY2VQcm9wcyA9IHtcbiAgICBzdGFydGluZ1Bvc2l0aW9uOiBsYW1iZGEuU3RhcnRpbmdQb3NpdGlvbi5MQVRFU1QsXG4gICAgYmF0Y2hTaXplOiA1LFxuICAgIHJldHJ5QXR0ZW1wdHM6IDNcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmF1bHRzLkRlZmF1bHREeW5hbW9FdmVudFNvdXJjZVByb3BzKHN0YWNrLCB7XG4gICAgZXZlbnRTb3VyY2VQcm9wczogbXlQcm9wcyxcbiAgICBkZXBsb3lTcXNEbHFRdWV1ZTogZmFsc2VcbiAgfSk7XG5cbiAgZXhwZWN0KHByb3BzKS50b0VxdWFsKHtcbiAgICBiYXRjaFNpemU6IDUsXG4gICAgc3RhcnRpbmdQb3NpdGlvbjogXCJMQVRFU1RcIixcbiAgICBtYXhSZWNvcmRBZ2U6IER1cmF0aW9uLmhvdXJzKDI0KSxcbiAgICBiaXNlY3RCYXRjaE9uRXJyb3I6IHRydWUsXG4gICAgcmV0cnlBdHRlbXB0czogM1xuICB9KTtcbn0pO1xuXG50ZXN0KCd0ZXN0IFMzRXZlbnRTb3VyY2VQcm9wcyB3LyBkZWZhdWx0IHByb3BzJywgKCkgPT4ge1xuICBjb25zdCBwcm9wcyA9IGRlZmF1bHRzLkRlZmF1bHRTM0V2ZW50U291cmNlUHJvcHMoKTtcbiAgZXhwZWN0KHByb3BzKS50b0VxdWFsKHtcbiAgICBldmVudHM6IFtcInMzOk9iamVjdENyZWF0ZWQ6KlwiXVxuICB9KTtcbn0pO1xuXG50ZXN0KCd0ZXN0IFMzRXZlbnRTb3VyY2VQcm9wcyB3LyB1c2VyIHByb3BzJywgKCkgPT4ge1xuICBjb25zdCBzM0V2ZW50U291cmNlUHJvcHMgPSB7XG4gICAgZXZlbnRzOiBbXG4gICAgICBzMy5FdmVudFR5cGUuT0JKRUNUX0NSRUFURURfUE9TVFxuICAgIF1cbiAgfTtcbiAgY29uc3QgcHJvcHMgPSBkZWZhdWx0cy5EZWZhdWx0UzNFdmVudFNvdXJjZVByb3BzKHMzRXZlbnRTb3VyY2VQcm9wcyk7XG4gIGV4cGVjdChwcm9wcykudG9FcXVhbCh7XG4gICAgZXZlbnRzOiBbXCJzMzpPYmplY3RDcmVhdGVkOlBvc3RcIl1cbiAgfSk7XG59KTtcblxudGVzdCgndGVzdCBLaW5lc2lzRXZlbnRTb3VyY2VQcm9wcyB3aXRoIGRlZmF1bHRzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcm9wcyA9IGRlZmF1bHRzLkRlZmF1bHRLaW5lc2lzRXZlbnRTb3VyY2VQcm9wcyhzdGFjayk7XG5cbiAgZXhwZWN0KHByb3BzLm9uRmFpbHVyZSkudG9CZUluc3RhbmNlT2YoU3FzRGxxKTtcbiAgZXhwZWN0KHByb3BzLnN0YXJ0aW5nUG9zaXRpb24pLnRvRXF1YWwoXCJUUklNX0hPUklaT05cIik7XG4gIGV4cGVjdChwcm9wcy5iaXNlY3RCYXRjaE9uRXJyb3IpLnRvRXF1YWwodHJ1ZSk7XG4gIGV4cGVjdChwcm9wcy5yZXRyeUF0dGVtcHRzKS50b0VxdWFsKDUwMCk7XG4gIGV4cGVjdChwcm9wcy5tYXhSZWNvcmRBZ2UpLnRvRXF1YWwoRHVyYXRpb24uaG91cnMoMjQpKTtcbn0pO1xuXG50ZXN0KCd0ZXN0IEtpbmVzaXNFdmVudFNvdXJjZVByb3BzIHdpdGggZGVwbG95RGVhZExldHRlclF1ZXVlOiBmYWxzZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJvcHMgPSBkZWZhdWx0cy5EZWZhdWx0S2luZXNpc0V2ZW50U291cmNlUHJvcHMoc3RhY2ssIHtcbiAgICBkZXBsb3lTcXNEbHFRdWV1ZTogZmFsc2VcbiAgfSk7XG5cbiAgZXhwZWN0KHByb3BzKS50b0VxdWFsKHtcbiAgICBzdGFydGluZ1Bvc2l0aW9uOiBcIlRSSU1fSE9SSVpPTlwiLFxuICAgIGJpc2VjdEJhdGNoT25FcnJvcjogdHJ1ZSxcbiAgICBtYXhSZWNvcmRBZ2U6IER1cmF0aW9uLmhvdXJzKDI0KSxcbiAgICByZXRyeUF0dGVtcHRzOiA1MDBcbiAgfSk7XG59KTtcblxudGVzdCgndGVzdCBLaW5lc2lzRXZlbnRTb3VyY2VQcm9wcyBvdmVycmlkZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgbXlQcm9wczogS2luZXNpc0V2ZW50U291cmNlUHJvcHMgPSB7XG4gICAgc3RhcnRpbmdQb3NpdGlvbjogbGFtYmRhLlN0YXJ0aW5nUG9zaXRpb24uTEFURVNULFxuICAgIGJhdGNoU2l6ZTogNSxcbiAgICByZXRyeUF0dGVtcHRzOiAzXG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZhdWx0cy5EZWZhdWx0S2luZXNpc0V2ZW50U291cmNlUHJvcHMoc3RhY2ssIHtcbiAgICBldmVudFNvdXJjZVByb3BzOiBteVByb3BzLFxuICAgIGRlcGxveVNxc0RscVF1ZXVlOiBmYWxzZVxuICB9KTtcblxuICBleHBlY3QocHJvcHMpLnRvRXF1YWwoe1xuICAgIGJhdGNoU2l6ZTogNSxcbiAgICBzdGFydGluZ1Bvc2l0aW9uOiBcIkxBVEVTVFwiLFxuICAgIG1heFJlY29yZEFnZTogRHVyYXRpb24uaG91cnMoMjQpLFxuICAgIGJpc2VjdEJhdGNoT25FcnJvcjogdHJ1ZSxcbiAgICByZXRyeUF0dGVtcHRzOiAzXG4gIH0pO1xufSk7XG5cbnRlc3QoJ3Rlc3Qgc3FzRGxxUXVldWVQcm9wcyBvdmVycmlkZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBkZWZhdWx0cy5EZWZhdWx0S2luZXNpc0V2ZW50U291cmNlUHJvcHMoc3RhY2ssIHtcbiAgICBzcXNEbHFRdWV1ZVByb3BzOiB7XG4gICAgICBxdWV1ZU5hbWU6ICdoZWxsby13b3JsZCcsXG4gICAgICB2aXNpYmlsaXR5VGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1MClcbiAgICB9XG4gIH0pO1xuXG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpTUVM6OlF1ZXVlXCIsIHtcbiAgICBRdWV1ZU5hbWU6IFwiaGVsbG8td29ybGRcIixcbiAgICBWaXNpYmlsaXR5VGltZW91dDogNTBcbiAgfSk7XG59KTsiXX0=