fix: transport should not handle connection if upgradeInbound throws (#16)

* fix: transport should not handle connection if upgradeInbound throws

* chore: address review
This commit is contained in:
Vasco Santos 2019-12-20 16:01:37 +00:00 committed by Jacob Heun
parent 2803e64969
commit ff0313721c
2 changed files with 19 additions and 0 deletions

View File

@ -46,6 +46,7 @@
"libp2p-tcp": "^0.14.1",
"multiaddr": "^7.1.0",
"p-limit": "^2.2.1",
"p-wait-for": "^3.1.0",
"peer-id": "^0.13.3",
"sinon": "^7.5.0",
"streaming-iterables": "^4.1.0"

View File

@ -8,6 +8,7 @@ const expect = chai.expect
chai.use(dirtyChai)
const sinon = require('sinon')
const pWaitFor = require('p-wait-for')
const pipe = require('it-pipe')
const { isValidTick } = require('./utils')
@ -92,6 +93,23 @@ module.exports = (common) => {
expect(upgradeSpy.callCount).to.equal(2)
})
it('should not handle connection if upgradeInbound throws', async () => {
sinon.stub(upgrader, 'upgradeInbound').throws()
const listener = transport.createListener(() => {
throw new Error('should not handle the connection if upgradeInbound throws')
})
// Listen
await listener.listen(addrs[0])
// Create a connection to the listener
const socket = await transport.dial(addrs[0])
await pWaitFor(() => typeof socket.timeline.close === 'number')
await listener.close()
})
describe('events', () => {
it('connection', (done) => {
const upgradeSpy = sinon.spy(upgrader, 'upgradeInbound')