Skip to content

Commit 7a1a975

Browse files
committed
CCM-13675: Get rid of js validators in lamdbas
1 parent 51ac04d commit 7a1a975

16 files changed

Lines changed: 92 additions & 90 deletions

File tree

lambdas/core-notifier-lambda/src/apis/sqs-handler.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ import {
1010
MessageRequestSkipped,
1111
MessageRequestSubmitted,
1212
PDMResourceAvailable,
13+
validateMessageRequestRejected,
14+
validateMessageRequestSkipped,
15+
validateMessageRequestSubmitted,
1316
} from 'digital-letters-events';
1417
import {
1518
mapPdmEventToMessageRequestRejected,
1619
mapPdmEventToMessageRequestSkipped,
1720
mapPdmEventToMessageRequestSubmitted,
1821
mapPdmEventToSingleMessageRequest,
1922
} from 'domain/mapper';
20-
import messageRequestSubmittedValidator from 'digital-letters-events/MessageRequestSubmitted.js';
21-
import messageRequestRejectedValidator from 'digital-letters-events/MessageRequestRejected.js';
22-
import messageRequestSkippedValidator from 'digital-letters-events/MessageRequestSkipped.js';
2323
import { parseSqsRecord } from 'app/parse-sqs-message';
2424

2525
import type { NotifyMessageProcessor } from 'app/notify-message-processor';
@@ -185,17 +185,17 @@ export const createHandler = ({
185185
submittedEvents.length > 0 &&
186186
eventPublisher.sendEvents<MessageRequestSubmitted>(
187187
submittedEvents,
188-
messageRequestSubmittedValidator,
188+
validateMessageRequestSubmitted,
189189
),
190190
skippedEvents.length > 0 &&
191191
eventPublisher.sendEvents<MessageRequestSkipped>(
192192
skippedEvents,
193-
messageRequestSkippedValidator,
193+
validateMessageRequestSkipped,
194194
),
195195
rejectedEvents.length > 0 &&
196196
eventPublisher.sendEvents<MessageRequestRejected>(
197197
rejectedEvents,
198-
messageRequestRejectedValidator,
198+
validateMessageRequestRejected,
199199
),
200200
].filter(Boolean),
201201
);

lambdas/move-scanned-files-lambda/src/__tests__/domain/mapper.test.ts

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import {
2+
validateFileQuarantined,
3+
validateFileSafe,
4+
} from 'digital-letters-events';
15
import { createFileQuarantinedEvent, createFileSafeEvent } from 'domain/mapper';
2-
import fileSafeValidator from 'digital-letters-events/FileSafe.js';
3-
import fileQuarantinedValidator from 'digital-letters-events/FileQuarantined.js';
6+
import { mock } from 'jest-mock-extended';
7+
import { Logger } from 'utils';
48

