UNPKG

@aws-solutions-constructs/core

Version:
131 lines 16.4 kB
"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=