@@ -2,11 +2,12 @@ import { expect, test } from '@playwright/test';
22import {
33 ENV ,
44 MESH_DOWNLOAD_DLQ_NAME ,
5- MESH_POLL_DLQ_NAME ,
65 MESH_POLL_LAMBDA_NAME ,
76 NON_PII_S3_BUCKET_NAME ,
7+ PII_S3_BUCKET_NAME ,
88} from 'constants/backend-constants' ;
99import { getLogsFromCloudwatch } from 'helpers/cloudwatch-helpers' ;
10+ import eventPublisher from 'helpers/event-bus-helpers' ;
1011import expectToPassEventually from 'helpers/expectations' ;
1112import { invokeLambda } from 'helpers/lambda-helpers' ;
1213import { downloadFromS3 , uploadToS3 } from 'helpers/s3-helpers' ;
@@ -72,7 +73,6 @@ test.describe('Digital Letters - MESH Poll and Download', () => {
7273 }
7374
7475 async function expectMeshInboxMessageDownloadedEvent (
75- meshMessageId : string ,
7676 messageReference : string ,
7777 ) : Promise < void > {
7878 await expectToPassEventually ( async ( ) => {
@@ -81,7 +81,6 @@ test.describe('Digital Letters - MESH Poll and Download', () => {
8181 [
8282 '$.message_type = "EVENT_RECEIPT"' ,
8383 '$.details.detail_type = "uk.nhs.notify.digital.letters.mesh.inbox.message.downloaded.v1"' ,
84- `$.details.event_detail = "*\\"meshMessageId\\":\\"${ meshMessageId } \\"*"` ,
8584 `$.details.event_detail = "*\\"messageReference\\":\\"${ messageReference } \\"*"` ,
8685 `$.details.event_detail = "*\\"senderId\\":\\"${ senderId } \\"*"` ,
8786 ] ,
@@ -107,14 +106,13 @@ test.describe('Digital Letters - MESH Poll and Download', () => {
107106
108107 await expectMeshInboxMessageReceivedEvent ( meshMessageId ) ;
109108 await expectMeshInboxMessageDownloadedEvent (
110- meshMessageId ,
111109 messageReference ,
112110 ) ;
113111
114112 await expectToPassEventually ( async ( ) => {
115113 const storedMessage = await downloadFromS3 (
116- NON_PII_S3_BUCKET_NAME ,
117- `mesh-downloads /${ senderId } / ${ messageReference } ` ,
114+ PII_S3_BUCKET_NAME ,
115+ `document-reference /${ senderId } _ ${ messageReference } ` ,
118116 ) ;
119117
120118 expect ( storedMessage . body ) . toContain ( messageContent ) ;
@@ -130,55 +128,39 @@ test.describe('Digital Letters - MESH Poll and Download', () => {
130128 } , 60_000 ) ;
131129 } ) ;
132130
133- test ( 'should handle invalid sender and send to DLQ' , async ( ) => {
134- test . setTimeout ( 300_000 ) ;
135-
136- const meshMessageId = `${ Date . now ( ) } _INVALID_${ uuidv4 ( ) . slice ( 0 , 8 ) } ` ;
137- const messageReference = uuidv4 ( ) ;
138- const messageContent = JSON . stringify ( {
139- senderId : 'unknown-sender' ,
140- messageReference,
141- testData : 'This should fail validation' ,
142- } ) ;
143-
144- await uploadMeshMessageWithSender (
145- meshMessageId ,
146- messageReference ,
147- messageContent ,
148- 'unknown-mesh-sender' ,
149- ) ;
150-
151- await invokeLambda ( MESH_POLL_LAMBDA_NAME ) ;
152-
153- await expectMessageContainingString ( MESH_POLL_DLQ_NAME , meshMessageId , 240 ) ;
154- } ) ;
155-
156131 test ( 'should send message to mesh-download DLQ when download fails' , async ( ) => {
157132 test . setTimeout ( 400_000 ) ;
158133
159- const meshMessageId = `${ Date . now ( ) } _DLQ_${ uuidv4 ( ) . slice ( 0 , 8 ) } ` ;
134+ const invalidMeshMessageId = `${ Date . now ( ) } _DLQ_${ uuidv4 ( ) . slice ( 0 , 8 ) } ` ;
160135 const messageReference = uuidv4 ( ) ;
161- const invalidMessageUri =
162- 'https://example.com/invalid/nonexistent-resource' ;
163136
164- await uploadMeshMessage (
165- meshMessageId ,
166- messageReference ,
167- JSON . stringify ( {
168- senderId,
169- messageReference,
170- messageUri : invalidMessageUri ,
171- testData : 'This message has an invalid URI' ,
172- } ) ,
137+ await eventPublisher . sendEvents (
138+ [
139+ {
140+ id : uuidv4 ( ) ,
141+ specversion : '1.0' ,
142+ source : '/nhs/england/notify/development/primary/data-plane/digitalletters/mesh' ,
143+ subject : 'customer/00000000-0000-0000-0000-000000000000/recipient/00000000-0000-0000-0000-000000000000' ,
144+ type : 'uk.nhs.notify.digital.letters.mesh.inbox.message.received.v1' ,
145+ time : '2026-01-20T15:48:21.636284+00:00' ,
146+ recordedtime : '2026-01-20T15:48:21.636284+00:00' ,
147+ severitynumber : 2 ,
148+ severitytext : 'INFO' ,
149+ traceparent : '00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01' ,
150+ dataschema : 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-mesh-inbox-message-received-data.schema.json' ,
151+ data : {
152+ meshMessageId : invalidMeshMessageId ,
153+ senderId,
154+ messageReference,
155+ } ,
156+ }
157+ ] ,
158+ ( ) => true ,
173159 ) ;
174160
175- await invokeLambda ( MESH_POLL_LAMBDA_NAME ) ;
176-
177- await expectMeshInboxMessageReceivedEvent ( meshMessageId ) ;
178-
179161 await expectMessageContainingString (
180162 MESH_DOWNLOAD_DLQ_NAME ,
181- meshMessageId ,
163+ invalidMeshMessageId ,
182164 300 ,
183165 ) ;
184166 } ) ;
0 commit comments