1
0
mirror of https://github.com/fluencelabs/js-libp2p synced 2025-04-01 07:11:04 +00:00
Vasco Santos a020db183a refactor: async routing ()
* feat: async routing

* chore: put dht extra api commands under content routing

* chore: add default option to createPeerInfo

Co-Authored-By: Jacob Heun <jacobheun@gmail.com>

* chore: address review

* chore: rm dlv
2020-01-24 14:40:40 +01:00

67 lines
1.6 KiB
JavaScript

'use strict'
/* eslint-env mocha */
const chai = require('chai')
chai.use(require('dirty-chai'))
const { expect } = chai
const sinon = require('sinon')
const defer = require('p-defer')
const mergeOptions = require('merge-options')
const MulticastDNS = require('libp2p-mdns')
const Libp2p = require('../../src')
const baseOptions = require('../utils/base-options.browser')
const { createPeerInfo } = require('../utils/creators/peer')
describe('peer discovery', () => {
let peerInfo
let remotePeerInfo
let libp2p
before(async () => {
[peerInfo, remotePeerInfo] = await createPeerInfo({ number: 2 })
})
afterEach(async () => {
libp2p && await libp2p.stop()
sinon.reset()
})
it('should dial know peers on startup', async () => {
libp2p = new Libp2p({
...baseOptions,
peerInfo
})
libp2p.peerStore.add(remotePeerInfo)
const deferred = defer()
sinon.stub(libp2p.dialer, 'connectToPeer').callsFake((remotePeerInfo) => {
expect(remotePeerInfo).to.equal(remotePeerInfo)
deferred.resolve()
})
const spy = sinon.spy()
libp2p.on('peer:discovery', spy)
libp2p.start()
await deferred.promise
expect(spy.getCall(0).args).to.eql([remotePeerInfo])
})
it('should ignore self on discovery', async () => {
libp2p = new Libp2p(mergeOptions(baseOptions, {
peerInfo,
modules: {
peerDiscovery: [MulticastDNS]
}
}))
await libp2p.start()
const discoverySpy = sinon.spy()
libp2p.on('peer:discovery', discoverySpy)
libp2p._discovery[0].emit('peer', libp2p.peerInfo)
expect(discoverySpy.called).to.eql(false)
})
})