Skip to content

Commit 85ce2d3

Browse files
CCM-14616: Fixes for E2E integration
* CCM-14616: fix typo in the letter variant sent to Supplier API * CCM-14616: Supplier API upgrade * CCM-14616: changed validation for the incoming subject from Supplier API * CCM-14616: Log adding incoming event to published event * CCM-14616: Status handler subject change * CCM-14616: removed verbose logging * CCM-14616: fix to specific version with Supplier API dependency * CCM-14616: remove redundant code * CCM-14616: remove redundant code * CCM-14616: Address review comments
1 parent badeeeb commit 85ce2d3

9 files changed

Lines changed: 56 additions & 42 deletions

File tree

lambdas/print-sender-lambda/src/__tests__/app/print-sender.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ describe('PrintSender', () => {
7474
url: mockPDFAnalysed.data.letterUri,
7575
clientId: mockPDFAnalysed.data.senderId,
7676
campaignId: 'digitalLetters',
77-
letterVariantId: 'notify-digital-letter-standard',
77+
letterVariantId: 'notify-digital-letters-standard',
7878
}),
7979
}),
8080
]),

lambdas/print-sender-lambda/src/app/print-sender.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export class PrintSender {
4747
url: item.data.letterUri,
4848
clientId: item.data.senderId,
4949
campaignId: 'digitalLetters',
50-
letterVariantId: 'notify-digital-letter-standard',
50+
letterVariantId: 'notify-digital-letters-standard',
5151
},
5252
};
5353

