UNPKG

serverless-offline-streams

Version:

This plugin provides support for event driven systems using Serverless Offline

93 lines (92 loc) 4.7 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; exports.__esModule = true; var bindHandlersToQueues_1 = require("./bindHandlersToQueues"); var testHelpers_1 = require("../testHelpers"); var aws_sdk_client_mock_1 = require("aws-sdk-client-mock"); var client_sqs_1 = require("@aws-sdk/client-sqs"); describe('bindHandlersToQueues', function () { var sqsClientMock = (0, aws_sdk_client_mock_1.mockClient)(client_sqs_1.SQSClient); var sqsClient = sqsClientMock; beforeEach(function () { sqsClientMock.reset(); }); var createFunction = function (functionName, handler, queueArns) { var _a; return (_a = {}, _a[functionName] = { functionName: functionName, handler: handler, events: queueArns.map(function (arn) { return ({ type: "SQS", sourceEvent: { sqs: { arn: arn } } }); }) }, _a); }; var arn = function (queueName) { return "arn:aws:sqs:eu-west-1:444455556666:".concat(queueName); }; it('binds and merges handlers', function () { var functions = __assign(__assign({}, createFunction('func1', 'handler1', [arn('queue1'), arn('queue2')])), createFunction('func2', 'handler2', [arn('queue2'), arn('queue3')])); var queues = [ (0, testHelpers_1.activeQueueDef)(sqsClient, { name: 'queue1' }), (0, testHelpers_1.activeQueueDef)(sqsClient, { name: 'queue2' }), (0, testHelpers_1.activeQueueDef)(sqsClient, { name: 'queue3' }), ]; var config = { errorOnMissingQueueDefinition: true }; var boundQueues = (0, bindHandlersToQueues_1["default"])(config, {}, queues, functions); expect(boundQueues.length).toBe(3); expect(boundQueues[0]).toEqual(__assign(__assign({}, queues[0]), { handlerFunctions: ['func1'] })); expect(boundQueues[1]).toEqual(__assign(__assign({}, queues[1]), { handlerFunctions: ['func1', 'func2'] })); expect(boundQueues[2]).toEqual(__assign(__assign({}, queues[2]), { handlerFunctions: ['func2'] })); }); it('throws error if errorOnMissingQueueDefinition=true and queue missing', function () { var functions = __assign({}, createFunction('func1', 'handler1', [arn('queue2')])); var queues = [ (0, testHelpers_1.activeQueueDef)(sqsClient, { name: 'queue1' }), ]; var config = { errorOnMissingQueueDefinition: true }; expect(function () { return (0, bindHandlersToQueues_1["default"])(config, {}, queues, functions); }) .toThrow("No queue definition with arn: '".concat(arn('queue2'), "' found, but it was referenced by an event mapping in function: 'func1'")); }); it('does not error if errorOnMissingQueueDefinition=false and queue missing', function () { var functions = __assign({}, createFunction('func1', 'handler1', [arn('queue2')])); var queues = [ (0, testHelpers_1.activeQueueDef)(sqsClient, { name: 'queue1' }), ]; var config = { errorOnMissingQueueDefinition: false }; var boundQueues = (0, bindHandlersToQueues_1["default"])(config, {}, queues, functions); expect(boundQueues.length).toBe(0); }); it('scans resources for Ref arn', function () { var functions = __assign({}, createFunction('func1', 'handler1', [arn('queue2')])); var resources = { k3: { name: "RES3" }, k4: { name: "RES4" } }; var queues = [ (0, testHelpers_1.activeQueueDef)(sqsClient, { name: 'queue1' }), ]; var config = { errorOnMissingQueueDefinition: false }; var boundQueues = (0, bindHandlersToQueues_1["default"])(config, {}, queues, functions); expect(boundQueues.length).toBe(0); }); it('uses alias if name not matched', function () { var functions = __assign({}, createFunction('func1', 'handler1', ['my-queue-alias'])); var queues = [ (0, testHelpers_1.activeQueueDef)(sqsClient, { name: 'MyQueue', aliases: ['my-queue-alias'] }), ]; var config = { errorOnMissingQueueDefinition: true }; var boundQueues = (0, bindHandlersToQueues_1["default"])(config, {}, queues, functions); expect(boundQueues.length).toBe(1); }); });