59
// Mock randomUUID to make tests deterministic
610
jest.mock('node:crypto', () => ({
@@ -22,6 +26,7 @@ describe('mapper', () => {
2226
});
2327

2428
describe('createFileSafeEvent', () => {
29+
const mockLogger = mock<Logger>();
2530
it('creates a FileSafe event with correct structure', () => {
2631
const messageReference = 'msg-ref-123';
2732
const senderId = 'sender-456';
@@ -52,11 +57,7 @@ describe('mapper', () => {
5257
recordedtime: '2024-01-15T10:30:00.000Z',
5358
severitynumber: 2,
5459
});
55-
const isValid = fileSafeValidator(result);
56-
if (!isValid) {
57-
throw new Error(JSON.stringify(fileSafeValidator.errors, null, 2));
58-
}
59-
expect(isValid).toBe(true);
60+
expect(() => validateFileSafe(result, mockLogger)).not.toThrow();
6061
});
6162

6263
it('handles different input values correctly', () => {
@@ -80,6 +81,8 @@ describe('mapper', () => {
8081
});
8182

8283
describe('createFileQuarantinedEvent', () => {
84+
const mockLogger = mock<Logger>();
85+
8386
it('creates a FileQuarantined event with correct structure', () => {
8487
const messageReference = 'msg-ref-789';
8588
const senderId = 'sender-012';
@@ -110,13 +113,7 @@ describe('mapper', () => {
110113
recordedtime: '2024-01-15T10:30:00.000Z',
111114
severitynumber: 2,
112115
});
113-
const isValid = fileQuarantinedValidator(result);
114-
if (!isValid) {
115-
throw new Error(
116-
JSON.stringify(fileQuarantinedValidator.errors, null, 2),
117-
);
118-
}
119-
expect(isValid).toBe(true);
116+
expect(() => validateFileQuarantined(result, mockLogger)).not.toThrow();
120117
});
121118
});
122119
});

lambdas/move-scanned-files-lambda/src/apis/sqs-handler.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@ import type {
66
SQSRecord,
77
} from 'aws-lambda';
88
import { EventPublisher, Logger } from 'utils';
9-
import { FileQuarantined, FileSafe } from 'digital-letters-events';
10-
import fileSafeValidator from 'digital-letters-events/FileSafe.js';
11-
import fileQuarantinedValidator from 'digital-letters-events/FileQuarantined.js';
9+
import {
10+
FileQuarantined,
11+
FileSafe,
12+
validateFileQuarantined,
13+
validateFileSafe,
14+
} from 'digital-letters-events';
1215
import { parseSqsRecord } from 'app/parse-sqs-message';
1316
import { MoveFileHandler } from 'app/move-file-handler';
1417

@@ -69,14 +72,11 @@ export const createHandler = ({
6972
await Promise.all(
7073
[
7174
fileSafeEvents.length > 0 &&
72-
eventPublisher.sendEvents<FileSafe>(
73-
fileSafeEvents,
74-
fileSafeValidator,
75-
),
75+
eventPublisher.sendEvents<FileSafe>(fileSafeEvents, validateFileSafe),
7676
fileQuarantinedEvents.length > 0 &&
7777
eventPublisher.sendEvents<FileQuarantined>(
7878
fileQuarantinedEvents,
79-
fileQuarantinedValidator,
79+
validateFileQuarantined,
8080
),
8181
].filter(Boolean),
8282
);

lambdas/pdm-poll-lambda/src/apis/sqs-handler.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@ import {
99
PDMResourceRetriesExceeded,
1010
PDMResourceSubmitted,
1111
PDMResourceUnavailable,
12+
validatePDMResourceRetriesExceeded,
1213
validatePDMResourceSubmitted,
1314
validatePDMResourceUnavailable,
1415
} from 'digital-letters-events';
15-
import pdmResourceAvailableValidator from 'digital-letters-events/PDMResourceAvailable.js';
16-
import pdmResourceUnavailableValidator from 'digital-letters-events/PDMResourceUnavailable.js';
17-
import pdmResourceRetriesExceededValidator from 'digital-letters-events/PDMResourceRetriesExceeded.js';
1816
import { randomUUID } from 'node:crypto';
1917
import { EventPublisher, Logger } from 'utils';
2018

@@ -195,17 +193,17 @@ export const createHandler = ({
195193
availableEvents.length > 0 &&
196194
eventPublisher.sendEvents(
197195
availableEvents,
198-
pdmResourceAvailableValidator,
196+
validatePDMResourceUnavailable,
199197
),
200198
unavailableEvents.length > 0 &&
201199
eventPublisher.sendEvents(
202200
unavailableEvents,
203-
pdmResourceUnavailableValidator,
201+
validatePDMResourceUnavailable,
204202
),
205203
retriesExceededEvents.length > 0 &&
206204
eventPublisher.sendEvents(
207205
retriesExceededEvents,
208-
pdmResourceRetriesExceededValidator,
206+
validatePDMResourceRetriesExceeded,
209207
),
210208
].filter(Boolean),
211209
);

lambdas/pdm-uploader-lambda/src/apis/sqs-trigger-lambda.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import type {
99
UploadToPdmOutcome,
1010
UploadToPdmResult,
1111
} from 'app/upload-to-pdm';
12-
import pdmResourceSubmittedValidator from 'digital-letters-events/PDMResourceSubmitted.js';
13-
import pdmResourceSubmissionRejectedValidator from 'digital-letters-events/PDMResourceSubmissionRejected.js';
1412
import {
1513
MESHInboxMessageDownloaded,
1614
PDMResourceSubmitted,
1715
validateMESHInboxMessageDownloaded,
16+
validatePDMResourceSubmissionRejected,
17+
validatePDMResourceSubmitted,
1818
} from 'digital-letters-events';
1919
import { EventPublisher, Logger } from 'utils';
2020

@@ -150,7 +150,7 @@ async function publishSuccessfulEvents(
150150
resourceId,
151151
},
152152
})),
153-
pdmResourceSubmittedValidator,
153+
validatePDMResourceSubmitted,
154154
);
155155
if (submittedFailedEvents.length > 0) {
156156
logger.warn({
@@ -191,7 +191,7 @@ async function publishFailedEvents(
191191
senderId: event.data.senderId,
192192
},
193193
})),
194-
pdmResourceSubmissionRejectedValidator,
194+
validatePDMResourceSubmissionRejected,
195195
);
196196
if (rejectedFailedEvents.length > 0) {
197197
logger.warn({

lambdas/print-analyser/src/apis/sqs-handler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import {
99
FileSafe,
1010
PDFAnalysed,
1111
validateFileSafe,
12+
validatePDFAnalysed,
1213
} from 'digital-letters-events';
13-
import pdfAnalysedValidator from 'digital-letters-events/PDFAnalysed.js';
1414
import { EventPublisher, Logger, getS3ObjectBufferFromUri } from 'utils';
1515

1616
export interface HandlerDependencies {
@@ -130,7 +130,7 @@ export const createHandler = ({
130130
}),
131131
);
132132

133-
await eventPublisher.sendEvents(validEvents, pdfAnalysedValidator);
133+
await eventPublisher.sendEvents(validEvents, validatePDFAnalysed);
134134

135135
const processedItemCount = receivedItemCount - batchItemFailures.length;
136136
logger.info(

lambdas/print-status-handler/src/apis/sqs-handler.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ import {
99
$LetterEvent,
1010
LetterEvent,
1111
} from '@nhsdigital/nhs-notify-event-schemas-supplier-api/src/events/letter-events';
12-
import { PrintLetterTransitioned } from 'digital-letters-events';
13-
import printLetterTransitionedValidator from 'digital-letters-events/PrintLetterTransitioned.js';
12+
import { PrintLetterTransitioned, validatePrintLetterTransitioned } from 'digital-letters-events';
1413
import { EventPublisher, Logger } from 'utils';
1514

1615
export interface HandlerDependencies {
@@ -157,7 +156,7 @@ export const createHandler = ({
157156

158157
await eventPublisher.sendEvents(
159158
validEvents,
160-
printLetterTransitionedValidator,
159+
validatePrintLetterTransitioned,
161160
);
162161

163162
const processedItemCount = receivedItemCount - batchItemFailures.length;

lambdas/report-generator/src/apis/sqs-trigger-lambda.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import type {
99
ReportGeneratorOutcome,
1010
ReportGeneratorResult,
1111
} from 'app/report-generator';
12-
import reportGeneratedValidator from 'digital-letters-events/ReportGenerated.js';
1312
import {
1413
GenerateReport,
1514
ReportGenerated,
1615
validateGenerateReport,
16+
validateReportGenerated,
1717
} from 'digital-letters-events';
1818
import { EventPublisher, Logger } from 'utils';
1919

@@ -145,7 +145,7 @@ async function publishSuccessfulEvents(
145145
const submittedFailedEvents =
146146
await eventPublisher.sendEvents<ReportGenerated>(
147147
reportGeneratedEvents,
148-
reportGeneratedValidator,
148+
validateReportGenerated,
149149
);
150150

151151
return submittedFailedEvents;

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { EventPublisher, Sender } from 'utils';
1+
import { EventPublisher, Logger, Sender } from 'utils';
22
import { ISenderManagement } from 'sender-management';
3-
import { GenerateReport } from 'digital-letters-events';
3+
import { GenerateReport, validateGenerateReport } from 'digital-letters-events';
44
import { createHandler } from 'apis/scheduled-event-handler';
5-
import GenerateReportValidator from 'digital-letters-events/GenerateReport.js';
65

76
describe('scheduled-event-handler', () => {
87
let mockSenderManagement: jest.Mocked<ISenderManagement>;
98
let mockEventPublisher: jest.Mocked<EventPublisher>;
9+
let mockLogger: jest.Mocked<Logger>;
1010

1111
beforeEach(() => {
1212
mockSenderManagement = {
@@ -17,6 +17,13 @@ describe('scheduled-event-handler', () => {
1717
sendEvents: jest.fn(),
1818
} as unknown as jest.Mocked<EventPublisher>;
1919

20+
mockLogger = {
21+
error: jest.fn(),
22+
info: jest.fn(),
23+
warn: jest.fn(),
24+
child: jest.fn().mockReturnThis(),
25+
} as unknown as jest.Mocked<Logger>;
26+
2027
jest.useFakeTimers();
2128
});
2229

@@ -101,9 +108,7 @@ describe('scheduled-event-handler', () => {
101108
expect(event.time).toBe('2024-01-15T12:00:00.000Z');
102109
expect(event.severitynumber).toBe(2);
103110

104-
const isEventValid = GenerateReportValidator(event);
105-
expect(GenerateReportValidator.errors).toBeNull();
106-
expect(isEventValid).toBe(true);
111+
expect(() => validateGenerateReport(event, mockLogger)).not.toThrow();
107112
});
108113

109114
it('should handle empty sender list', async () => {

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { EventPublisher } from 'utils';
22
import { ISenderManagement } from 'sender-management';
3-
import { GenerateReport } from 'digital-letters-events';
4-
import GenerateReportValidator from 'digital-letters-events/GenerateReport.js';
3+
import { GenerateReport, validateGenerateReport } from 'digital-letters-events';
54
import { randomUUID } from 'node:crypto';
65

76
export type CreateHandlerDependencies = {
@@ -37,7 +36,7 @@ export const createHandler = ({
3736
recordedtime: new Date().toISOString(),
3837
severitynumber: 2,
3938
})),
40-
GenerateReportValidator,
39+
validateGenerateReport,
4140
);
4241
};
4342
};

0 commit comments

Comments
 (0)