Skip to content

Commit 67c9f40

Browse files
committed
CCM-13303: Address comments + update Generate Report schema
1 parent 12bf48c commit 67c9f40

7 files changed

Lines changed: 12 additions & 105 deletions

File tree

.trivyignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,3 @@
22
CVE-2024-49761 # https://avd.aquasec.com/nvd/cve-2024-49761 ## latest Jekyll Webpack (0.2.7) installs old version of rexml
33
CVE-2024-47220 # https://avd.aquasec.com/nvd/cve-2024-47220 ## latest lint_roller (1.1.0) installs old version of rexml
44
CVE-2024-7254 # https://avd.aquasec.com/nvd/cve-2024-7254 ## latest Jekyll Webpack (0.2.7) installs old version of google-protobuf
5-
CVE-2026-25128

lambdas/report-scheduler/package.json

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
11
{
22
"dependencies": {
3-
"aws-lambda": "^1.0.7",
43
"digital-letters-events": "^0.0.1",
54
"sender-management": "^0.0.1",
65
"utils": "^0.0.1"
76
},
87
"devDependencies": {
98
"@tsconfig/node22": "^22.0.2",
10-
"@types/aws-lambda": "^8.10.155",
11-
"@types/jest": "^29.5.14",
12-
"@types/lodash": "^4.17.20",
13-
"aws-sdk-client-mock": "^4.1.0",
14-
"aws-sdk-client-mock-jest": "^4.1.0",
159
"jest": "^29.7.0",
16-
"jest-mock-extended": "^3.0.7",
1710
"typescript": "^5.9.3"
1811
},
1912
"name": "nhs-notify-digital-letters-report-scheduler-lambda",

lambdas/report-scheduler/src/__tests__/apis/scheduled-event-handler.test.ts

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,14 @@
1-
import { EventPublisher, Logger, Sender } from 'utils';
1+
import { EventPublisher, Sender } from 'utils';
22
import { ISenderManagement } from 'sender-management';
33
import { GenerateReport } from 'digital-letters-events';
44
import { createHandler } from 'apis/scheduled-event-handler';
55
import GenerateReportValidator from 'digital-letters-events/GenerateReport.js';
66

77
describe('scheduled-event-handler', () => {
8-
let mockLogger: jest.Mocked<Logger>;
98
let mockSenderManagement: jest.Mocked<ISenderManagement>;
109
let mockEventPublisher: jest.Mocked<EventPublisher>;
1110

1211
beforeEach(() => {
13-
mockLogger = {
14-
debug: jest.fn(),
15-
info: jest.fn(),
16-
warn: jest.fn(),
17-
error: jest.fn(),
18-
} as unknown as jest.Mocked<Logger>;
19-
2012
mockSenderManagement = {
2113
listSenders: jest.fn(),
2214
} as unknown as jest.Mocked<ISenderManagement>;
@@ -33,34 +25,11 @@ describe('scheduled-event-handler', () => {
3325
});
3426

3527
describe('createHandler', () => {
36-
it('should calculate yesterday date range correctly', async () => {
37-
const mockDate = new Date('2024-01-15T12:00:00.000Z');
38-
jest.setSystemTime(mockDate);
39-
40-
mockSenderManagement.listSenders.mockResolvedValue([]);
41-
mockEventPublisher.sendEvents.mockResolvedValue([]);
42-
43-
const handler = createHandler({
44-
logger: mockLogger,
45-
senderManagement: mockSenderManagement,
46-
eventPublisher: mockEventPublisher,
47-
});
48-
49-
await handler();
50-
51-
expect(mockLogger.debug).toHaveBeenCalledWith({
52-
description: 'Calculated yesterday date range',
53-
yesterdayStart: '2024-01-14T00:00:00.000Z',
54-
yesterdayEnd: '2024-01-14T23:59:59.999Z',
55-
});
56-
});
57-
5828
it('should retrieve senders from sender management', async () => {
5929
mockSenderManagement.listSenders.mockResolvedValue([]);
6030
mockEventPublisher.sendEvents.mockResolvedValue([]);
6131

6232
const handler = createHandler({
63-
logger: mockLogger,
6433
senderManagement: mockSenderManagement,
6534
eventPublisher: mockEventPublisher,
6635
});
@@ -84,7 +53,6 @@ describe('scheduled-event-handler', () => {
8453
mockEventPublisher.sendEvents.mockResolvedValue([]);
8554

8655
const handler = createHandler({
87-
logger: mockLogger,
8856
senderManagement: mockSenderManagement,
8957
eventPublisher: mockEventPublisher,
9058
});
@@ -110,7 +78,6 @@ describe('scheduled-event-handler', () => {
11078
mockEventPublisher.sendEvents.mockResolvedValue([]);
11179

11280
const handler = createHandler({
113-
logger: mockLogger,
11481
senderManagement: mockSenderManagement,
11582
eventPublisher: mockEventPublisher,
11683
});
@@ -121,8 +88,7 @@ describe('scheduled-event-handler', () => {
12188
const event = events[0] as GenerateReport;
12289

12390
expect(event.data.senderId).toBe('test-sender-123');
124-
expect(event.data.reportPeriodStartTime).toBe('2024-01-14T00:00:00.000Z');
125-
expect(event.data.reportPeriodEndTime).toBe('2024-01-14T23:59:59.999Z');
91+
expect(event.data.reportDate).toBe('2024-01-14');
12692
expect(event.specversion).toBe('1.0');
12793
expect(event.id).toBeDefined();
12894
expect(event.source).toBe(
@@ -145,7 +111,6 @@ describe('scheduled-event-handler', () => {
145111
mockEventPublisher.sendEvents.mockResolvedValue([]);
146112

147113
const handler = createHandler({
148-
logger: mockLogger,
149114
senderManagement: mockSenderManagement,
150115
eventPublisher: mockEventPublisher,
151116
});
@@ -161,7 +126,6 @@ describe('scheduled-event-handler', () => {
161126
mockSenderManagement.listSenders.mockRejectedValue(error);
162127

163128
const handler = createHandler({
164-
logger: mockLogger,
165129
senderManagement: mockSenderManagement,
166130
eventPublisher: mockEventPublisher,
167131
});
@@ -178,7 +142,6 @@ describe('scheduled-event-handler', () => {
178142
mockEventPublisher.sendEvents.mockRejectedValue(error);
179143

180144
const handler = createHandler({
181-
logger: mockLogger,
182145
senderManagement: mockSenderManagement,
183146
eventPublisher: mockEventPublisher,
184147
});
@@ -196,7 +159,6 @@ describe('scheduled-event-handler', () => {
196159
mockEventPublisher.sendEvents.mockResolvedValue([]);
197160

198161
const handler = createHandler({
199-
logger: mockLogger,
200162
senderManagement: mockSenderManagement,
201163
eventPublisher: mockEventPublisher,
202164
});

lambdas/report-scheduler/src/apis/scheduled-event-handler.ts

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,30 @@
1-
import { EventPublisher, Logger } from 'utils';
1+
import { EventPublisher } from 'utils';
22
import { ISenderManagement } from 'sender-management';
33
import { GenerateReport } from 'digital-letters-events';
44
import GenerateReportValidator from 'digital-letters-events/GenerateReport.js';
55
import { randomUUID } from 'node:crypto';
66

77
export type CreateHandlerDependencies = {
8-
logger: Logger;
98
senderManagement: ISenderManagement;
109
eventPublisher: EventPublisher;
1110
};
1211

1312
export const createHandler = ({
1413
eventPublisher,
15-
logger,
1614
senderManagement,
1715
}: CreateHandlerDependencies) => {
18-
function yesterdayDateRange() {
19-
const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000);
20-
const yesterdayStart = new Date(yesterday.setUTCHours(0, 0, 0, 0));
21-
const yesterdayEnd = new Date(yesterday.setUTCHours(23, 59, 59, 999));
22-
23-
logger.debug({
24-
description: 'Calculated yesterday date range',
25-
yesterdayStart: yesterdayStart.toISOString(),
26-
yesterdayEnd: yesterdayEnd.toISOString(),
27-
});
28-
29-
return { yesterdayStart, yesterdayEnd };
30-
}
31-
3216
return async () => {
33-
const { yesterdayEnd, yesterdayStart } = yesterdayDateRange();
17+
const yesterday = new Date();
18+
yesterday.setDate(yesterday.getDate() - 1);
19+
const yesterdayString = yesterday.toISOString().split('T')[0];
3420

3521
const senders = await senderManagement.listSenders();
3622

3723
await eventPublisher.sendEvents<GenerateReport>(
3824
senders.map((sender) => ({
3925
data: {
4026
senderId: sender.senderId,
41-
reportPeriodStartTime: yesterdayStart.toISOString(),
42-
reportPeriodEndTime: yesterdayEnd.toISOString(),
27+
reportDate: yesterdayString,
4328
},
4429
specversion: '1.0',
4530
id: randomUUID(),

lambdas/report-scheduler/src/container.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export const createContainer = (): CreateHandlerDependencies => {
2525
eventBridgeClient,
2626
});
2727

28-
return { logger, senderManagement, eventPublisher };
28+
return { senderManagement, eventPublisher };
2929
};
3030

3131
export default createContainer;

package-lock.json

Lines changed: 0 additions & 33 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/playwright/digital-letters-component-tests/report-scheduler.component.spec.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
EVENT_BUS_LOG_GROUP_NAME,
44
REPORT_SCHEDULER_LAMBDA_NAME,
55
} from 'constants/backend-constants';
6+
import { SENDER_ID_SKIPS_NOTIFY, SENDER_ID_THAT_TRIGGERS_ERROR_IN_NOTIFY_SANDBOX, SENDER_ID_VALID_FOR_NOTIFY_SANDBOX } from 'constants/tests-constants';
67
import { getLogsFromCloudwatch } from 'helpers/cloudwatch-helpers';
78
import expectToPassEventually from 'helpers/expectations';
89
import { invokeLambda } from 'helpers/lambda-helpers';
@@ -48,9 +49,9 @@ test.describe('Digital Letters - Report Scheduler', () => {
4849
}
4950

5051
const senderIds = parsedEvents.map((event) => event.data.senderId);
51-
expect(senderIds).toContain('2b8ebb33-8b33-49bd-949e-c12e22d25320');
52-
expect(senderIds).toContain('f017669b-6da4-4576-9d59-3d2b7f005ae2');
53-
expect(senderIds).toContain('67403568-166e-41d0-900a-1f31fe93a091');
52+
expect(senderIds).toContain(SENDER_ID_VALID_FOR_NOTIFY_SANDBOX);
53+
expect(senderIds).toContain(SENDER_ID_THAT_TRIGGERS_ERROR_IN_NOTIFY_SANDBOX);
54+
expect(senderIds).toContain(SENDER_ID_SKIPS_NOTIFY);
5455
}, 120);
5556
});
5657
});

0 commit comments

Comments
 (0)