| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 'use strict'
- const { test } = require('tap')
- const { setup, connect, subscribe } = require('./helper')
- for (const qos of [0, 1, 2]) {
- const packet = {
- qos,
- cmd: 'publish',
- topic: 'hello',
- payload: 'world'
- }
- if (qos > 0) packet.messageId = 42
- test('normal client sends a publish message and shall receive it back, qos = ' + qos, function (t) {
- const s = connect(setup())
- t.teardown(s.broker.close.bind(s.broker))
- const handle = setTimeout(() => {
- t.fail('did not receive packet back')
- t.end()
- }, 1000)
- subscribe(t, s, 'hello', qos, function () {
- s.outStream.on('data', (packet) => {
- if (packet.cmd === 'publish') {
- clearTimeout(handle)
- t.end()
- } else if (packet.cmd === 'pubrec') {
- s.inStream.write({ cmd: 'pubrel', messageId: 42 })
- }
- })
- s.inStream.write(packet)
- })
- })
- test('bridge client sends a publish message but shall not receive it back, qos = ' + qos, function (t) {
- // protocolVersion 128 + 4 means mqtt 3.1.1 with bridgeMode enabled
- // https://github.com/mqttjs/mqtt-packet/blob/7f7c2ed8bcb4b2c582851d120a94e0b4a731f661/parser.js#L171
- const s = connect(setup(), { clientId: 'my-client-bridge-1', protocolVersion: 128 + 4 })
- t.teardown(s.broker.close.bind(s.broker))
- const handle = setTimeout(() => t.end(), 1000)
- subscribe(t, s, 'hello', qos, function () {
- s.outStream.on('data', function () {
- clearTimeout(handle)
- t.fail('should not receive packet back')
- t.end()
- })
- s.inStream.write(packet)
- })
- })
- }
|