Skip to content

Commit 829cc29

Browse files
CCM-12858: WIP fixes
1 parent fb231f9 commit 829cc29

File tree

5 files changed

+38
-31
lines changed

5 files changed

+38
-31
lines changed
Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,10 @@
11
resource "aws_lambda_event_source_mapping" "core_notifier_lambda" {
22
event_source_arn = module.sqs_core_notifier.sqs_queue_arn
33
function_name = module.core_notifier.function_arn
4-
starting_position = "TRIM_HORIZON"
5-
batch_size = 50
6-
maximum_batching_window_in_seconds = 10
7-
maximum_retry_attempts = 3
4+
batch_size = var.queue_batch_size
5+
maximum_batching_window_in_seconds = var.queue_batch_window_seconds
86

97
function_response_types = [
108
"ReportBatchItemFailures"
119
]
12-
13-
destination_config {
14-
on_failure {
15-
destination_arn = module.sqs_core_notifier_errors.sqs_queue_arn
16-
}
17-
}
18-
19-
filter_criteria {
20-
filter {
21-
pattern = jsonencode({
22-
eventName : ["REMOVE"]
23-
})
24-
}
25-
}
2610
}

infrastructure/terraform/components/dl/module_lambda_core_notifier.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ module "core_notifier" {
4040
"APIM_ACCESS_TOKEN_SSM_PARAMETER_NAME" = local.apim_access_token_ssm_parameter_name
4141
"EVENT_PUBLISHER_EVENT_BUS_ARN" = aws_cloudwatch_event_bus.main.arn
4242
"EVENT_PUBLISHER_DLQ_URL" = module.sqs_event_publisher_errors.sqs_queue_url
43+
"ENVIRONMENT" = var.environment
4344
}
4445
}
4546

lambdas/core-notifier-lambda/src/__tests__/app/parse-sqs-message.test.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import { InvalidPdmResourceAvailableEvent } from 'domain/invalid-pdm-resource-av
66
import { validPdmEvent } from '__tests__/constants';
77

88
// Import the mocked validator after the mock setup
9-
import { messageDownloadedValidator } from 'digital-letters-events/PDMResourceAvailable.js';
9+
import { messagePDMResourceAvailableValidator } from 'digital-letters-events/PDMResourceAvailable.js';
1010

1111
jest.mock('digital-letters-events/PDMResourceAvailable.js', () => ({
12-
messageDownloadedValidator: jest.fn(),
12+
messagePDMResourceAvailableValidator: jest.fn(),
1313
}));
1414

