diff --git a/lambdas/upsert-letter/src/handler/__tests__/upsert-handler.test.ts b/lambdas/upsert-letter/src/handler/__tests__/upsert-handler.test.ts index 9fd978b09..3f4341340 100644 --- a/lambdas/upsert-letter/src/handler/__tests__/upsert-handler.test.ts +++ b/lambdas/upsert-letter/src/handler/__tests__/upsert-handler.test.ts @@ -36,12 +36,31 @@ function createSqsRecord(msgId: string, body: string): SQSRecord { }; } -function createNotification( - event: - | LetterRequestPreparedEventV2 - | LetterRequestPreparedEvent - | LetterEvent, +type SupportedEvent = + | LetterRequestPreparedEventV2 + | LetterRequestPreparedEvent + | LetterEvent; + +function createEventBridgeNotification( + event: SupportedEvent, ): Partial { + return { + SignatureVersion: "", + Timestamp: "", + Signature: "", + SigningCertUrl: "", + MessageId: "", + Message: createEventBridgeEvent(event), + MessageAttributes: {}, + Type: "Notification", + UnsubscribeUrl: "", + TopicArn: "", + Subject: "", + Token: "", + }; +} + +function createNotification(event: SupportedEvent): Partial { return { SignatureVersion: "", Timestamp: "", @@ -58,6 +77,22 @@ function createNotification( }; } +function createEventBridgeEvent(event: SupportedEvent): string { + const now = new Date().toISOString(); + const eventBridgeEnvelope = { + version: "0", + id: "4f28e649-6832-18e8-7261-4b63e6dcd3b5", + "detail-type": event.type, + source: "custom.event", + account: "815490582396", + time: now, + region: "eu-west-2", + resources: [], + detail: event, + }; + return JSON.stringify(eventBridgeEnvelope); +} + function createPreparedV1Event( overrides: Partial = {}, ): LetterRequestPreparedEvent { @@ -178,7 +213,7 @@ describe("createUpsertLetterHandler", () => { const evt: SQSEvent = createSQSEvent([ createSqsRecord( "msg1", - JSON.stringify(createNotification(createPreparedV2Event())), + JSON.stringify(createEventBridgeNotification(createPreparedV2Event())), ), createSqsRecord( "msg2", diff --git a/lambdas/upsert-letter/src/handler/upsert-handler.ts b/lambdas/upsert-letter/src/handler/upsert-handler.ts index 6849fbcce..a1b2ea08b 100644 --- a/lambdas/upsert-letter/src/handler/upsert-handler.ts +++ b/lambdas/upsert-letter/src/handler/upsert-handler.ts @@ -120,6 +120,14 @@ function parseSNSNotification(record: SQSRecord) { return notification.Message; } +function removeEventBridgeWrapper(event: any) { + const maybeEventBridge = event; + if (maybeEventBridge.source && maybeEventBridge.detail) { + return maybeEventBridge.detail; + } + return event; +} + function getType(event: unknown) { const env = TypeEnvelope.safeParse(event); if (!env.success) { @@ -152,7 +160,9 @@ export default function createUpsertLetterHandler(deps: Deps): SQSHandler { try { const message: string = parseSNSNotification(record); - const letterEvent: unknown = JSON.parse(message); + const snsEvent = JSON.parse(message); + + const letterEvent: unknown = removeEventBridgeWrapper(snsEvent); const type = getType(letterEvent);