Skip to content

Commit bcd8451

Browse files
authored
Merge branch 'main' into feature/CCM-14482_mesh_negative_acknowledgement
2 parents 38441d2 + 611f186 commit bcd8451

7 files changed

Lines changed: 36 additions & 20 deletions

File tree

lambdas/ttl-create-lambda/src/__tests__/infra/ttl-repository.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ describe('TtlRepository', () => {
6363
expect(putCommand.input).toStrictEqual({
6464
TableName: tableName,
6565
Item: {
66-
PK: messageDownloadedEvent.data.messageUri,
66+
PK: `${messageDownloadedEvent.data.senderId}_${messageDownloadedEvent.data.messageReference}`,
6767
SK: 'TTL',
6868
dateOfExpiry: expectedDateOfExpiry,
6969
event: messageDownloadedEvent,

lambdas/ttl-create-lambda/src/infra/ttl-repository.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export class TtlRepository {
3232

3333
this.logger.info({
3434
description: 'Inserting item into TTL table',
35-
PK: item.data.messageUri,
35+
PK: `${item.data.senderId}_${item.data.messageReference}`,
3636
ttlTime,
3737
});
3838

@@ -60,7 +60,7 @@ export class TtlRepository {
6060
new PutCommand({
6161
TableName: this.tableName,
6262
Item: {
63-
PK: event.data.messageUri,
63+
PK: `${event.data.senderId}_${event.data.messageReference}`,
6464
SK: 'TTL',
6565
ttl: ttlTime,
6666
dateOfExpiry: ttlGsiPk,

lambdas/ttl-handle-expiry-lambda/src/__tests__/apis/dynamodb-stream-handler.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ const mockEvent: DynamoDBStreamEvent = {
2121
dynamodb: {
2222
ApproximateCreationDateTime: 1_234_567_890,
2323
Keys: {
24-
PK: { S: 'https://example.com/ttl/resource' },
24+
PK: { S: 'sender1_ref1' },
2525
SK: { S: 'METADATA' },
2626
},
2727
OldImage: {
28-
PK: { S: 'https://example.com/ttl/resource' },
28+
PK: { S: 'sender1_ref1' },
2929
SK: { S: 'METADATA' },
3030
dateOfExpiry: { S: 'dateOfExpiry' },
3131
event: {

lambdas/ttl-handle-expiry-lambda/src/apis/dynamodb-stream-handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export const createHandler = ({
7070
logger.info({
7171
description: 'ItemDequeued event not sent as item withdrawn',
7272
messageReference: itemEvent.data.messageReference,
73-
messageUri: item.PK,
73+
messageUri: itemEvent.data.messageUri,
7474
senderId: itemEvent.data.senderId,
7575
});
7676
} else {

tests/playwright/digital-letters-component-tests/ttl-create.component.spec.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ test.describe('Digital Letters - Create TTL', () => {
5252
test('should create TTL and publish item enqueued event following message downloaded event', async () => {
5353
const letterId = uuidv4();
5454
const messageUri = `https://example.com/ttl/resource/${letterId}`;
55+
const messageReference = letterId;
5556

5657
await eventPublisher.sendEvents<MESHInboxMessageDownloaded>(
5758
[
@@ -61,6 +62,7 @@ test.describe('Digital Letters - Create TTL', () => {
6162
data: {
6263
...baseEvent.data,
6364
messageUri,
65+
messageReference,
6466
},
6567
},
6668
],
@@ -69,7 +71,10 @@ test.describe('Digital Letters - Create TTL', () => {
6971

7072
// Verify TTL created
7173
await expectToPassEventually(async () => {
72-
const ttl = await getTtl(messageUri);
74+
const ttl = await getTtl(
75+
SENDER_ID_VALID_FOR_NOTIFY_SANDBOX,
76+
messageReference,
77+
);
7378

7479
expect(ttl.length).toBe(1);
7580
});
@@ -92,6 +97,7 @@ test.describe('Digital Letters - Create TTL', () => {
9297
test('should create TTL and publish item enqueued event following message downloaded event - direct to print', async () => {
9398
const letterId = uuidv4();
9499
const messageUri = `https://example.com/ttl/resource/${letterId}`;
100+
const messageReference = letterId;
95101

96102
await eventPublisher.sendEvents<MESHInboxMessageDownloaded>(
97103
[
@@ -101,6 +107,7 @@ test.describe('Digital Letters - Create TTL', () => {
101107
data: {
102108
...baseEvent.data,
103109
messageUri,
110+
messageReference,
104111
senderId: SENDER_ID_SKIPS_NOTIFY,
105112
},
106113
},
@@ -110,7 +117,7 @@ test.describe('Digital Letters - Create TTL', () => {
110117

111118
// Verify TTL created
112119
await expectToPassEventually(async () => {
113-
const ttl = await getTtl(messageUri);
120+
const ttl = await getTtl(SENDER_ID_SKIPS_NOTIFY, messageReference);
114121

115122
expect(ttl.length).toBe(1);
116123
});

tests/playwright/digital-letters-component-tests/ttl-handle.component.spec.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,21 @@ test.describe('Digital Letters - Handle TTL', () => {
4040
test('should handle withdrawn item', async () => {
4141
const letterId = uuidv4();
4242
const messageUri = `https://example.com/ttl/resource/${letterId}`;
43+
const messageReference = letterId;
44+
const { senderId } = baseEvent.data;
4345

4446
const event = {
4547
...baseEvent,
4648
id: letterId,
4749
data: {
4850
...baseEvent.data,
4951
messageUri,
52+
messageReference,
5053
},
5154
} satisfies MESHInboxMessageDownloaded;
5255

5356
const ttlItem = {
54-
PK: messageUri,
57+
PK: `${senderId}_${messageReference}`,
5558
SK: 'TTL',
5659
dateOfExpiry: '2023-12-31#0',
5760
event,
@@ -62,7 +65,7 @@ test.describe('Digital Letters - Handle TTL', () => {
6265
const putResponseCode = await putTtl(ttlItem);
6366
expect(putResponseCode).toBe(200);
6467

65-
const deleteResponseCode = await deleteTtl(messageUri);
68+
const deleteResponseCode = await deleteTtl(senderId, messageReference);
6669
expect(deleteResponseCode).toBe(200);
6770

6871
await expectToPassEventually(async () => {
@@ -81,18 +84,21 @@ test.describe('Digital Letters - Handle TTL', () => {
8184
test('should handle expired item', async () => {
8285
const letterId = uuidv4();
8386
const messageUri = `https://example.com/ttl/resource/${letterId}`;
87+
const messageReference = letterId;
88+
const { senderId } = baseEvent.data;
8489

8590
const event = {
8691
...baseEvent,
8792
id: letterId,
8893
data: {
8994
...baseEvent.data,
9095
messageUri,
96+
messageReference,
9197
},
9298
} satisfies MESHInboxMessageDownloaded;
9399

94100
const ttlItem = {
95-
PK: messageUri,
101+
PK: `${senderId}_${messageReference}`,
96102
SK: 'TTL',
97103
dateOfExpiry: '2023-12-31#0',
98104
event,
@@ -102,7 +108,7 @@ test.describe('Digital Letters - Handle TTL', () => {
102108
const putResponseCode = await putTtl(ttlItem);
103109
expect(putResponseCode).toBe(200);
104110

105-
const deleteResponseCode = await deleteTtl(messageUri);
111+
const deleteResponseCode = await deleteTtl(senderId, messageReference);
106112
expect(deleteResponseCode).toBe(200);
107113

108114
await expectToPassEventually(async () => {
@@ -123,7 +129,8 @@ test.describe('Digital Letters - Handle TTL', () => {
123129
test.setTimeout(160_000);
124130

125131
const letterId = uuidv4();
126-
const messageUri = `https://example.com/ttl/resource/${letterId}`;
132+
const messageReference = letterId;
133+
const { senderId } = baseEvent.data;
127134

128135
const eventWithNoMessageUri = {
129136
...baseEvent,
@@ -135,7 +142,7 @@ test.describe('Digital Letters - Handle TTL', () => {
135142
};
136143

137144
const ttlItem = {
138-
PK: messageUri,
145+
PK: `${senderId}_${messageReference}`,
139146
SK: 'TTL',
140147
dateOfExpiry: '2023-12-31#0',
141148
event: eventWithNoMessageUri,
@@ -145,7 +152,7 @@ test.describe('Digital Letters - Handle TTL', () => {
145152
const putResponseCode = await putTtl(ttlItem);
146153
expect(putResponseCode).toBe(200);
147154

148-
const deleteResponseCode = await deleteTtl(messageUri);
155+
const deleteResponseCode = await deleteTtl(senderId, messageReference);
149156
expect(deleteResponseCode).toBe(200);
150157

151158
await expectMessageContainingString(HANDLE_TTL_DLQ_NAME, letterId, 150);

tests/playwright/helpers/dynamodb-helpers.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@ import { TtlDynamodbRecord } from 'utils';
1212

1313
const dynamoDbClient = new DynamoDBClient({ region: REGION });
1414

15-
export async function getTtl(messageUri: string) {
15+
export async function getTtl(senderId: string, messageReference: string) {
16+
const pk = `${senderId}_${messageReference}`;
1617
const params = {
1718
TableName: TTL_TABLE_NAME,
18-
KeyConditionExpression: `PK = :messageUri`,
19+
KeyConditionExpression: `PK = :pk`,
1920
ExpressionAttributeValues: {
20-
':messageUri': messageUri,
21+
':pk': pk,
2122
},
2223
};
2324
const request = new QueryCommand(params);
@@ -37,12 +38,13 @@ export async function putTtl(ttlItem: TtlDynamodbRecord) {
3738
return output.$metadata.httpStatusCode;
3839
}
3940

40-
export async function deleteTtl(messageUri: string) {
41+
export async function deleteTtl(senderId: string, messageReference: string) {
42+
const pk = `${senderId}_${messageReference}`;
4143
const params = {
4244
TableName: TTL_TABLE_NAME,
4345
Key: {
4446
PK: {
45-
S: messageUri,
47+
S: pk,
4648
},
4749
SK: {
4850
S: 'TTL',

0 commit comments

Comments
 (0)