mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-05-09 17:32:16 +00:00
118 lines
3.3 KiB
JavaScript
118 lines
3.3 KiB
JavaScript
'use strict'
|
|
/* eslint-env mocha */
|
|
|
|
const chai = require('chai')
|
|
chai.use(require('dirty-chai'))
|
|
const { expect } = chai
|
|
|
|
const PeerStore = require('../../src/peer-store')
|
|
const multiaddr = require('multiaddr')
|
|
|
|
const peerUtils = require('../utils/creators/peer')
|
|
|
|
const addr1 = multiaddr('/ip4/127.0.0.1/tcp/8000')
|
|
const addr2 = multiaddr('/ip4/127.0.0.1/tcp/8001')
|
|
const addr3 = multiaddr('/ip4/127.0.0.1/tcp/8002')
|
|
const addr4 = multiaddr('/ip4/127.0.0.1/tcp/8003')
|
|
|
|
const proto1 = '/protocol1'
|
|
const proto2 = '/protocol2'
|
|
const proto3 = '/protocol3'
|
|
|
|
describe('peer-store', () => {
|
|
let peerIds
|
|
before(async () => {
|
|
peerIds = await peerUtils.createPeerId({
|
|
number: 3
|
|
})
|
|
})
|
|
|
|
describe('empty books', () => {
|
|
let peerStore
|
|
|
|
beforeEach(() => {
|
|
peerStore = new PeerStore()
|
|
})
|
|
|
|
it('has an empty map of peers', () => {
|
|
const peers = peerStore.peers
|
|
expect(peers.size).to.equal(0)
|
|
})
|
|
|
|
it('returns false on trying to delete a non existant peerId', () => {
|
|
const deleted = peerStore.delete(peerIds[0])
|
|
expect(deleted).to.equal(false)
|
|
})
|
|
|
|
it('returns undefined on trying to find a non existant peerId', () => {
|
|
const peerInfo = peerStore.find(peerIds[0])
|
|
expect(peerInfo).to.not.exist()
|
|
})
|
|
})
|
|
|
|
describe('previously populated books', () => {
|
|
let peerStore
|
|
|
|
beforeEach(() => {
|
|
peerStore = new PeerStore()
|
|
|
|
// Add peer0 with { addr1, addr2 } and { proto1 }
|
|
peerStore.addressBook.set(peerIds[0], [addr1, addr2])
|
|
peerStore.protoBook.set(peerIds[0], proto1)
|
|
|
|
// Add peer1 with { addr3 } and { proto2, proto3 }
|
|
peerStore.addressBook.set(peerIds[1], [addr3])
|
|
peerStore.protoBook.set(peerIds[1], [proto2, proto3])
|
|
|
|
// Add peer2 { addr4 }
|
|
peerStore.addressBook.set(peerIds[2], [addr4])
|
|
})
|
|
|
|
it('has peers', () => {
|
|
const peers = peerStore.peers
|
|
|
|
expect(peers.size).to.equal(3)
|
|
expect(Array.from(peers.keys())).to.have.members([
|
|
peerIds[0].toString(),
|
|
peerIds[1].toString(),
|
|
peerIds[2].toString()
|
|
])
|
|
})
|
|
|
|
it('returns true on deleting a stored peer', () => {
|
|
const deleted = peerStore.delete(peerIds[0])
|
|
expect(deleted).to.equal(true)
|
|
|
|
const peers = peerStore.peers
|
|
expect(peers.size).to.equal(2)
|
|
expect(Array.from(peers.keys())).to.not.have.members([peerIds[0].toString()])
|
|
})
|
|
|
|
it('returns true on deleting a stored peer which is only on one book', () => {
|
|
const deleted = peerStore.delete(peerIds[2])
|
|
expect(deleted).to.equal(true)
|
|
|
|
const peers = peerStore.peers
|
|
expect(peers.size).to.equal(2)
|
|
})
|
|
|
|
it('finds the stored information of a peer in all its books', () => {
|
|
const peerInfo = peerStore.find(peerIds[0])
|
|
expect(peerInfo).to.exist()
|
|
expect(peerInfo.protocols).to.have.members([proto1])
|
|
|
|
const peerMultiaddrs = peerInfo.multiaddrInfos.map((mi) => mi.multiaddr)
|
|
expect(peerMultiaddrs).to.have.members([addr1, addr2])
|
|
})
|
|
|
|
it('finds the stored information of a peer that is not present in all its books', () => {
|
|
const peerInfo = peerStore.find(peerIds[2])
|
|
expect(peerInfo).to.exist()
|
|
expect(peerInfo.protocols.length).to.eql(0)
|
|
|
|
const peerMultiaddrs = peerInfo.multiaddrInfos.map((mi) => mi.multiaddr)
|
|
expect(peerMultiaddrs).to.have.members([addr4])
|
|
})
|
|
})
|
|
})
|