fox-wamp
Version:
Web Application Message Router/Server WAMP/MQTT
62 lines (50 loc) • 1.67 kB
JavaScript
import chai, { expect, assert } from 'chai'
import spies from 'chai-spies'
import promised from 'chai-as-promised'
chai.use(spies)
chai.use(promised)
import { MemServer } from '../lib/hyper/mem_transport'
import { FoxGate } from '../lib/hyper/gate'
import Router from '../lib/router'
describe('25.realm_pipe', async () => {
let
nextPromise,
router,
realm1,
realm2,
api1,
api2
function getNextPackage() {
return new Promise((resolve, reject) => {
nextPromise.push(resolve)
})
}
beforeEach(async () => {
nextPromise = []
router = new Router()
realm1 = await router.getRealm('realm1')
realm2 = await router.getRealm('realm2')
api1 = realm1.api()
api2 = realm2.api()
const memServer = new MemServer(new FoxGate(router))
const pipeClient = memServer.createClient(realm1)
await pipeClient.pipe(realm2.buildApi(), 'pubtest')
await api2.subscribe('pubtest', (event, opt) => {
if (nextPromise.length > 0) {
const promiseResolve = nextPromise.shift()
promiseResolve([opt.topic, event, opt.headers])
} else {
console.log('pubtest event', event, opt)
}
})
})
afterEach(async () => {
assert.isFalse(api1.session().hasSendError(), api1.session().firstSendErrorMessage())
assert.isFalse(api2.session().hasSendError(), api2.session().firstSendErrorMessage())
})
it('pipe-publist', async () => {
const realm2Event = getNextPackage()
await api1.publish('pubtest', {info:'pkg'}, { headers: { test: 'value' } })
assert.deepEqual(await realm2Event, ['pubtest', {info:'pkg'}, { test: 'value' }])
})
})