fix: expose the muxed stream interface on inbound streams

This commit is contained in:
Jacob Heun
2020-05-26 13:55:40 +02:00
parent 698c1df1b4
commit 52a615f922
2 changed files with 36 additions and 1 deletions

View File

@ -4,6 +4,7 @@
const { Buffer } = require('buffer')
const chai = require('chai')
chai.use(require('dirty-chai'))
chai.use(require('chai-as-promised'))
const { expect } = chai
const sinon = require('sinon')
const Muxer = require('libp2p-mplex')
@ -401,6 +402,40 @@ describe('libp2p.upgrader', () => {
expect(libp2p.upgrader.protocols.get('/echo/1.0.1')).to.equal(echoHandler)
})
it('should return muxed streams', async () => {
const remotePeer = peers[1]
libp2p = new Libp2p({
peerId: peers[0],
modules: {
transport: [Transport],
streamMuxer: [Muxer],
connEncryption: [Crypto]
}
})
const echoHandler = () => {}
libp2p.handle(['/echo/1.0.0'], echoHandler)
const remoteUpgrader = new Upgrader({
localPeer: remotePeer,
muxers: new Map([[Muxer.multicodec, Muxer]]),
cryptos: new Map([[Crypto.protocol, Crypto]])
})
remoteUpgrader.protocols.set('/echo/1.0.0', echoHandler)
const { inbound, outbound } = mockMultiaddrConnPair({ addrs, remotePeer })
const [localConnection] = await Promise.all([
libp2p.upgrader.upgradeOutbound(outbound),
remoteUpgrader.upgradeInbound(inbound)
])
sinon.spy(remoteUpgrader, '_onStream')
const { stream } = await localConnection.newStream(['/echo/1.0.0'])
expect(stream).to.include.keys(['id', 'close', 'reset', 'timeline'])
const [arg0] = remoteUpgrader._onStream.getCall(0).args
expect(arg0.stream).to.include.keys(['id', 'close', 'reset', 'timeline'])
})
it('should emit connect and disconnect events', async () => {
const remotePeer = peers[1]
libp2p = new Libp2p({