Skip to content

Commit b9d8e24

Browse files
committed
remove eventbridge wrapper if present
1 parent c912dee commit b9d8e24

2 files changed

Lines changed: 50 additions & 2 deletions

File tree

lambdas/upsert-letter/src/handler/__tests__/upsert-handler.test.ts

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,28 @@ function createSqsRecord(msgId: string, body: string): SQSRecord {
3636
};
3737
}
3838

39+
function createEventBridgeNotification(
40+
event:
41+
| LetterRequestPreparedEventV2
42+
| LetterRequestPreparedEvent
43+
| LetterEvent,
44+
): Partial<SNSMessage> {
45+
return {
46+
SignatureVersion: "",
47+
Timestamp: "",
48+
Signature: "",
49+
SigningCertUrl: "",
50+
MessageId: "",
51+
Message: createEventBridgeEvent(event),
52+
MessageAttributes: {},
53+
Type: "Notification",
54+
UnsubscribeUrl: "",
55+
TopicArn: "",
56+
Subject: "",
57+
Token: "",
58+
};
59+
}
60+
3961
function createNotification(
4062
event:
4163
| LetterRequestPreparedEventV2
@@ -58,6 +80,22 @@ function createNotification(
5880
};
5981
}
6082

83+
function createEventBridgeEvent(event: any): string {
84+
const now = new Date().toISOString();
85+
const eventBridgeEnvelope = {
86+
version: "0",
87+
id: "4f28e649-6832-18e8-7261-4b63e6dcd3b5",
88+
"detail-type": event.type,
89+
source: "custom.event",
90+
account: "815490582396",
91+
time: now,
92+
region: "eu-west-2",
93+
resources: [],
94+
detail: event,
95+
};
96+
return JSON.stringify(eventBridgeEnvelope);
97+
}
98+
6199
function createPreparedV1Event(
62100
overrides: Partial<any> = {},
63101
): LetterRequestPreparedEvent {
@@ -178,7 +216,7 @@ describe("createUpsertLetterHandler", () => {
178216
const evt: SQSEvent = createSQSEvent([
179217
createSqsRecord(
180218
"msg1",
181-
JSON.stringify(createNotification(createPreparedV2Event())),
219+
JSON.stringify(createEventBridgeNotification(createPreparedV2Event())),
182220
),
183221
createSqsRecord(
184222
"msg2",

lambdas/upsert-letter/src/handler/upsert-handler.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,14 @@ function parseSNSNotification(record: SQSRecord) {
120120
return notification.Message;
121121
}
122122

123+
function removeEventBridgeWrapper(event: any) {
124+
const maybeEventBridge = event as any;
125+
if (maybeEventBridge.source && maybeEventBridge.detail) {
126+
return maybeEventBridge.detail;
127+
}
128+
return event;
129+
}
130+
123131
function getType(event: unknown) {
124132
const env = TypeEnvelope.safeParse(event);
125133
if (!env.success) {
@@ -152,7 +160,9 @@ export default function createUpsertLetterHandler(deps: Deps): SQSHandler {
152160
try {
153161
const message: string = parseSNSNotification(record);
154162

155-
const letterEvent: unknown = JSON.parse(message);
163+
const event = JSON.parse(message);
164+
165+
const letterEvent: unknown = removeEventBridgeWrapper(event);
156166

157167
const type = getType(letterEvent);
158168

0 commit comments

Comments
 (0)