lambdas/print-status-handler/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"dependencies": {
3-
"@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.11",
3+
"@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.17",
44
"digital-letters-events": "^0.0.1",
55
"utils": "^0.0.1",
66
"zod": "^4.1.12"

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ describe('SQS Handler', () => {
4646
type: 'uk.nhs.notify.digital.letters.print.letter.transitioned.v1',
4747
source:
4848
'/nhs/england/notify/production/primary/data-plane/digitalletters/print',
49+
subject:
50+
'client/f47ac10b-58cc-4372-a567-0e02b2c3d479/letter-request/2503cbd5-6722-4e90-9fbd-5f1e96d65c22',
4951
data: {
5052
senderId: acceptedLetterEvent.data.origin.subject.split('/')[1],
5153
messageReference:
@@ -83,6 +85,8 @@ describe('SQS Handler', () => {
8385
type: 'uk.nhs.notify.digital.letters.print.letter.transitioned.v1',
8486
source:
8587
'/nhs/england/notify/production/primary/data-plane/digitalletters/print',
88+
subject:
89+
'client/f47ac10b-58cc-4372-a567-0e02b2c3d480/letter-request/2503cbd5-6722-4e90-9fbd-5f1e96d65c22',
8690
data: {
8791
senderId: failedLetterEvent.data.origin.subject.split('/')[1],
8892
messageReference:
@@ -220,7 +224,7 @@ describe('SQS Handler', () => {
220224
issues: expect.arrayContaining([
221225
expect.objectContaining({
222226
message:
223-
'Subject must be in format: client/{senderId}/digital-letters/{messageReference}',
227+
'Subject must be in format: client/{senderId}/letter-request/{messageReference}',
224228
}),
225229
]),
226230
}),

lambdas/print-status-handler/src/__tests__/test-data.ts

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ export const acceptedLetterEvent = {
66
specversion: '1.0',
77
source: '/data-plane/supplier-api/prod/update-status',
88
subject:
9-
'letter-origin/digital-letters/letter/f47ac10b-58cc-4372-a567-0e02b2c3d479',
9+
'letter-origin/digital-letters/letter/f47ac10b-58cc-4372-a567-0e02b2c3d479_2503cbd5-6722-4e90-9fbd-5f1e96d65c22',
1010
type: 'uk.nhs.notify.supplier-api.letter.ACCEPTED.v1',
1111
dataschema:
12-
'https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.ACCEPTED.1.0.0.schema.json',
13-
dataschemaversion: '1.0.0',
12+
'https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.ACCEPTED.1.0.17.schema.json',
13+
dataschemaversion: '1.0.17',
1414
time: '2023-06-20T12:00:00Z',
1515
recordedtime: '2023-06-20T12:00:00.250Z',
1616
severitynumber: 2,
@@ -19,19 +19,20 @@ export const acceptedLetterEvent = {
1919
severitytext: 'INFO',
2020
plane: 'data',
2121
data: {
22-
domainId: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
22+
domainId:
23+
'f47ac10b-58cc-4372-a567-0e02b2c3d479_2503cbd5-6722-4e90-9fbd-5f1e96d65c22',
2324
groupId: 'client_template',
25+
specificationId: '1y3q9v1zzzz',
26+
supplierId: 'supplier-1',
27+
status: 'ACCEPTED',
28+
billingRef: '1y3q9v1zzzz',
2429
origin: {
2530
domain: 'letter-rendering',
2631
event: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
2732
source: '/data-plane/letter-rendering/prod/render-pdf',
2833
subject:
29-
'client/00f3b388-bbe9-41c9-9e76-052d37ee8988/digital-letters/b9c0c7f8-8204-400d-8348-7e7ddf775dae',
34+
'client/f47ac10b-58cc-4372-a567-0e02b2c3d479/letter-request/2503cbd5-6722-4e90-9fbd-5f1e96d65c22',
3035
},
31-
specificationId: '1y3q9v1zzzz',
32-
supplierId: 'supplier-1',
33-
status: 'ACCEPTED',
34-
billingRef: '1y3q9v1zzzz',
3536
},
3637
} as LetterEvent;
3738

@@ -40,11 +41,11 @@ export const failedLetterEvent = {
4041
specversion: '1.0',
4142
source: '/data-plane/supplier-api/prod/update-status',
4243
subject:
43-
'letter-origin/digital-letters/letter/f47ac10b-58cc-4372-a567-0e02b2c3d480',
44+
'letter-origin/digital-letters/letter/f47ac10b-58cc-4372-a567-0e02b2c3d480_2503cbd5-6722-4e90-9fbd-5f1e96d65c22',
4445
type: 'uk.nhs.notify.supplier-api.letter.FAILED.v1',
4546
dataschema:
46-
'https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.FAILED.1.0.0.schema.json',
47-
dataschemaversion: '1.0.0',
47+
'https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.FAILED.1.0.17.schema.json',
48+
dataschemaversion: '1.0.17',
4849
time: '2023-06-20T13:00:00Z',
4950
recordedtime: '2023-06-20T13:00:00.250Z',
5051
severitynumber: 3,
@@ -53,21 +54,22 @@ export const failedLetterEvent = {
5354
severitytext: 'WARN',
5455
plane: 'data',
5556
data: {
56-
domainId: 'f47ac10b-58cc-4372-a567-0e02b2c3d480',
57+
domainId:
58+
'f47ac10b-58cc-4372-a567-0e02b2c3d480_2503cbd5-6722-4e90-9fbd-5f1e96d65c22',
5759
groupId: 'client_template',
58-
origin: {
59-
domain: 'letter-rendering',
60-
event: 'f47ac10b-58cc-4372-a567-0e02b2c3d480',
61-
source: '/data-plane/letter-rendering/prod/render-pdf',
62-
subject:
63-
'client/00f3b388-bbe9-41c9-9e76-052d37ee8988/digital-letters/c8d1d8g9-9305-511e-9459-8f8eeg886ebf',
64-
},
6560
specificationId: '1y3q9v1zzzz',
6661
supplierId: 'supplier-1',
6762
status: 'FAILED',
6863
billingRef: '1y3q9v1zzzz',
6964
reasonCode: 'FAILURE001',
7065
reasonText: 'Letter has too many pages',
66+
origin: {
67+
domain: 'letter-rendering',
68+
event: 'f47ac10b-58cc-4372-a567-0e02b2c3d480',
69+
source: '/data-plane/letter-rendering/prod/render-pdf',
70+
subject:
71+
'client/f47ac10b-58cc-4372-a567-0e02b2c3d480/letter-request/2503cbd5-6722-4e90-9fbd-5f1e96d65c22',
72+
},
7173
},
7274
} as LetterEvent;
7375

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ type ValidatedRecord = {
2828
const originSubjectSchema = z
2929
.string()
3030
.regex(
31-
/^client\/[^/]+\/digital-letters\/[^/]+$/,
32-
'Subject must be in format: client/{senderId}/digital-letters/{messageReference}',
31+
/^client\/[^/]+\/letter-request\/[^/]+$/,
32+
'Subject must be in format: client/{senderId}/letter-request/{messageReference}',
3333
);
3434

3535
function validateRecord(
@@ -68,6 +68,12 @@ function validateRecord(
6868
return null;
6969
}
7070

71+
logger.info({
72+
description: 'Successfully validated SQS record',
73+
messageId,
74+
subject: item.data.origin.subject,
75+
});
76+
7177
return { messageId, event: item };
7278
} catch (error) {
7379
logger.warn({
@@ -102,6 +108,7 @@ function generateUpdatedEvent(event: LetterEvent): PrintLetterTransitioned {
102108
id: randomUUID(),
103109
time: eventTime,
104110
recordedtime: eventTime,
111+
subject: `client/${senderId}/letter-request/${messageReference}`,
105112
dataschema:
106113
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-print-letter-transitioned-data.schema.json',
107114
type: 'uk.nhs.notify.digital.letters.print.letter.transitioned.v1',

package-lock.json

Lines changed: 5 additions & 5 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/print-status-handler.component.spec.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ const baseLetterEvent = {
1515
id: '550e8400-e29b-41d4-a716-446655440001',
1616
specversion: '1.0',
1717
source: '/data-plane/supplier-api/prod/update-status',
18-
subject:
19-
'letter-origin/digital-letters/letter/f47ac10b-58cc-4372-a567-0e02b2c3d479',
20-
dataschemaversion: '1.0.0',
18+
dataschemaversion: '1.0.17',
2119
time: '2023-06-20T12:00:00Z',
2220
recordedtime: '2023-06-20T12:00:00.250Z',
2321
severitynumber: 2,
@@ -26,16 +24,17 @@ const baseLetterEvent = {
2624
severitytext: 'INFO',
2725
plane: 'data',
2826
data: {
29-
domainId: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
27+
domainId:
28+
'00f3b388-bbe9-41c9-9e76-052d37ee8988_2503cbd5-6722-4e90-9fbd-5f1e96d65c22',
3029
groupId: 'client_template',
30+
specificationId: '1y3q9v1zzzz',
31+
supplierId: 'supplier-1',
32+
billingRef: '1y3q9v1zzzz',
3133
origin: {
3234
domain: 'letter-rendering',
3335
event: 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
3436
source: '/data-plane/letter-rendering/prod/render-pdf',
3537
},
36-
specificationId: '1y3q9v1zzzz',
37-
supplierId: 'supplier-1',
38-
billingRef: '1y3q9v1zzzz',
3938
},
4039
} as LetterEvent;
4140

@@ -64,14 +63,15 @@ test.describe('Print status handler', () => {
6463
const messageReference = uuidv4();
6564
const letterEvent = {
6665
...baseLetterEvent,
66+
subject: `letter-origin/letter-rendering/letter/00f3b388-bbe9-41c9-9e76-052d37ee8988_${messageReference}`,
6767
type: `uk.nhs.notify.supplier-api.letter.${status}.v1`,
68-
dataschema: `https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.${status}.1.0.0.schema.json`,
68+
dataschema: `https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.${status}.1.0.17.schema.json`,
6969
data: {
7070
...baseLetterEvent.data,
7171
status,
7272
origin: {
7373
...baseLetterEvent.data.origin,
74-
subject: `client/00f3b388-bbe9-41c9-9e76-052d37ee8988/digital-letters/${messageReference}`,
74+
subject: `client/00f3b388-bbe9-41c9-9e76-052d37ee8988/letter-request/${messageReference}`,
7575
},
7676
},
7777
};
@@ -104,13 +104,14 @@ test.describe('Print status handler', () => {
104104
[
105105
{
106106
...baseLetterEvent,
107+
subject: `letter-origin/letter-rendering/letter/00f3b388-bbe9-41c9-9e76-052d37ee8988_${messageReference}`,
107108
type: `uk.nhs.notify.supplier-api.letter.ACCEPTED.v1`,
108109
dataschema: `https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.ACCEPTED.1.0.0.schema.json`,
109110
data: {
110111
...baseLetterEvent.data,
111112
origin: {
112113
...baseLetterEvent.data.origin,
113-
subject: `client/00f3b388-bbe9-41c9-9e76-052d37ee8988/digital-letters/${messageReference}`,
114+
subject: `client/00f3b388-bbe9-41c9-9e76-052d37ee8988/letter-request/${messageReference}`,
114115
},
115116
},
116117
},

tests/playwright/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"@aws-sdk/lib-dynamodb": "^3.900.0",
1111
"@aws-sdk/util-dynamodb": "^3.933.0",
1212
"@faker-js/faker": "^9.6.0",
13-
"@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.11",
13+
"@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.17",
1414
"@playwright/test": "^1.51.1",
1515
"csv-parse": "^6.1.0",
1616
"digital-letters-events": "^0.0.1",

0 commit comments

Comments
 (0)