Skip to content

Commit b585191

Browse files
authored
remove eventbridge wrapper if present (#350)
* remove eventbridge wrapper if present * lint * test type * lint pass
1 parent c277f10 commit b585191

2 files changed

Lines changed: 52 additions & 7 deletions

File tree

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

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,31 @@ function createSqsRecord(msgId: string, body: string): SQSRecord {
3636
};
3737
}
3838

39-
function createNotification(
40-
event:
41-
| LetterRequestPreparedEventV2
42-
| LetterRequestPreparedEvent
43-
| LetterEvent,
39+
type SupportedEvent =
40+
| LetterRequestPreparedEventV2
41+
| LetterRequestPreparedEvent
42+
| LetterEvent;
43+
44+
function createEventBridgeNotification(
45+
event: SupportedEvent,
4446
): Partial<SNSMessage> {
47+
return {
48+
SignatureVersion: "",
49+
Timestamp: "",
50+
Signature: "",
51+
SigningCertUrl: "",
52+
MessageId: "",
53+
Message: createEventBridgeEvent(event),
54+
MessageAttributes: {},
55+
Type: "Notification",
56+
UnsubscribeUrl: "",
57+
TopicArn: "",
58+
Subject: "",
59+
Token: "",
60+
};
61+
}
62+
63+
function createNotification(event: SupportedEvent): Partial<SNSMessage> {
4564
return {
4665
SignatureVersion: "",
4766
Timestamp: "",
@@ -58,6 +77,22 @@ function createNotification(
5877
};
5978
}
6079

80+
function createEventBridgeEvent(event: SupportedEvent): string {
81+
const now = new Date().toISOString();
82+
const eventBridgeEnvelope = {
83+
version: "0",
84+
id: "4f28e649-6832-18e8-7261-4b63e6dcd3b5",
85+
"detail-type": event.type,
86+
source: "custom.event",
87+
account: "815490582396",
88+
time: now,
89+
region: "eu-west-2",
90+
resources: [],
91+
detail: event,
92+
};
93+
return JSON.stringify(eventBridgeEnvelope);
94+
}
95+
6196
function createPreparedV1Event(
6297
overrides: Partial<any> = {},
6398
): LetterRequestPreparedEvent {
@@ -178,7 +213,7 @@ describe("createUpsertLetterHandler", () => {
178213
const evt: SQSEvent = createSQSEvent([
179214
createSqsRecord(
180215
"msg1",
181-
JSON.stringify(createNotification(createPreparedV2Event())),
216+
JSON.stringify(createEventBridgeNotification(createPreparedV2Event())),
182217
),
183218
createSqsRecord(
184219
"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;
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 snsEvent = JSON.parse(message);
164+
165+
const letterEvent: unknown = removeEventBridgeWrapper(snsEvent);
156166

157167
const type = getType(letterEvent);
158168

0 commit comments

Comments
 (0)