首次提交
This commit is contained in:
+57
@@ -0,0 +1,57 @@
|
||||
'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)
|
||||
})
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user