1515
const mockLogger = mock<Logger>();
@@ -43,7 +43,9 @@ describe('parseSqsRecord', () => {
4343
describe('when SQS record contains a valid PDMResourceAvailable event', () => {
4444
it('parses and returns the PDMResourceAvailable event', () => {
4545
const sqsRecord = createSqsRecord(validPdmEvent);
46-
(messageDownloadedValidator as jest.Mock).mockReturnValueOnce(true);
46+
(messagePDMResourceAvailableValidator as jest.Mock).mockReturnValueOnce(
47+
true,
48+
);
4749

4850
const result = parseSqsRecord(sqsRecord, mockLogger);
4951

@@ -57,7 +59,9 @@ describe('parseSqsRecord', () => {
5759
messageId,
5860
},
5961
);
60-
expect(messageDownloadedValidator).toHaveBeenCalledWith(validPdmEvent);
62+
expect(messagePDMResourceAvailableValidator).toHaveBeenCalledWith(
63+
validPdmEvent,
64+
);
6165
});
6266
});
6367

@@ -74,8 +78,10 @@ describe('parseSqsRecord', () => {
7478
message: "must have required property 'senderId'",
7579
},
7680
];
77-
(messageDownloadedValidator as jest.Mock).mockReturnValueOnce(false);
78-
messageDownloadedValidator.errors = validationErrors;
81+
(messagePDMResourceAvailableValidator as jest.Mock).mockReturnValueOnce(
82+
false,
83+
);
84+
messagePDMResourceAvailableValidator.errors = validationErrors;
7985

8086
expect(() => parseSqsRecord(sqsRecord, mockLogger)).toThrow(
8187
InvalidPdmResourceAvailableEvent,

lambdas/core-notifier-lambda/src/app/parse-sqs-message.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import { SQSRecord } from 'aws-lambda';
22
import { Logger } from 'utils';
33
import { PDMResourceAvailable } from 'digital-letters-events';
44
import { InvalidPdmResourceAvailableEvent } from 'domain/invalid-pdm-resource-available-event';
5-
import { messageDownloadedValidator } from 'digital-letters-events/PDMResourceAvailable.js';
5+
import { messagePDMResourceAvailableValidator } from 'digital-letters-events/PDMResourceAvailable.js';
6+
7+
const eventValidator = messagePDMResourceAvailableValidator as (
8+
d: unknown,
9+
) => d is PDMResourceAvailable;
610

711
export const parseSqsRecord = (
812
sqsRecord: SQSRecord,
@@ -13,10 +17,10 @@ export const parseSqsRecord = (
1317
});
1418
const sqsEventBody = JSON.parse(sqsRecord.body);
1519
const sqsEventDetail = sqsEventBody.detail;
16-
const isEventValid = messageDownloadedValidator(sqsEventDetail);
20+
const isEventValid = eventValidator(sqsEventDetail);
1721
if (!isEventValid) {
1822
logger.error({
19-
err: messageDownloadedValidator.errors,
23+
err: messagePDMResourceAvailableValidator.errors,
2024
description:
2125
'The SQS message does not contain a valid PDMResourceAvailable event',
2226
messageId: sqsRecord.messageId,
@@ -28,5 +32,5 @@ export const parseSqsRecord = (
2832
messageId: sqsRecord.messageId,
2933
});
3034

31-
return sqsEventDetail as PDMResourceAvailable;
35+
return sqsEventDetail;
3236
};

lambdas/core-notifier-lambda/src/infra/event-publisher-facade.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,18 @@ import messageRequestSubmittedValidator from 'digital-letters-events/MessageRequ
88
import messageRequestRejectedValidator from 'digital-letters-events/MessageRequestRejected.js';
99
import messageRequestSkippedValidator from 'digital-letters-events/MessageRequestSkipped.js';
1010

11+
const submittedEventValidator = messageRequestSubmittedValidator as (
12+
d: unknown,
13+
) => d is MessageRequestSubmitted;
14+
15+
const rejectedEventValidator = messageRequestRejectedValidator as (
16+
d: unknown,
17+
) => d is MessageRequestRejected;
18+
19+
const skippedEventValidator = messageRequestSkippedValidator as (
20+
d: unknown,
21+
) => d is MessageRequestSkipped;
22+
1123
export class EventPublisherFacade {
1224
constructor(
1325
private readonly messageRequestSubmittedEventPublisher: EventPublisher,
@@ -24,7 +36,7 @@ export class EventPublisherFacade {
2436
);
2537
this.messageRequestSubmittedEventPublisher.sendEvents<MessageRequestSubmitted>(
2638
[event],
27-
messageRequestSubmittedValidator,
39+
submittedEventValidator,
2840
);
2941
}
3042

@@ -36,7 +48,7 @@ export class EventPublisherFacade {
3648
);
3749
this.messageRequestRejectedEventPublisher.sendEvents<MessageRequestRejected>(
3850
[event],
39-
messageRequestRejectedValidator,
51+
rejectedEventValidator,
4052
);
4153
}
4254

@@ -48,7 +60,7 @@ export class EventPublisherFacade {
4860
);
4961
this.messageRequestSkippedEventPublisher.sendEvents<MessageRequestSkipped>(
5062
[event],
51-
messageRequestSkippedValidator,
63+
skippedEventValidator,
5264
);
5365
}
5466
}

0 commit comments

Comments
 (0)