-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathsqs-helpers.ts
More file actions
64 lines (55 loc) · 1.57 KB
/
sqs-helpers.ts
File metadata and controls
64 lines (55 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import {
DeleteMessageBatchCommand,
ReceiveMessageCommand,
ReceiveMessageCommandInput,
} from '@aws-sdk/client-sqs';
import { expect } from '@playwright/test';
import { SQS_URL_PREFIX } from 'constants/backend-constants';
import { sqsClient } from 'utils';
import expectToPassEventually from 'helpers/expectations';
function getQueueUrl(queueName: string) {
return `${SQS_URL_PREFIX}${queueName}`;
}
export async function expectMessageContainingString(
queueName: string,
searchTerm: string,
) {
const input: ReceiveMessageCommandInput = {
QueueUrl: getQueueUrl(queueName),
MaxNumberOfMessages: 10,
WaitTimeSeconds: 1,
VisibilityTimeout: 2,
};
await expectToPassEventually(async () => {
const result = await sqsClient.send(new ReceiveMessageCommand(input));
const polledMessages = result.Messages || [];
expect(
polledMessages.find((m) => (m.Body ?? '').includes(searchTerm)),
).toBeDefined();
});
}
export async function purgeQueue(queueName: string) {
const queueUrl = getQueueUrl(queueName);
for (;;) {
const result = await sqsClient.send(
new ReceiveMessageCommand({
QueueUrl: queueUrl,
MaxNumberOfMessages: 10,
WaitTimeSeconds: 1,
}),
);
const messages = result.Messages || [];
if (messages.length === 0) {
break;
}
await sqsClient.send(
new DeleteMessageBatchCommand({
QueueUrl: queueUrl,
Entries: messages.map((msg, index) => ({
Id: index.toString(),
ReceiptHandle: msg.ReceiptHandle!,
})),
}),
);
}
}