Mosquitto
Install
| npm install @testcontainers/mosquitto --save-dev
|
Examples
These examples use the following libraries:
Choose an image from the container registry and substitute IMAGE.
Produce/consume a message (anonymous)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | await using container = await new MosquittoContainer(IMAGE).start();
expect(container.getConnectionString()).toBe(`mqtt://${container.getHost()}:${container.getPort()}`);
const mqttClient = await mqtt.connectAsync(container.getConnectionString());
const firstMessagePromise = new Promise<{ topic: string; message: Buffer }>((resolve, reject) => {
mqttClient.once("message", (topic, message) => resolve({ topic, message }));
mqttClient.once("error", (err) => reject(err));
});
await mqttClient.subscribeAsync("test");
await mqttClient.publishAsync("test", "Test Message");
const { message } = await firstMessagePromise;
expect(message.toString()).toEqual("Test Message");
mqttClient.end();
|
Produce/consume a message (with credentials)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | await using container = await new MosquittoContainer(IMAGE)
.withUsername("testuser")
.withPassword("testpass")
.start();
expect(container.getConnectionString()).toBe(
`mqtt://testuser:testpass@${container.getHost()}:${container.getPort()}`
);
const mqttClient = await mqtt.connectAsync(container.getConnectionString());
const firstMessagePromise = new Promise<{ topic: string; message: Buffer }>((resolve, reject) => {
mqttClient.once("message", (topic, message) => resolve({ topic, message }));
mqttClient.once("error", (err) => reject(err));
});
await mqttClient.subscribeAsync("secure");
await mqttClient.publishAsync("secure", "Secure Message");
const { message } = await firstMessagePromise;
expect(message.toString()).toEqual("Secure Message");
mqttClient.end();
|