From 7cdc1b9c1643a2b3437f3d1953ca0e84fc2031dc Mon Sep 17 00:00:00 2001 From: Gareth Allan <157592212+gareth-allan@users.noreply.github.com> Date: Fri, 27 Feb 2026 11:11:19 +0000 Subject: [PATCH] CCM-14410: Make the eventpub lambda handle unknown plane values --- .../lambda/eventpub/src/__tests__/index.test.js | 13 +++++++++++++ .../modules/eventpub/lambda/eventpub/src/index.js | 5 +++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/infrastructure/terraform/modules/eventpub/lambda/eventpub/src/__tests__/index.test.js b/infrastructure/terraform/modules/eventpub/lambda/eventpub/src/__tests__/index.test.js index 5abfa3e..58d655a 100644 --- a/infrastructure/terraform/modules/eventpub/lambda/eventpub/src/__tests__/index.test.js +++ b/infrastructure/terraform/modules/eventpub/lambda/eventpub/src/__tests__/index.test.js @@ -68,6 +68,19 @@ describe('SNS to EventBridge Lambda', () => { expect(sqsMock.calls()).toHaveLength(1); }); + test('Event with unknown plane field is sent to DLQ', async () => { + const eventUnknownPlane = { ...validCloudEvent, plane: "unknown" }; + + const snsEventUnknownPlane = { + Records: [ + { Sns: { Message: JSON.stringify(eventUnknownPlane) } } + ] + }; + + await handler(snsEventUnknownPlane); + + expect(sqsMock.calls()).toHaveLength(1); + }); test('Retries on EventBridge failure and sends failed events to DLQ', async () => { eventBridgeMock diff --git a/infrastructure/terraform/modules/eventpub/lambda/eventpub/src/index.js b/infrastructure/terraform/modules/eventpub/lambda/eventpub/src/index.js index 7e13462..6c305a5 100644 --- a/infrastructure/terraform/modules/eventpub/lambda/eventpub/src/index.js +++ b/infrastructure/terraform/modules/eventpub/lambda/eventpub/src/index.js @@ -115,11 +115,12 @@ exports.handler = async (snsEvent) => { const dataEvents = validEvents.filter(event => event.plane === 'data'); const controlEvents = validEvents.filter(event => event.plane === 'control'); + const unknownEvents = validEvents.filter(event => event.plane !== 'data' && event.plane !== 'control'); - console.debug(`Data events: ${dataEvents.length}, Control events: ${controlEvents.length}`); + console.debug(`Data events: ${dataEvents.length}, Control events: ${controlEvents.length}, Unknown events: ${unknownEvents.length}`); const failedDataEvents = await sendToEventBridge(dataEvents, DATA_PLANE_EVENT_BUS_ARN); const failedControlEvents = await sendToEventBridge(controlEvents, CONTROL_PLANE_EVENT_BUS_ARN); - await sendToDLQ([...failedDataEvents, ...failedControlEvents]); + await sendToDLQ([...failedDataEvents, ...failedControlEvents, ...unknownEvents]); };