js-libp2p/test/switch/dialSelf.spec.js
Alex Potsides ae6af20e8e fix: pubsub promisify (#456)
* fix: allow pubsub sub/unsub via promises

* chore: fix linting errors
2019-09-24 14:02:07 +02:00

89 lines
2.3 KiB
JavaScript

'use strict'
/* eslint-env mocha */
const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const { EventEmitter } = require('events')
const PeerBook = require('peer-book')
const Duplex = require('pull-pair/duplex')
const utils = require('./utils')
const createInfos = utils.createInfos
const Swarm = require('../../src/switch')
class MockTransport extends EventEmitter {
constructor () {
super()
this.conn = Duplex()
}
dial (addr, cb) {
const c = this.conn[0]
this.emit('connection', this.conn[1])
setImmediate(() => cb(null, c))
return c
}
listen (addr, cb) {
return cb()
}
filter (mas) {
return Array.isArray(mas) ? mas : [mas]
}
}
describe('dial self', () => {
let swarmA
let peerInfos
before((done) => createInfos(2, (err, infos) => {
expect(err).to.not.exist()
const peerA = infos.shift()
peerInfos = infos
peerA.multiaddrs.add('/ip4/127.0.0.1/tcp/9001')
peerA.multiaddrs.add(`/ip4/127.0.0.1/tcp/9001/ipfs/${peerA.id.toB58String()}`)
peerA.multiaddrs.add(`/ip4/127.0.0.1/tcp/9001/p2p-circuit/ipfs/${peerA.id.toB58String()}`)
peerA.multiaddrs.add('/ip4/0.0.0.0/tcp/9001')
peerA.multiaddrs.add(`/ip4/0.0.0.0/tcp/9001/ipfs/${peerA.id.toB58String()}`)
peerA.multiaddrs.add(`/ip4/0.0.0.0/tcp/9001/p2p-circuit/ipfs/${peerA.id.toB58String()}`)
swarmA = new Swarm(peerA, new PeerBook())
swarmA.transport.add('tcp', new MockTransport())
done()
}))
after((done) => swarmA.stop(done))
it('node should not be able to dial itself', (done) => {
swarmA.dial(swarmA._peerInfo, (err, conn) => {
expect(err).to.exist()
expect(() => { throw err }).to.throw(/A node cannot dial itself/)
expect(conn).to.not.exist()
done()
})
})
it('node should not be able to dial another peers address that matches its own', (done) => {
const peerB = peerInfos.shift()
peerB.multiaddrs.add('/ip4/127.0.0.1/tcp/9001')
peerB.multiaddrs.add('/ip4/0.0.0.0/tcp/9001')
peerB.multiaddrs.add(`/ip4/0.0.0.0/tcp/9001/ipfs/${peerB.id.toB58String()}`)
swarmA.dial(peerB, (err, conn) => {
expect(err).to.exist()
expect(err.code).to.eql('CONNECTION_FAILED')
expect(conn).to.not.exist()
done()
})
})
})