mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-06-23 05:51:37 +00:00
fix: remove ipfs dependency and upgrade multiaddr (#1387)
- Upgrades @multiformats/multiaddr to 11.0.0 - Removes ipfs-http-client and delegate router dependencies - Test delegation using interface stubs instead of implementations
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
/* eslint-env mocha */
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import { Multiaddr, protocols } from '@multiformats/multiaddr'
|
||||
import { multiaddr, protocols } from '@multiformats/multiaddr'
|
||||
import { AddressFilter, DefaultAddressManager } from '../../src/address-manager/index.js'
|
||||
import { createNode } from '../utils/creators/peer.js'
|
||||
import { createFromJSON } from '@libp2p/peer-id-factory'
|
||||
@ -48,8 +48,8 @@ describe('Address Manager', () => {
|
||||
|
||||
const listenMultiaddrs = am.getListenAddrs()
|
||||
expect(listenMultiaddrs.length).to.equal(2)
|
||||
expect(listenMultiaddrs[0].equals(new Multiaddr(listenAddresses[0]))).to.equal(true)
|
||||
expect(listenMultiaddrs[1].equals(new Multiaddr(listenAddresses[1]))).to.equal(true)
|
||||
expect(listenMultiaddrs[0].equals(multiaddr(listenAddresses[0]))).to.equal(true)
|
||||
expect(listenMultiaddrs[1].equals(multiaddr(listenAddresses[1]))).to.equal(true)
|
||||
})
|
||||
|
||||
it('should return announce multiaddrs on get', () => {
|
||||
@ -67,7 +67,7 @@ describe('Address Manager', () => {
|
||||
|
||||
const announceMultiaddrs = am.getAnnounceAddrs()
|
||||
expect(announceMultiaddrs.length).to.equal(1)
|
||||
expect(announceMultiaddrs[0].equals(new Multiaddr(announceAddreses[0]))).to.equal(true)
|
||||
expect(announceMultiaddrs[0].equals(multiaddr(announceAddreses[0]))).to.equal(true)
|
||||
})
|
||||
|
||||
it('should add observed addresses', () => {
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import sinon from 'sinon'
|
||||
import { Multiaddr, protocols } from '@multiformats/multiaddr'
|
||||
import { multiaddr, protocols } from '@multiformats/multiaddr'
|
||||
import { isLoopback } from '@libp2p/utils/multiaddr/is-loopback'
|
||||
import { AddressesOptions } from './utils.js'
|
||||
import { createNode } from '../utils/creators/peer.js'
|
||||
@ -114,9 +114,9 @@ describe('libp2p.multiaddrs', () => {
|
||||
expect(libp2p.components.getAddressManager().getAddresses()).to.have.lengthOf(0)
|
||||
|
||||
// Stub transportManager addresses to add a public address
|
||||
const stubMa = new Multiaddr('/ip4/120.220.10.1/tcp/1000')
|
||||
const stubMa = multiaddr('/ip4/120.220.10.1/tcp/1000')
|
||||
sinon.stub(libp2p.components.getTransportManager(), 'getAddrs').returns([
|
||||
...listenAddresses.map((a) => new Multiaddr(a)),
|
||||
...listenAddresses.map((a) => multiaddr(a)),
|
||||
stubMa
|
||||
])
|
||||
|
||||
@ -165,7 +165,7 @@ describe('libp2p.multiaddrs', () => {
|
||||
|
||||
expect(libp2p.components.getAddressManager().getAddresses()).to.have.lengthOf(listenAddresses.length)
|
||||
|
||||
libp2p.components.getAddressManager().addObservedAddr(new Multiaddr(ma))
|
||||
libp2p.components.getAddressManager().addObservedAddr(multiaddr(ma))
|
||||
|
||||
expect(libp2p.components.getAddressManager().getAddresses()).to.have.lengthOf(listenAddresses.length + 1)
|
||||
expect(libp2p.components.getAddressManager().getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code).toString())).to.include(ma)
|
||||
|
@ -1,13 +1,10 @@
|
||||
/* eslint-env mocha */
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import nock from 'nock'
|
||||
import sinon from 'sinon'
|
||||
import pDefer from 'p-defer'
|
||||
import { CID } from 'multiformats/cid'
|
||||
import { create as createIpfsHttpClient } from 'ipfs-http-client'
|
||||
import { DelegatedContentRouting } from '@libp2p/delegated-content-routing'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import drain from 'it-drain'
|
||||
import all from 'it-all'
|
||||
import { createNode, createPeerId, populateAddressBooks } from '../utils/creators/peer.js'
|
||||
@ -16,6 +13,9 @@ import { createRoutingOptions } from './utils.js'
|
||||
import type { Libp2p } from '../../src/index.js'
|
||||
import type { PeerInfo } from '@libp2p/interface-peer-info'
|
||||
import type { Libp2pNode } from '../../src/libp2p.js'
|
||||
import type { ContentRouting } from '@libp2p/interface-content-routing'
|
||||
import { StubbedInstance, stubInterface } from 'ts-sinon'
|
||||
import { peerIdFromString } from '@libp2p/peer-id'
|
||||
|
||||
describe('content-routing', () => {
|
||||
describe('no routers', () => {
|
||||
@ -119,14 +119,12 @@ describe('content-routing', () => {
|
||||
|
||||
describe('via delegate router', () => {
|
||||
let node: Libp2pNode
|
||||
let delegate: DelegatedContentRouting
|
||||
let delegate: StubbedInstance<ContentRouting>
|
||||
|
||||
beforeEach(async () => {
|
||||
delegate = new DelegatedContentRouting(createIpfsHttpClient({
|
||||
host: '0.0.0.0',
|
||||
protocol: 'http',
|
||||
port: 60197
|
||||
}))
|
||||
delegate = stubInterface<ContentRouting>()
|
||||
delegate.provide.returns(Promise.resolve())
|
||||
delegate.findProviders.returns(async function * () {}())
|
||||
|
||||
node = await createNode({
|
||||
config: createBaseOptions({
|
||||
@ -149,7 +147,7 @@ describe('content-routing', () => {
|
||||
it('should use the delegate router to provide', async () => {
|
||||
const deferred = pDefer()
|
||||
|
||||
sinon.stub(delegate, 'provide').callsFake(async () => {
|
||||
delegate.provide.callsFake(async () => {
|
||||
deferred.resolve()
|
||||
})
|
||||
|
||||
@ -161,14 +159,14 @@ describe('content-routing', () => {
|
||||
it('should use the delegate router to find providers', async () => {
|
||||
const deferred = pDefer()
|
||||
|
||||
sinon.stub(delegate, 'findProviders').callsFake(async function * () {
|
||||
delegate.findProviders.returns(async function * () {
|
||||
yield {
|
||||
id: node.peerId,
|
||||
multiaddrs: [],
|
||||
protocols: []
|
||||
}
|
||||
deferred.resolve()
|
||||
})
|
||||
}())
|
||||
|
||||
await drain(node.contentRouting.findProviders(CID.parse('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')))
|
||||
|
||||
@ -177,94 +175,61 @@ describe('content-routing', () => {
|
||||
|
||||
it('should be able to register as a provider', async () => {
|
||||
const cid = CID.parse('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
|
||||
const provider = 'QmZNgCqZCvTsi3B4Vt7gsSqpkqDpE7M2Y9TDmEhbDb4ceF'
|
||||
|
||||
const mockBlockApi = nock('http://0.0.0.0:60197')
|
||||
// mock the block/stat call
|
||||
.post('/api/v0/block/stat')
|
||||
.query(true)
|
||||
.reply(200, '{"Key":"QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB","Size":"2169"}', [
|
||||
'Content-Type', 'application/json',
|
||||
'X-Chunked-Output', '1'
|
||||
])
|
||||
const mockDhtApi = nock('http://0.0.0.0:60197')
|
||||
// mock the dht/provide call
|
||||
.post('/api/v0/dht/provide')
|
||||
.query(true)
|
||||
.reply(200, `{"Extra":"","ID":"QmWKqWXCtRXEeCQTo3FoZ7g4AfnGiauYYiczvNxFCHicbB","Responses":[{"Addrs":["/ip4/0.0.0.0/tcp/0"],"ID":"${provider}"}],"Type":4}\n`, [
|
||||
'Content-Type', 'application/json',
|
||||
'X-Chunked-Output', '1'
|
||||
])
|
||||
|
||||
await node.contentRouting.provide(cid)
|
||||
|
||||
expect(mockBlockApi.isDone()).to.equal(true)
|
||||
expect(mockDhtApi.isDone()).to.equal(true)
|
||||
expect(delegate.provide.calledWith(cid)).to.equal(true)
|
||||
})
|
||||
|
||||
it('should handle errors when registering as a provider', async () => {
|
||||
const cid = CID.parse('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
|
||||
const mockApi = nock('http://0.0.0.0:60197')
|
||||
// mock the block/stat call
|
||||
.post('/api/v0/block/stat')
|
||||
.query(true)
|
||||
.reply(502, 'Bad Gateway', ['Content-Type', 'application/json'])
|
||||
|
||||
delegate.provide.withArgs(cid).throws(new Error('Could not provide'))
|
||||
|
||||
await expect(node.contentRouting.provide(cid))
|
||||
.to.eventually.be.rejected()
|
||||
|
||||
expect(mockApi.isDone()).to.equal(true)
|
||||
.with.property('message', 'Could not provide')
|
||||
})
|
||||
|
||||
it('should be able to find providers', async () => {
|
||||
const cid = CID.parse('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
|
||||
const provider = 'QmZNgCqZCvTsi3B4Vt7gsSqpkqDpE7M2Y9TDmEhbDb4ceF'
|
||||
|
||||
const mockApi = nock('http://0.0.0.0:60197')
|
||||
.post('/api/v0/dht/findprovs')
|
||||
.query(true)
|
||||
.reply(200, `{"Extra":"","ID":"QmWKqWXCtRXEeCQTo3FoZ7g4AfnGiauYYiczvNxFCHicbB","Responses":[{"Addrs":["/ip4/0.0.0.0/tcp/0"],"ID":"${provider}"}],"Type":4}\n`, [
|
||||
'Content-Type', 'application/json',
|
||||
'X-Chunked-Output', '1'
|
||||
])
|
||||
delegate.findProviders.withArgs(cid).returns(async function * () {
|
||||
yield {
|
||||
id: peerIdFromString(provider),
|
||||
multiaddrs: [
|
||||
multiaddr('/ip4/0.0.0.0/tcp/0')
|
||||
],
|
||||
protocols: []
|
||||
}
|
||||
}())
|
||||
|
||||
const providers = await all(node.contentRouting.findProviders(cid))
|
||||
|
||||
expect(providers).to.have.length(1)
|
||||
expect(providers[0].id.toString()).to.equal(provider)
|
||||
expect(mockApi.isDone()).to.equal(true)
|
||||
})
|
||||
|
||||
it('should handle errors when finding providers', async () => {
|
||||
const cid = CID.parse('QmU621oD8AhHw6t25vVyfYKmL9VV3PTgc52FngEhTGACFB')
|
||||
const mockApi = nock('http://0.0.0.0:60197')
|
||||
.post('/api/v0/dht/findprovs')
|
||||
.query(true)
|
||||
.reply(502, 'Bad Gateway', [
|
||||
'X-Chunked-Output', '1'
|
||||
])
|
||||
|
||||
try {
|
||||
for await (const _ of node.contentRouting.findProviders(cid)) { } // eslint-disable-line
|
||||
throw new Error('should handle errors when finding providers')
|
||||
} catch (err: any) {
|
||||
expect(err).to.exist()
|
||||
}
|
||||
delegate.findProviders.withArgs(cid).throws(new Error('Could not find providers'))
|
||||
|
||||
expect(mockApi.isDone()).to.equal(true)
|
||||
await expect(drain(node.contentRouting.findProviders(cid)))
|
||||
.to.eventually.be.rejected()
|
||||
.with.property('message', 'Could not find providers')
|
||||
})
|
||||
})
|
||||
|
||||
describe('via dht and delegate routers', () => {
|
||||
let node: Libp2pNode
|
||||
let delegate: DelegatedContentRouting
|
||||
let delegate: StubbedInstance<ContentRouting>
|
||||
|
||||
beforeEach(async () => {
|
||||
delegate = new DelegatedContentRouting(createIpfsHttpClient({
|
||||
host: '0.0.0.0',
|
||||
protocol: 'http',
|
||||
port: 60197
|
||||
}))
|
||||
delegate = stubInterface<ContentRouting>()
|
||||
delegate.provide.returns(Promise.resolve())
|
||||
delegate.findProviders.returns(async function * () {}())
|
||||
|
||||
node = await createNode({
|
||||
config: createRoutingOptions({
|
||||
@ -284,7 +249,7 @@ describe('content-routing', () => {
|
||||
const result: PeerInfo = {
|
||||
id: providerPeerId,
|
||||
multiaddrs: [
|
||||
new Multiaddr('/ip4/123.123.123.123/tcp/49320')
|
||||
multiaddr('/ip4/123.123.123.123/tcp/49320')
|
||||
],
|
||||
protocols: []
|
||||
}
|
||||
@ -294,7 +259,7 @@ describe('content-routing', () => {
|
||||
}
|
||||
|
||||
sinon.stub(node.dht, 'findProviders').callsFake(async function * () {})
|
||||
sinon.stub(delegate, 'findProviders').callsFake(async function * () {
|
||||
delegate.findProviders.callsFake(async function * () {
|
||||
yield result
|
||||
})
|
||||
|
||||
@ -313,7 +278,7 @@ describe('content-routing', () => {
|
||||
const result = {
|
||||
id: providerPeerId,
|
||||
multiaddrs: [
|
||||
new Multiaddr('/ip4/123.123.123.123/tcp/49320')
|
||||
multiaddr('/ip4/123.123.123.123/tcp/49320')
|
||||
],
|
||||
protocols: []
|
||||
}
|
||||
@ -327,7 +292,7 @@ describe('content-routing', () => {
|
||||
sinon.stub(node.dht, 'findProviders').callsFake(async function * () { // eslint-disable-line require-yield
|
||||
await defer.promise
|
||||
})
|
||||
sinon.stub(delegate, 'findProviders').callsFake(async function * () {
|
||||
delegate.findProviders.callsFake(async function * () {
|
||||
yield result
|
||||
|
||||
await defer.promise
|
||||
@ -344,7 +309,7 @@ describe('content-routing', () => {
|
||||
const result = {
|
||||
id: providerPeerId,
|
||||
multiaddrs: [
|
||||
new Multiaddr('/ip4/123.123.123.123/tcp/49320')
|
||||
multiaddr('/ip4/123.123.123.123/tcp/49320')
|
||||
],
|
||||
protocols: []
|
||||
}
|
||||
@ -363,7 +328,7 @@ describe('content-routing', () => {
|
||||
]
|
||||
}
|
||||
})
|
||||
sinon.stub(delegate, 'findProviders').callsFake(async function * () {
|
||||
delegate.findProviders.callsFake(async function * () {
|
||||
yield result
|
||||
})
|
||||
|
||||
@ -377,14 +342,14 @@ describe('content-routing', () => {
|
||||
const result1 = {
|
||||
id: providerPeerId,
|
||||
multiaddrs: [
|
||||
new Multiaddr('/ip4/123.123.123.123/tcp/49320')
|
||||
multiaddr('/ip4/123.123.123.123/tcp/49320')
|
||||
],
|
||||
protocols: []
|
||||
}
|
||||
const result2 = {
|
||||
id: providerPeerId,
|
||||
multiaddrs: [
|
||||
new Multiaddr('/ip4/213.213.213.213/tcp/2344')
|
||||
multiaddr('/ip4/213.213.213.213/tcp/2344')
|
||||
],
|
||||
protocols: []
|
||||
}
|
||||
@ -403,7 +368,7 @@ describe('content-routing', () => {
|
||||
]
|
||||
}
|
||||
})
|
||||
sinon.stub(delegate, 'findProviders').callsFake(async function * () {
|
||||
delegate.findProviders.callsFake(async function * () {
|
||||
yield result2
|
||||
})
|
||||
|
||||
@ -430,7 +395,7 @@ describe('content-routing', () => {
|
||||
dhtDeferred.resolve()
|
||||
})
|
||||
|
||||
sinon.stub(delegate, 'provide').callsFake(async function () {
|
||||
delegate.provide.callsFake(async function () {
|
||||
delegatedDeferred.resolve()
|
||||
})
|
||||
|
||||
@ -465,7 +430,7 @@ describe('content-routing', () => {
|
||||
}
|
||||
})
|
||||
|
||||
sinon.stub(delegate, 'findProviders').callsFake(async function * () { // eslint-disable-line require-yield
|
||||
delegate.findProviders.callsFake(async function * () { // eslint-disable-line require-yield
|
||||
})
|
||||
|
||||
const providers = []
|
||||
@ -491,7 +456,7 @@ describe('content-routing', () => {
|
||||
|
||||
sinon.stub(node.dht, 'findProviders').callsFake(async function * () {})
|
||||
|
||||
sinon.stub(delegate, 'findProviders').callsFake(async function * () {
|
||||
delegate.findProviders.callsFake(async function * () {
|
||||
yield results[0]
|
||||
})
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* eslint-env mocha */
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import type { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import pWaitFor from 'p-wait-for'
|
||||
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
||||
import { subsystemMulticodecs, createSubsystemOptions } from './utils.js'
|
||||
@ -10,8 +11,8 @@ import type { PeerId } from '@libp2p/interface-peer-id'
|
||||
import { createLibp2pNode, Libp2pNode } from '../../../src/libp2p.js'
|
||||
import { start } from '@libp2p/interfaces/startable'
|
||||
|
||||
const listenAddr = new Multiaddr('/ip4/127.0.0.1/tcp/8000')
|
||||
const remoteListenAddr = new Multiaddr('/ip4/127.0.0.1/tcp/8001')
|
||||
const listenAddr = multiaddr('/ip4/127.0.0.1/tcp/8000')
|
||||
const remoteListenAddr = multiaddr('/ip4/127.0.0.1/tcp/8001')
|
||||
|
||||
async function getRemoteAddr (remotePeerId: PeerId, libp2p: Libp2pNode) {
|
||||
const addrs = await libp2p.components.getPeerStore().addressBook.get(remotePeerId)
|
||||
|
@ -3,7 +3,7 @@
|
||||
import { WebSockets } from '@libp2p/websockets'
|
||||
import { Plaintext } from '../../src/insecure/index.js'
|
||||
import { createPeerId } from '../utils/creators/peer.js'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { createLibp2pNode, Libp2pNode } from '../../src/libp2p.js'
|
||||
import type { Libp2pOptions } from '../../src/index.js'
|
||||
|
||||
@ -42,7 +42,7 @@ describe('Consume peer record', () => {
|
||||
|
||||
await libp2p.start()
|
||||
|
||||
libp2p.components.getAddressManager().addObservedAddr(new Multiaddr('/ip4/123.123.123.123/tcp/3983'))
|
||||
libp2p.components.getAddressManager().addObservedAddr(multiaddr('/ip4/123.123.123.123/tcp/3983'))
|
||||
|
||||
await p
|
||||
|
||||
|
@ -8,7 +8,7 @@ import delay from 'delay'
|
||||
import { DialAction, DialRequest } from '../../src/connection-manager/dialer/dial-request.js'
|
||||
import { mockConnection, mockDuplex, mockMultiaddrConnection } from '@libp2p/interface-mocks'
|
||||
import { createEd25519PeerId } from '@libp2p/peer-id-factory'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { DefaultDialer } from '../../src/connection-manager/dialer/index.js'
|
||||
import { Components } from '@libp2p/components'
|
||||
const error = new Error('dial failure')
|
||||
@ -29,7 +29,7 @@ describe('Dial Request', () => {
|
||||
})
|
||||
const dialerReleaseTokenSpy = sinon.spy(dialer, 'releaseToken')
|
||||
const dialRequest = new DialRequest({
|
||||
addrs: Object.keys(actions).map(str => new Multiaddr(str)),
|
||||
addrs: Object.keys(actions).map(str => multiaddr(str)),
|
||||
dialer,
|
||||
dialAction
|
||||
})
|
||||
@ -59,7 +59,7 @@ describe('Dial Request', () => {
|
||||
})
|
||||
const dialerReleaseTokenSpy = sinon.spy(dialer, 'releaseToken')
|
||||
const dialRequest = new DialRequest({
|
||||
addrs: Object.keys(actions).map(str => new Multiaddr(str)),
|
||||
addrs: Object.keys(actions).map(str => multiaddr(str)),
|
||||
dialer,
|
||||
dialAction
|
||||
})
|
||||
@ -105,7 +105,7 @@ describe('Dial Request', () => {
|
||||
const dialerReleaseTokenSpy = sinon.spy(dialer, 'releaseToken')
|
||||
const dialerGetTokensSpy = sinon.spy(dialer, 'getTokens')
|
||||
const dialRequest = new DialRequest({
|
||||
addrs: Object.keys(actions).map(str => new Multiaddr(str)),
|
||||
addrs: Object.keys(actions).map(str => multiaddr(str)),
|
||||
dialer,
|
||||
dialAction
|
||||
})
|
||||
@ -144,7 +144,7 @@ describe('Dial Request', () => {
|
||||
})
|
||||
const dialerReleaseTokenSpy = sinon.spy(dialer, 'releaseToken')
|
||||
const dialRequest = new DialRequest({
|
||||
addrs: Object.keys(actions).map(str => new Multiaddr(str)),
|
||||
addrs: Object.keys(actions).map(str => multiaddr(str)),
|
||||
dialer,
|
||||
dialAction
|
||||
})
|
||||
@ -191,7 +191,7 @@ describe('Dial Request', () => {
|
||||
const dialerReleaseTokenSpy = sinon.spy(dialer, 'releaseToken')
|
||||
const dialerGetTokensSpy = sinon.spy(dialer, 'getTokens')
|
||||
const dialRequest = new DialRequest({
|
||||
addrs: Object.keys(actions).map(str => new Multiaddr(str)),
|
||||
addrs: Object.keys(actions).map(str => multiaddr(str)),
|
||||
dialer,
|
||||
dialAction
|
||||
})
|
||||
@ -237,7 +237,7 @@ describe('Dial Request', () => {
|
||||
const signals: Record<string, AbortSignal | undefined> = {}
|
||||
|
||||
const dialRequest = new DialRequest({
|
||||
addrs: Object.keys(actions).map(str => new Multiaddr(str)),
|
||||
addrs: Object.keys(actions).map(str => multiaddr(str)),
|
||||
dialer: new DefaultDialer(new Components(), {
|
||||
maxParallelDials: 3
|
||||
}),
|
||||
|
@ -5,7 +5,8 @@ import sinon from 'sinon'
|
||||
import { TCP } from '@libp2p/tcp'
|
||||
import { Mplex } from '@libp2p/mplex'
|
||||
import { Plaintext } from '../../src/insecure/index.js'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import type { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
|
||||
import delay from 'delay'
|
||||
import pDefer from 'p-defer'
|
||||
@ -33,8 +34,8 @@ import swarmKey from '../fixtures/swarm.key.js'
|
||||
import { DefaultConnectionManager } from '../../src/connection-manager/index.js'
|
||||
|
||||
const swarmKeyBuffer = uint8ArrayFromString(swarmKey)
|
||||
const listenAddr = new Multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
const unsupportedAddr = new Multiaddr('/ip4/127.0.0.1/tcp/9999/ws/p2p/QmckxVrJw1Yo8LqvmDJNUmdAsKtSbiKWmrXJFyKmUraBoN')
|
||||
const listenAddr = multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
const unsupportedAddr = multiaddr('/ip4/127.0.0.1/tcp/9999/ws/p2p/QmckxVrJw1Yo8LqvmDJNUmdAsKtSbiKWmrXJFyKmUraBoN')
|
||||
|
||||
describe('Dialing (direct, TCP)', () => {
|
||||
let remoteTM: DefaultTransportManager
|
||||
@ -176,9 +177,9 @@ describe('Dialing (direct, TCP)', () => {
|
||||
|
||||
it('should dial to the max concurrency', async () => {
|
||||
const addrs = [
|
||||
new Multiaddr('/ip4/0.0.0.0/tcp/8000'),
|
||||
new Multiaddr('/ip4/0.0.0.0/tcp/8001'),
|
||||
new Multiaddr('/ip4/0.0.0.0/tcp/8002')
|
||||
multiaddr('/ip4/0.0.0.0/tcp/8000'),
|
||||
multiaddr('/ip4/0.0.0.0/tcp/8001'),
|
||||
multiaddr('/ip4/0.0.0.0/tcp/8002')
|
||||
]
|
||||
const peerId = await createFromJSON(Peers[1])
|
||||
|
||||
|
@ -8,7 +8,8 @@ import { WebSockets } from '@libp2p/websockets'
|
||||
import * as filters from '@libp2p/websockets/filters'
|
||||
import { Mplex } from '@libp2p/mplex'
|
||||
import { Plaintext } from '../../src/insecure/index.js'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import type { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { AbortError } from '@libp2p/interfaces/errors'
|
||||
import { MemoryDatastore } from 'datastore-core/memory'
|
||||
import { codes as ErrorCodes } from '../../src/errors.js'
|
||||
@ -31,7 +32,7 @@ import { MULTIADDRS_WEBSOCKETS } from '../fixtures/browser.js'
|
||||
import type { PeerId } from '@libp2p/interface-peer-id'
|
||||
import { pEvent } from 'p-event'
|
||||
|
||||
const unsupportedAddr = new Multiaddr('/ip4/127.0.0.1/tcp/9999')
|
||||
const unsupportedAddr = multiaddr('/ip4/127.0.0.1/tcp/9999')
|
||||
|
||||
describe('Dialing (direct, WebSockets)', () => {
|
||||
let localTM: TransportManager
|
||||
@ -174,7 +175,7 @@ describe('Dialing (direct, WebSockets)', () => {
|
||||
})
|
||||
|
||||
const remotePeerId = peerIdFromString(remoteAddr.getPeerId() ?? '')
|
||||
await localComponents.getPeerStore().addressBook.set(remotePeerId, Array.from({ length: 11 }, (_, i) => new Multiaddr(`/ip4/127.0.0.1/tcp/1500${i}/ws/p2p/12D3KooWHFKTMzwerBtsVmtz4ZZEQy2heafxzWw6wNn5PPYkBxJ5`)))
|
||||
await localComponents.getPeerStore().addressBook.set(remotePeerId, Array.from({ length: 11 }, (_, i) => multiaddr(`/ip4/127.0.0.1/tcp/1500${i}/ws/p2p/12D3KooWHFKTMzwerBtsVmtz4ZZEQy2heafxzWw6wNn5PPYkBxJ5`)))
|
||||
|
||||
await expect(dialer.dial(remoteAddr))
|
||||
.to.eventually.be.rejected()
|
||||
@ -183,9 +184,9 @@ describe('Dialing (direct, WebSockets)', () => {
|
||||
|
||||
it('should sort addresses on dial', async () => {
|
||||
const peerMultiaddrs = [
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/15001/ws'),
|
||||
new Multiaddr('/ip4/20.0.0.1/tcp/15001/ws'),
|
||||
new Multiaddr('/ip4/30.0.0.1/tcp/15001/ws')
|
||||
multiaddr('/ip4/127.0.0.1/tcp/15001/ws'),
|
||||
multiaddr('/ip4/20.0.0.1/tcp/15001/ws'),
|
||||
multiaddr('/ip4/30.0.0.1/tcp/15001/ws')
|
||||
]
|
||||
|
||||
const publicAddressesFirstSpy = sinon.spy(publicAddressesFirst)
|
||||
@ -213,9 +214,9 @@ describe('Dialing (direct, WebSockets)', () => {
|
||||
|
||||
it('should dial to the max concurrency', async () => {
|
||||
const addrs = [
|
||||
new Multiaddr('/ip4/0.0.0.0/tcp/8000/ws'),
|
||||
new Multiaddr('/ip4/0.0.0.0/tcp/8001/ws'),
|
||||
new Multiaddr('/ip4/0.0.0.0/tcp/8002/ws')
|
||||
multiaddr('/ip4/0.0.0.0/tcp/8000/ws'),
|
||||
multiaddr('/ip4/0.0.0.0/tcp/8001/ws'),
|
||||
multiaddr('/ip4/0.0.0.0/tcp/8002/ws')
|
||||
]
|
||||
const remotePeerId = peerIdFromString(remoteAddr.getPeerId() ?? '')
|
||||
|
||||
@ -253,9 +254,9 @@ describe('Dialing (direct, WebSockets)', () => {
|
||||
|
||||
it('.destroy should abort pending dials', async () => {
|
||||
const addrs = [
|
||||
new Multiaddr('/ip4/0.0.0.0/tcp/8000/ws'),
|
||||
new Multiaddr('/ip4/0.0.0.0/tcp/8001/ws'),
|
||||
new Multiaddr('/ip4/0.0.0.0/tcp/8002/ws')
|
||||
multiaddr('/ip4/0.0.0.0/tcp/8000/ws'),
|
||||
multiaddr('/ip4/0.0.0.0/tcp/8001/ws'),
|
||||
multiaddr('/ip4/0.0.0.0/tcp/8002/ws')
|
||||
]
|
||||
const dialer = new DefaultDialer(localComponents, {
|
||||
maxParallelDials: 2
|
||||
@ -592,7 +593,7 @@ describe('libp2p.dialer (direct, WebSockets)', () => {
|
||||
|
||||
await libp2p.start()
|
||||
|
||||
await expect(libp2p.dial(new Multiaddr(`/ip4/127.0.0.1/tcp/1234/ws/p2p/${peerId.toString()}`)))
|
||||
await expect(libp2p.dial(multiaddr(`/ip4/127.0.0.1/tcp/1234/ws/p2p/${peerId.toString()}`)))
|
||||
.to.eventually.be.rejected()
|
||||
.and.to.have.property('code', ErrorCodes.ERR_DIALED_SELF)
|
||||
})
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import sinon from 'sinon'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import type { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { codes as ErrorCodes } from '../../src/errors.js'
|
||||
import { createNode } from '../utils/creators/peer.js'
|
||||
import { createBaseOptions } from '../utils/base-options.browser.js'
|
||||
@ -90,8 +91,8 @@ describe('Dialing (resolvable addresses)', () => {
|
||||
|
||||
it('resolves dnsaddr to ws local address', async () => {
|
||||
const remoteId = remoteLibp2p.peerId
|
||||
const dialAddr = new Multiaddr(`/dnsaddr/remote.libp2p.io/p2p/${remoteId.toString()}`)
|
||||
const relayedAddrFetched = new Multiaddr(relayedAddr(remoteId))
|
||||
const dialAddr = multiaddr(`/dnsaddr/remote.libp2p.io/p2p/${remoteId.toString()}`)
|
||||
const relayedAddrFetched = multiaddr(relayedAddr(remoteId))
|
||||
|
||||
// Transport spy
|
||||
const transport = getTransport(libp2p, Circuit.prototype[Symbol.toStringTag])
|
||||
@ -111,8 +112,8 @@ describe('Dialing (resolvable addresses)', () => {
|
||||
|
||||
it('resolves a dnsaddr recursively', async () => {
|
||||
const remoteId = remoteLibp2p.peerId
|
||||
const dialAddr = new Multiaddr(`/dnsaddr/remote.libp2p.io/p2p/${remoteId.toString()}`)
|
||||
const relayedAddrFetched = new Multiaddr(relayedAddr(remoteId))
|
||||
const dialAddr = multiaddr(`/dnsaddr/remote.libp2p.io/p2p/${remoteId.toString()}`)
|
||||
const relayedAddrFetched = multiaddr(relayedAddr(remoteId))
|
||||
|
||||
// Transport spy
|
||||
const transport = getTransport(libp2p, Circuit.prototype[Symbol.toStringTag])
|
||||
@ -142,10 +143,10 @@ describe('Dialing (resolvable addresses)', () => {
|
||||
// Resolver just returns the received multiaddrs
|
||||
it('stops recursive resolve if finds dns4/dns6 and dials it', async () => {
|
||||
const remoteId = remoteLibp2p.peerId
|
||||
const dialAddr = new Multiaddr(`/dnsaddr/remote.libp2p.io/p2p/${remoteId.toString()}`)
|
||||
const dialAddr = multiaddr(`/dnsaddr/remote.libp2p.io/p2p/${remoteId.toString()}`)
|
||||
|
||||
// Stub resolver
|
||||
const dnsMa = new Multiaddr(`/dns4/ams-1.remote.libp2p.io/tcp/443/wss/p2p/${remoteId.toString()}`)
|
||||
const dnsMa = multiaddr(`/dns4/ams-1.remote.libp2p.io/tcp/443/wss/p2p/${remoteId.toString()}`)
|
||||
resolver.returns(Promise.resolve([
|
||||
`${dnsMa.toString()}`
|
||||
]))
|
||||
@ -170,8 +171,8 @@ describe('Dialing (resolvable addresses)', () => {
|
||||
|
||||
it('resolves a dnsaddr recursively not failing if one address fails to resolve', async () => {
|
||||
const remoteId = remoteLibp2p.peerId
|
||||
const dialAddr = new Multiaddr(`/dnsaddr/remote.libp2p.io/p2p/${remoteId.toString()}`)
|
||||
const relayedAddrFetched = new Multiaddr(relayedAddr(remoteId))
|
||||
const dialAddr = multiaddr(`/dnsaddr/remote.libp2p.io/p2p/${remoteId.toString()}`)
|
||||
const relayedAddrFetched = multiaddr(relayedAddr(remoteId))
|
||||
|
||||
// Transport spy
|
||||
const transport = getTransport(libp2p, Circuit.prototype[Symbol.toStringTag])
|
||||
@ -193,7 +194,7 @@ describe('Dialing (resolvable addresses)', () => {
|
||||
|
||||
it('fails to dial if resolve fails and there are no addresses to dial', async () => {
|
||||
const remoteId = remoteLibp2p.peerId
|
||||
const dialAddr = new Multiaddr(`/dnsaddr/remote.libp2p.io/p2p/${remoteId.toString()}`)
|
||||
const dialAddr = multiaddr(`/dnsaddr/remote.libp2p.io/p2p/${remoteId.toString()}`)
|
||||
|
||||
// Stub resolver
|
||||
resolver.returns(Promise.reject(new Error()))
|
||||
|
4
test/fixtures/browser.ts
vendored
4
test/fixtures/browser.ts
vendored
@ -1,6 +1,6 @@
|
||||
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
|
||||
export const MULTIADDRS_WEBSOCKETS = [
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/15001/ws/p2p/12D3KooWHFKTMzwerBtsVmtz4ZZEQy2heafxzWw6wNn5PPYkBxJ5')
|
||||
multiaddr('/ip4/127.0.0.1/tcp/15001/ws/p2p/12D3KooWHFKTMzwerBtsVmtz4ZZEQy2heafxzWw6wNn5PPYkBxJ5')
|
||||
]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import sinon from 'sinon'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
||||
import { codes } from '../../src/errors.js'
|
||||
import { IdentifyService, IdentifyServiceInit, Message } from '../../src/identify/index.js'
|
||||
@ -30,7 +30,7 @@ import { TimeoutController } from 'timeout-abort-controller'
|
||||
import { CustomEvent } from '@libp2p/interfaces/events'
|
||||
import pDefer from 'p-defer'
|
||||
|
||||
const listenMaddrs = [new Multiaddr('/ip4/127.0.0.1/tcp/15002/ws')]
|
||||
const listenMaddrs = [multiaddr('/ip4/127.0.0.1/tcp/15002/ws')]
|
||||
|
||||
const defaultInit: IdentifyServiceInit = {
|
||||
protocolPrefix: 'ipfs',
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import sinon from 'sinon'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { IdentifyService, IdentifyServiceInit } from '../../src/identify/index.js'
|
||||
import Peers from '../fixtures/peers.js'
|
||||
import { PersistentPeerStore } from '@libp2p/peer-store'
|
||||
@ -25,7 +25,7 @@ import delay from 'delay'
|
||||
import { pEvent } from 'p-event'
|
||||
import { start, stop } from '@libp2p/interfaces/startable'
|
||||
|
||||
const listenMaddrs = [new Multiaddr('/ip4/127.0.0.1/tcp/15002/ws')]
|
||||
const listenMaddrs = [multiaddr('/ip4/127.0.0.1/tcp/15002/ws')]
|
||||
|
||||
const defaultInit: IdentifyServiceInit = {
|
||||
protocolPrefix: 'ipfs',
|
||||
@ -119,7 +119,7 @@ describe('identify (push)', () => {
|
||||
await remoteIdentify.identify(remoteToLocal)
|
||||
|
||||
const updatedProtocol = '/special-new-protocol/1.0.0'
|
||||
const updatedAddress = new Multiaddr('/ip4/127.0.0.1/tcp/48322')
|
||||
const updatedAddress = multiaddr('/ip4/127.0.0.1/tcp/48322')
|
||||
|
||||
// should have protocols but not our new one
|
||||
const identifiedProtocols = await remoteComponents.getPeerStore().protoBook.get(localComponents.getPeerId())
|
||||
@ -250,7 +250,7 @@ describe('identify (push)', () => {
|
||||
await remoteIdentify.identify(remoteToLocal)
|
||||
|
||||
const updatedProtocol = '/special-new-protocol/1.0.0'
|
||||
const updatedAddress = new Multiaddr('/ip4/127.0.0.1/tcp/48322')
|
||||
const updatedAddress = multiaddr('/ip4/127.0.0.1/tcp/48322')
|
||||
|
||||
// should have protocols but not our new one
|
||||
const identifiedProtocols = await remoteComponents.getPeerStore().protoBook.get(localComponents.getPeerId())
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import sinon from 'sinon'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
|
||||
import Peers from '../fixtures/peers.js'
|
||||
import { createLibp2pNode } from '../../src/libp2p.js'
|
||||
@ -228,7 +228,7 @@ describe('libp2p.dialer.identifyService', () => {
|
||||
await identityServiceIdentifySpy.firstCall.returnValue
|
||||
sinon.stub(libp2p, 'isStarted').returns(true)
|
||||
|
||||
await libp2p.peerStore.addressBook.add(libp2p.peerId, [new Multiaddr('/ip4/180.0.0.1/tcp/15001/ws')])
|
||||
await libp2p.peerStore.addressBook.add(libp2p.peerId, [multiaddr('/ip4/180.0.0.1/tcp/15001/ws')])
|
||||
|
||||
// the protocol change event listener in the identity service is async
|
||||
await pWaitFor(() => identityServicePushSpy.callCount === 1)
|
||||
|
@ -12,7 +12,7 @@ import type { PeerId } from '@libp2p/interface-peer-id'
|
||||
import { createFromJSON, createRSAPeerId } from '@libp2p/peer-id-factory'
|
||||
import type { ConnectionEncrypter } from '@libp2p/interface-connection-encrypter'
|
||||
import { mockMultiaddrConnPair } from '@libp2p/interface-mocks'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { peerIdFromBytes } from '@libp2p/peer-id'
|
||||
|
||||
describe('plaintext', () => {
|
||||
@ -39,8 +39,8 @@ describe('plaintext', () => {
|
||||
const { inbound, outbound } = mockMultiaddrConnPair({
|
||||
remotePeer,
|
||||
addrs: [
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/1234'),
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/1235')
|
||||
multiaddr('/ip4/127.0.0.1/tcp/1234'),
|
||||
multiaddr('/ip4/127.0.0.1/tcp/1235')
|
||||
]
|
||||
})
|
||||
|
||||
@ -60,8 +60,8 @@ describe('plaintext', () => {
|
||||
const { inbound, outbound } = mockMultiaddrConnPair({
|
||||
remotePeer,
|
||||
addrs: [
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/1234'),
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/1235')
|
||||
multiaddr('/ip4/127.0.0.1/tcp/1234'),
|
||||
multiaddr('/ip4/127.0.0.1/tcp/1235')
|
||||
]
|
||||
})
|
||||
|
||||
|
@ -5,7 +5,7 @@ import { createClient } from '@libp2p/daemon-client'
|
||||
import { createLibp2p, Libp2pOptions } from '../src/index.js'
|
||||
import { Noise } from '@chainsafe/libp2p-noise'
|
||||
import { TCP } from '@libp2p/tcp'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { KadDHT } from '@libp2p/kad-dht'
|
||||
import { path as p2pd } from 'go-libp2p'
|
||||
import { execa } from 'execa'
|
||||
@ -23,7 +23,7 @@ import { FloodSub } from '@libp2p/floodsub'
|
||||
|
||||
async function createGoPeer (options: SpawnOptions): Promise<Daemon> {
|
||||
const controlPort = Math.floor(Math.random() * (50000 - 10000 + 1)) + 10000
|
||||
const apiAddr = new Multiaddr(`/ip4/0.0.0.0/tcp/${controlPort}`)
|
||||
const apiAddr = multiaddr(`/ip4/0.0.0.0/tcp/${controlPort}`)
|
||||
|
||||
const log = logger(`go-libp2p:${controlPort}`)
|
||||
|
||||
@ -133,7 +133,7 @@ async function createJsPeer (options: SpawnOptions): Promise<Daemon> {
|
||||
}
|
||||
|
||||
const node = await createLibp2p(opts)
|
||||
const server = await createServer(new Multiaddr('/ip4/0.0.0.0/tcp/0'), node)
|
||||
const server = await createServer(multiaddr('/ip4/0.0.0.0/tcp/0'), node)
|
||||
await server.start()
|
||||
|
||||
return {
|
||||
|
@ -7,7 +7,7 @@ import { Bootstrap } from '@libp2p/bootstrap'
|
||||
import { randomBytes } from '@libp2p/crypto'
|
||||
import { KadDHT } from '@libp2p/kad-dht'
|
||||
import { MulticastDNS } from '@libp2p/mdns'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
|
||||
import { createBaseOptions } from '../utils/base-options.js'
|
||||
import { createPeerId } from '../utils/creators/peer.js'
|
||||
@ -16,7 +16,7 @@ import { createLibp2pNode, Libp2pNode } from '../../src/libp2p.js'
|
||||
import { CustomEvent } from '@libp2p/interfaces/events'
|
||||
import type { PeerInfo } from '@libp2p/interface-peer-info'
|
||||
|
||||
const listenAddr = new Multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
const listenAddr = multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
|
||||
describe('peer discovery scenarios', () => {
|
||||
let peerId: PeerId, remotePeerId1: PeerId, remotePeerId2: PeerId
|
||||
|
@ -1,17 +1,13 @@
|
||||
/* eslint-env mocha */
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import nock from 'nock'
|
||||
import sinon from 'sinon'
|
||||
import intoStream from 'into-stream'
|
||||
import delay from 'delay'
|
||||
import pDefer from 'p-defer'
|
||||
import pWaitFor from 'p-wait-for'
|
||||
import drain from 'it-drain'
|
||||
import all from 'it-all'
|
||||
import { create as createIpfsHttpClient } from 'ipfs-http-client'
|
||||
import { DelegatedPeerRouting } from '@libp2p/delegated-peer-routing'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { createNode, createPeerId, populateAddressBooks } from '../utils/creators/peer.js'
|
||||
import type { Libp2pNode } from '../../src/libp2p.js'
|
||||
import { createBaseOptions } from '../utils/base-options.js'
|
||||
@ -19,9 +15,10 @@ import { createRoutingOptions } from './utils.js'
|
||||
import type { PeerId } from '@libp2p/interface-peer-id'
|
||||
import { createEd25519PeerId } from '@libp2p/peer-id-factory'
|
||||
import { EventTypes, MessageType } from '@libp2p/interface-dht'
|
||||
import { peerIdFromString } from '@libp2p/peer-id'
|
||||
import type { PeerInfo } from '@libp2p/interface-peer-info'
|
||||
import { KadDHT } from '@libp2p/kad-dht'
|
||||
import type { PeerRouting } from '@libp2p/interface-peer-routing'
|
||||
import { StubbedInstance, stubInterface } from 'ts-sinon'
|
||||
|
||||
describe('peer-routing', () => {
|
||||
let peerId: PeerId
|
||||
@ -237,14 +234,12 @@ describe('peer-routing', () => {
|
||||
|
||||
describe('via delegate router', () => {
|
||||
let node: Libp2pNode
|
||||
let delegate: DelegatedPeerRouting
|
||||
let delegate: StubbedInstance<PeerRouting>
|
||||
|
||||
beforeEach(async () => {
|
||||
delegate = new DelegatedPeerRouting(createIpfsHttpClient({
|
||||
host: '0.0.0.0',
|
||||
protocol: 'http',
|
||||
port: 60197
|
||||
}))
|
||||
delegate = stubInterface<PeerRouting>()
|
||||
delegate.findPeer.returns(Promise.reject(new Error('Could not find peer')))
|
||||
delegate.getClosestPeers.returns(async function * () {}())
|
||||
|
||||
node = await createNode({
|
||||
config: createBaseOptions({
|
||||
@ -254,7 +249,6 @@ describe('peer-routing', () => {
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
nock.cleanAll()
|
||||
sinon.restore()
|
||||
})
|
||||
|
||||
@ -268,7 +262,7 @@ describe('peer-routing', () => {
|
||||
it('should use the delegate router to find peers', async () => {
|
||||
const remotePeerId = await createPeerId()
|
||||
|
||||
const delegateFindPeerStub = sinon.stub(delegate, 'findPeer').callsFake(async function () {
|
||||
delegate.findPeer.callsFake(async function () {
|
||||
return {
|
||||
id: remotePeerId,
|
||||
multiaddrs: [],
|
||||
@ -276,16 +270,15 @@ describe('peer-routing', () => {
|
||||
}
|
||||
})
|
||||
|
||||
expect(delegateFindPeerStub.called).to.be.false()
|
||||
expect(delegate.findPeer.called).to.be.false()
|
||||
await node.peerRouting.findPeer(remotePeerId)
|
||||
expect(delegateFindPeerStub.called).to.be.true()
|
||||
delegateFindPeerStub.restore()
|
||||
expect(delegate.findPeer.called).to.be.true()
|
||||
})
|
||||
|
||||
it('should use the delegate router to get the closest peers', async () => {
|
||||
const remotePeerId = await createPeerId()
|
||||
|
||||
const delegateGetClosestPeersStub = sinon.stub(delegate, 'getClosestPeers').callsFake(async function * () {
|
||||
delegate.getClosestPeers.callsFake(async function * () {
|
||||
yield {
|
||||
id: remotePeerId,
|
||||
multiaddrs: [],
|
||||
@ -293,26 +286,9 @@ describe('peer-routing', () => {
|
||||
}
|
||||
})
|
||||
|
||||
expect(delegateGetClosestPeersStub.called).to.be.false()
|
||||
expect(delegate.getClosestPeers.called).to.be.false()
|
||||
await drain(node.peerRouting.getClosestPeers(remotePeerId.toBytes()))
|
||||
expect(delegateGetClosestPeersStub.called).to.be.true()
|
||||
delegateGetClosestPeersStub.restore()
|
||||
})
|
||||
|
||||
it('should be able to find a peer', async () => {
|
||||
const peerKey = peerIdFromString('QmTp9VkYvnHyrqKQuFPiuZkiX9gPcqj6x5LJ1rmWuSySnL')
|
||||
const mockApi = nock('http://0.0.0.0:60197')
|
||||
.post('/api/v0/dht/findpeer')
|
||||
.query(true)
|
||||
.reply(200, `{"Extra":"","ID":"some other id","Responses":null,"Type":0}\n{"Extra":"","ID":"","Responses":[{"Addrs":["/ip4/127.0.0.1/tcp/4001"],"ID":"${peerKey.toString()}"}],"Type":2}\n`, [
|
||||
'Content-Type', 'application/json',
|
||||
'X-Chunked-Output', '1'
|
||||
])
|
||||
|
||||
const peer = await node.peerRouting.findPeer(peerKey)
|
||||
|
||||
expect(peer.id.toString()).to.equal(peerKey.toString())
|
||||
expect(mockApi.isDone()).to.equal(true)
|
||||
expect(delegate.getClosestPeers.called).to.be.true()
|
||||
})
|
||||
|
||||
it('should error when peer tries to find itself', async () => {
|
||||
@ -321,91 +297,27 @@ describe('peer-routing', () => {
|
||||
.and.to.have.property('code', 'ERR_FIND_SELF')
|
||||
})
|
||||
|
||||
it('should error when a peer cannot be found', async () => {
|
||||
const peerId = await createEd25519PeerId()
|
||||
const mockApi = nock('http://0.0.0.0:60197')
|
||||
.post('/api/v0/dht/findpeer')
|
||||
.query(true)
|
||||
.reply(200, '{"Extra":"","ID":"some other id","Responses":null,"Type":6}\n{"Extra":"","ID":"yet another id","Responses":null,"Type":0}\n{"Extra":"routing:not found","ID":"","Responses":null,"Type":3}\n', [
|
||||
'Content-Type', 'application/json',
|
||||
'X-Chunked-Output', '1'
|
||||
])
|
||||
it('should handle errors from the delegate when finding closest peers', async () => {
|
||||
const remotePeerId = await createPeerId()
|
||||
|
||||
await expect(node.peerRouting.findPeer(peerId))
|
||||
.to.eventually.be.rejected()
|
||||
delegate.getClosestPeers.callsFake(async function * () { // eslint-disable-line require-yield
|
||||
throw new Error('Could not find closer peers')
|
||||
})
|
||||
|
||||
expect(mockApi.isDone()).to.equal(true)
|
||||
})
|
||||
|
||||
it('should handle errors from the api', async () => {
|
||||
const peerId = await createEd25519PeerId()
|
||||
const mockApi = nock('http://0.0.0.0:60197')
|
||||
.post('/api/v0/dht/findpeer')
|
||||
.query(true)
|
||||
.reply(502)
|
||||
|
||||
await expect(node.peerRouting.findPeer(peerId))
|
||||
.to.eventually.be.rejected()
|
||||
|
||||
expect(mockApi.isDone()).to.equal(true)
|
||||
})
|
||||
|
||||
it('should be able to get the closest peers', async () => {
|
||||
const peerId = await createEd25519PeerId()
|
||||
const closest1 = '12D3KooWLewYMMdGWAtuX852n4rgCWkK7EBn4CWbwwBzhsVoKxk3'
|
||||
const closest2 = '12D3KooWDtoQbpKhtnWddfj72QmpFvvLDTsBLTFkjvgQm6cde2AK'
|
||||
|
||||
const mockApi = nock('http://0.0.0.0:60197')
|
||||
.post('/api/v0/dht/query')
|
||||
.query(true)
|
||||
.reply(200,
|
||||
() => intoStream([
|
||||
`{"Extra":"","ID":"${closest1}","Responses":[{"ID":"${closest1}","Addrs":["/ip4/127.0.0.1/tcp/63930","/ip4/127.0.0.1/tcp/63930"]}],"Type":1}\n`,
|
||||
`{"Extra":"","ID":"${closest2}","Responses":[{"ID":"${closest2}","Addrs":["/ip4/127.0.0.1/tcp/63506","/ip4/127.0.0.1/tcp/63506"]}],"Type":1}\n`,
|
||||
`{"Extra":"","ID":"${closest2}","Responses":[],"Type":2}\n`,
|
||||
`{"Extra":"","ID":"${closest1}","Responses":[],"Type":2}\n`
|
||||
]),
|
||||
[
|
||||
'Content-Type', 'application/json',
|
||||
'X-Chunked-Output', '1'
|
||||
])
|
||||
|
||||
const closestPeers = await all(node.peerRouting.getClosestPeers(peerId.toBytes()))
|
||||
|
||||
expect(closestPeers).to.have.length(2)
|
||||
expect(closestPeers[0].id.toString()).to.equal(closest1)
|
||||
expect(closestPeers[0].multiaddrs).to.have.lengthOf(2)
|
||||
expect(closestPeers[1].id.toString()).to.equal(closest2)
|
||||
expect(closestPeers[1].multiaddrs).to.have.lengthOf(2)
|
||||
expect(mockApi.isDone()).to.equal(true)
|
||||
})
|
||||
|
||||
it('should handle errors when getting the closest peers', async () => {
|
||||
const peerId = await createEd25519PeerId()
|
||||
|
||||
const mockApi = nock('http://0.0.0.0:60197')
|
||||
.post('/api/v0/dht/query')
|
||||
.query(true)
|
||||
.reply(502, 'Bad Gateway', [
|
||||
'X-Chunked-Output', '1'
|
||||
])
|
||||
|
||||
await expect(drain(node.peerRouting.getClosestPeers(peerId.toBytes()))).to.eventually.be.rejected()
|
||||
|
||||
expect(mockApi.isDone()).to.equal(true)
|
||||
expect(delegate.getClosestPeers.called).to.be.false()
|
||||
await expect(drain(node.peerRouting.getClosestPeers(remotePeerId.toBytes())))
|
||||
.to.eventually.be.rejectedWith('Could not find closer peers')
|
||||
})
|
||||
})
|
||||
|
||||
describe('via dht and delegate routers', () => {
|
||||
let node: Libp2pNode
|
||||
let delegate: DelegatedPeerRouting
|
||||
let delegate: StubbedInstance<PeerRouting>
|
||||
|
||||
beforeEach(async () => {
|
||||
delegate = new DelegatedPeerRouting(createIpfsHttpClient({
|
||||
host: '0.0.0.0',
|
||||
protocol: 'http',
|
||||
port: 60197
|
||||
}))
|
||||
delegate = stubInterface<PeerRouting>()
|
||||
delegate.findPeer.throws(new Error('Could not find peer'))
|
||||
delegate.getClosestPeers.returns(async function * () {}())
|
||||
|
||||
node = await createNode({
|
||||
config: createRoutingOptions({
|
||||
@ -434,7 +346,8 @@ describe('peer-routing', () => {
|
||||
}
|
||||
|
||||
sinon.stub(node.dht, 'findPeer').callsFake(async function * () {})
|
||||
sinon.stub(delegate, 'findPeer').callsFake(async () => {
|
||||
delegate.findPeer.reset()
|
||||
delegate.findPeer.callsFake(async () => {
|
||||
return results
|
||||
})
|
||||
|
||||
@ -466,7 +379,8 @@ describe('peer-routing', () => {
|
||||
}
|
||||
await defer.promise
|
||||
})
|
||||
sinon.stub(delegate, 'findPeer').callsFake(async () => {
|
||||
delegate.findPeer.reset()
|
||||
delegate.findPeer.callsFake(async () => {
|
||||
return results
|
||||
})
|
||||
|
||||
@ -498,7 +412,8 @@ describe('peer-routing', () => {
|
||||
peer: result
|
||||
}
|
||||
})
|
||||
sinon.stub(delegate, 'findPeer').callsFake(async () => {
|
||||
delegate.findPeer.reset()
|
||||
delegate.findPeer.callsFake(async () => {
|
||||
return await defer.promise
|
||||
})
|
||||
|
||||
@ -513,7 +428,7 @@ describe('peer-routing', () => {
|
||||
const result = {
|
||||
id: remotePeerId,
|
||||
multiaddrs: [
|
||||
new Multiaddr('/ip4/123.123.123.123/tcp/38982')
|
||||
multiaddr('/ip4/123.123.123.123/tcp/38982')
|
||||
],
|
||||
protocols: []
|
||||
}
|
||||
@ -532,7 +447,8 @@ describe('peer-routing', () => {
|
||||
peer: result
|
||||
}
|
||||
})
|
||||
sinon.stub(delegate, 'findPeer').callsFake(async () => {
|
||||
delegate.findPeer.reset()
|
||||
delegate.findPeer.callsFake(async () => {
|
||||
const deferred = pDefer<PeerInfo>()
|
||||
|
||||
return await deferred.promise
|
||||
@ -557,7 +473,7 @@ describe('peer-routing', () => {
|
||||
|
||||
sinon.stub(node.dht, 'getClosestPeers').callsFake(async function * () { })
|
||||
|
||||
sinon.stub(delegate, 'getClosestPeers').callsFake(async function * () {
|
||||
delegate.getClosestPeers.callsFake(async function * () {
|
||||
yield results[0]
|
||||
})
|
||||
|
||||
@ -572,7 +488,7 @@ describe('peer-routing', () => {
|
||||
const result = {
|
||||
id: remotePeerId,
|
||||
multiaddrs: [
|
||||
new Multiaddr('/ip4/123.123.123.123/tcp/38982')
|
||||
multiaddr('/ip4/123.123.123.123/tcp/38982')
|
||||
],
|
||||
protocols: []
|
||||
}
|
||||
@ -585,7 +501,7 @@ describe('peer-routing', () => {
|
||||
|
||||
sinon.stub(node.dht, 'getClosestPeers').callsFake(async function * () { })
|
||||
|
||||
sinon.stub(delegate, 'getClosestPeers').callsFake(async function * () {
|
||||
delegate.getClosestPeers.callsFake(async function * () {
|
||||
yield result
|
||||
})
|
||||
|
||||
@ -599,7 +515,7 @@ describe('peer-routing', () => {
|
||||
const results = [{
|
||||
id: remotePeerId,
|
||||
multiaddrs: [
|
||||
new Multiaddr('/ip4/123.123.123.123/tcp/38982')
|
||||
multiaddr('/ip4/123.123.123.123/tcp/38982')
|
||||
],
|
||||
protocols: []
|
||||
}]
|
||||
@ -619,7 +535,7 @@ describe('peer-routing', () => {
|
||||
}
|
||||
})
|
||||
|
||||
sinon.stub(delegate, 'getClosestPeers').callsFake(async function * () {
|
||||
delegate.getClosestPeers.callsFake(async function * () {
|
||||
yield * results
|
||||
})
|
||||
|
||||
@ -650,8 +566,8 @@ describe('peer-routing', () => {
|
||||
|
||||
it('should be enabled and start by default', async () => {
|
||||
const results: PeerInfo[] = [
|
||||
{ id: peerIds[0], multiaddrs: [new Multiaddr('/ip4/30.0.0.1/tcp/2000')], protocols: [] },
|
||||
{ id: peerIds[1], multiaddrs: [new Multiaddr('/ip4/32.0.0.1/tcp/2000')], protocols: [] }
|
||||
{ id: peerIds[0], multiaddrs: [multiaddr('/ip4/30.0.0.1/tcp/2000')], protocols: [] },
|
||||
{ id: peerIds[1], multiaddrs: [multiaddr('/ip4/32.0.0.1/tcp/2000')], protocols: [] }
|
||||
]
|
||||
|
||||
node = await createNode({
|
||||
@ -773,7 +689,7 @@ describe('peer-routing', () => {
|
||||
messageType: MessageType.FIND_NODE,
|
||||
from: peerIds[0],
|
||||
closer: [
|
||||
{ id: peerIds[0], multiaddrs: [new Multiaddr('/ip4/30.0.0.1/tcp/2000')], protocols: [] }
|
||||
{ id: peerIds[0], multiaddrs: [multiaddr('/ip4/30.0.0.1/tcp/2000')], protocols: [] }
|
||||
],
|
||||
providers: []
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import { pipe } from 'it-pipe'
|
||||
import { createNode, populateAddressBooks } from '../utils/creators/peer.js'
|
||||
import { createBaseOptions } from '../utils/base-options.js'
|
||||
import { PROTOCOL } from '../../src/ping/constants.js'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import pDefer from 'p-defer'
|
||||
import type { Libp2pNode } from '../../src/libp2p.js'
|
||||
|
||||
@ -27,7 +27,7 @@ describe('ping', () => {
|
||||
afterEach(async () => await Promise.all(nodes.map(async n => await n.stop())))
|
||||
|
||||
it('ping once from peer0 to peer1 using a multiaddr', async () => {
|
||||
const ma = new Multiaddr(`${nodes[2].getMultiaddrs()[0].toString()}/p2p/${nodes[2].peerId.toString()}`)
|
||||
const ma = multiaddr(`${nodes[2].getMultiaddrs()[0].toString()}/p2p/${nodes[2].peerId.toString()}`)
|
||||
const latency = await nodes[0].ping(ma)
|
||||
|
||||
expect(latency).to.be.a('Number')
|
||||
|
@ -6,7 +6,7 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
||||
import { PreSharedKeyConnectionProtector, generateKey } from '../../src/pnet/index.js'
|
||||
import { INVALID_PSK } from '../../src/pnet/errors.js'
|
||||
import { mockMultiaddrConnPair } from '@libp2p/interface-mocks'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { createEd25519PeerId } from '@libp2p/peer-id-factory'
|
||||
|
||||
const swarmKeyBuffer = new Uint8Array(95)
|
||||
@ -28,8 +28,8 @@ describe('private network', () => {
|
||||
it('should protect a simple connection', async () => {
|
||||
const { inbound, outbound } = mockMultiaddrConnPair({
|
||||
addrs: [
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/1234'),
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/1235')
|
||||
multiaddr('/ip4/127.0.0.1/tcp/1234'),
|
||||
multiaddr('/ip4/127.0.0.1/tcp/1235')
|
||||
],
|
||||
remotePeer: await createEd25519PeerId()
|
||||
})
|
||||
@ -63,8 +63,8 @@ describe('private network', () => {
|
||||
it('should not be able to share correct data with different keys', async () => {
|
||||
const { inbound, outbound } = mockMultiaddrConnPair({
|
||||
addrs: [
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/1234'),
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/1235')
|
||||
multiaddr('/ip4/127.0.0.1/tcp/1234'),
|
||||
multiaddr('/ip4/127.0.0.1/tcp/1235')
|
||||
],
|
||||
remotePeer: await createEd25519PeerId()
|
||||
})
|
||||
|
@ -5,16 +5,14 @@ import { pEvent } from 'p-event'
|
||||
import defer from 'p-defer'
|
||||
import pWaitFor from 'p-wait-for'
|
||||
import sinon from 'sinon'
|
||||
import nock from 'nock'
|
||||
import { create as createIpfsHttpClient } from 'ipfs-http-client'
|
||||
import { DelegatedContentRouting } from '@libp2p/delegated-content-routing'
|
||||
import { RELAY_CODEC } from '../../src/circuit/multicodec.js'
|
||||
import { createNode } from '../utils/creators/peer.js'
|
||||
import type { Libp2pNode } from '../../src/libp2p.js'
|
||||
import type { Options as PWaitForOptions } from 'p-wait-for'
|
||||
import type Sinon from 'sinon'
|
||||
import { createRelayOptions, createNodeOptions } from './utils.js'
|
||||
import { protocols } from '@multiformats/multiaddr'
|
||||
import { StubbedInstance, stubInterface } from 'ts-sinon'
|
||||
import type { ContentRouting } from '@libp2p/interface-content-routing'
|
||||
|
||||
async function usingAsRelay (node: Libp2pNode, relay: Libp2pNode, opts?: PWaitForOptions<boolean>) {
|
||||
// Wait for peer to be used as a relay
|
||||
@ -331,27 +329,33 @@ describe('auto-relay', () => {
|
||||
let local: Libp2pNode
|
||||
let remote: Libp2pNode
|
||||
let relayLibp2p: Libp2pNode
|
||||
let contentRoutingProvideSpy: Sinon.SinonSpy
|
||||
let localDelegate: StubbedInstance<ContentRouting>
|
||||
let remoteDelegate: StubbedInstance<ContentRouting>
|
||||
let relayDelegate: StubbedInstance<ContentRouting>
|
||||
|
||||
beforeEach(async () => {
|
||||
const delegate = new DelegatedContentRouting(createIpfsHttpClient({
|
||||
host: '0.0.0.0',
|
||||
protocol: 'http',
|
||||
port: 60197
|
||||
}))
|
||||
localDelegate = stubInterface<ContentRouting>()
|
||||
localDelegate.findProviders.returns(async function * () {}())
|
||||
|
||||
remoteDelegate = stubInterface<ContentRouting>()
|
||||
remoteDelegate.findProviders.returns(async function * () {}())
|
||||
|
||||
relayDelegate = stubInterface<ContentRouting>()
|
||||
relayDelegate.provide.returns(Promise.resolve())
|
||||
relayDelegate.findProviders.returns(async function * () {}())
|
||||
|
||||
;[local, remote, relayLibp2p] = await Promise.all([
|
||||
createNode({
|
||||
config: createNodeOptions({
|
||||
contentRouters: [
|
||||
delegate
|
||||
localDelegate
|
||||
]
|
||||
})
|
||||
}),
|
||||
createNode({
|
||||
config: createNodeOptions({
|
||||
contentRouters: [
|
||||
delegate
|
||||
remoteDelegate
|
||||
]
|
||||
})
|
||||
}),
|
||||
@ -369,43 +373,30 @@ describe('auto-relay', () => {
|
||||
}
|
||||
},
|
||||
contentRouters: [
|
||||
delegate
|
||||
relayDelegate
|
||||
]
|
||||
})
|
||||
})
|
||||
])
|
||||
|
||||
contentRoutingProvideSpy = sinon.spy(relayLibp2p.contentRouting, 'provide')
|
||||
})
|
||||
|
||||
beforeEach(async () => {
|
||||
nock('http://0.0.0.0:60197')
|
||||
// mock the refs call
|
||||
.post('/api/v0/refs')
|
||||
.query(true)
|
||||
.reply(200, undefined, [
|
||||
'Content-Type', 'application/json',
|
||||
'X-Chunked-Output', '1'
|
||||
])
|
||||
|
||||
// Start each node
|
||||
await Promise.all([local, remote, relayLibp2p].map(async libp2p => await libp2p.start()))
|
||||
|
||||
// Should provide on start
|
||||
await pWaitFor(() => contentRoutingProvideSpy.callCount === 1)
|
||||
await pWaitFor(() => relayDelegate.provide.callCount === 1)
|
||||
|
||||
const provider = relayLibp2p.peerId.toString()
|
||||
const provider = relayLibp2p.peerId
|
||||
const multiaddrs = relayLibp2p.getMultiaddrs().map(ma => ma.decapsulateCode(protocols('p2p').code))
|
||||
|
||||
// Mock findProviders
|
||||
nock('http://0.0.0.0:60197')
|
||||
.post('/api/v0/dht/findprovs')
|
||||
.query(true)
|
||||
.twice()
|
||||
.reply(200, `{"Extra":"","ID":"${provider}","Responses":[{"Addrs":${JSON.stringify(multiaddrs)},"ID":"${provider}"}],"Type":4}\n`, [
|
||||
'Content-Type', 'application/json',
|
||||
'X-Chunked-Output', '1'
|
||||
])
|
||||
localDelegate.findProviders.returns(async function * () {
|
||||
yield {
|
||||
id: provider,
|
||||
multiaddrs,
|
||||
protocols: []
|
||||
}
|
||||
}())
|
||||
})
|
||||
|
||||
afterEach(async () => {
|
||||
@ -417,8 +408,6 @@ describe('auto-relay', () => {
|
||||
const originalMultiaddrsLength = local.getMultiaddrs().length
|
||||
|
||||
// Spy Find Providers
|
||||
const contentRoutingFindProvidersSpy = sinon.spy(local.contentRouting, 'findProviders')
|
||||
|
||||
const relayAddr = relayLibp2p.getMultiaddrs().pop()
|
||||
|
||||
if (relayAddr == null) {
|
||||
@ -435,7 +424,7 @@ describe('auto-relay', () => {
|
||||
await local.hangUp(relayAddr)
|
||||
|
||||
// Should try to find relay service providers
|
||||
await pWaitFor(() => contentRoutingFindProvidersSpy.callCount === 1, {
|
||||
await pWaitFor(() => localDelegate.findProviders.callCount === 1, {
|
||||
timeout: 1000
|
||||
})
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import sinon from 'sinon'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { pipe } from 'it-pipe'
|
||||
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
||||
import { createNode } from '../utils/creators/peer.js'
|
||||
@ -150,7 +150,7 @@ describe('Dialing (via relay, TCP)', () => {
|
||||
|
||||
// Connect the destination peer and the relay
|
||||
const tcpAddrs = dstLibp2p.components.getTransportManager().getAddrs()
|
||||
sinon.stub(dstLibp2p.components.getAddressManager(), 'getListenAddrs').returns([new Multiaddr(`${relayAddr.toString()}/p2p-circuit`)])
|
||||
sinon.stub(dstLibp2p.components.getAddressManager(), 'getListenAddrs').returns([multiaddr(`${relayAddr.toString()}/p2p-circuit`)])
|
||||
|
||||
await dstLibp2p.components.getTransportManager().listen(dstLibp2p.components.getAddressManager().getListenAddrs())
|
||||
expect(dstLibp2p.components.getTransportManager().getAddrs()).to.have.deep.members([...tcpAddrs, dialAddr.decapsulate('p2p')])
|
||||
|
@ -7,7 +7,7 @@ import { DefaultTransportManager } from '../../src/transport-manager.js'
|
||||
import { PersistentPeerStore } from '@libp2p/peer-store'
|
||||
import { PeerRecord } from '@libp2p/peer-record'
|
||||
import { TCP } from '@libp2p/tcp'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { mockUpgrader } from '@libp2p/interface-mocks'
|
||||
import sinon from 'sinon'
|
||||
import Peers from '../fixtures/peers.js'
|
||||
@ -18,8 +18,8 @@ import { Components } from '@libp2p/components'
|
||||
import { PeerRecordUpdater } from '../../src/peer-record-updater.js'
|
||||
|
||||
const addrs = [
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/0'),
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
multiaddr('/ip4/127.0.0.1/tcp/0'),
|
||||
multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
]
|
||||
|
||||
describe('Transport Manager (TCP)', () => {
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
import { expect } from 'aegir/chai'
|
||||
import sinon from 'sinon'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { WebSockets } from '@libp2p/websockets'
|
||||
import * as filters from '@libp2p/websockets/filters'
|
||||
import { Plaintext } from '../../src/insecure/index.js'
|
||||
@ -17,7 +17,7 @@ import { createEd25519PeerId, createFromJSON } from '@libp2p/peer-id-factory'
|
||||
import type { PeerId } from '@libp2p/interface-peer-id'
|
||||
import { createLibp2pNode, Libp2pNode } from '../../src/libp2p.js'
|
||||
|
||||
const listenAddr = new Multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
const listenAddr = multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
|
||||
describe('Transport Manager (WebSockets)', () => {
|
||||
let tm: DefaultTransportManager
|
||||
@ -71,7 +71,7 @@ describe('Transport Manager (WebSockets)', () => {
|
||||
|
||||
it('should fail to dial an unsupported address', async () => {
|
||||
tm.add(new WebSockets({ filter: filters.all }))
|
||||
const addr = new Multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
const addr = multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
await expect(tm.dial(addr))
|
||||
.to.eventually.be.rejected()
|
||||
.and.to.have.property('code', ErrorCodes.ERR_TRANSPORT_UNAVAILABLE)
|
||||
|
@ -3,7 +3,7 @@
|
||||
import { expect } from 'aegir/chai'
|
||||
import sinon from 'sinon'
|
||||
import { Mplex } from '@libp2p/mplex'
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import { pipe } from 'it-pipe'
|
||||
import all from 'it-all'
|
||||
import pSettle from 'p-settle'
|
||||
@ -34,8 +34,8 @@ import { PersistentPeerStore } from '@libp2p/peer-store'
|
||||
import { MemoryDatastore } from 'datastore-core'
|
||||
|
||||
const addrs = [
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/0'),
|
||||
new Multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
multiaddr('/ip4/127.0.0.1/tcp/0'),
|
||||
multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
]
|
||||
|
||||
describe('Upgrader', () => {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Multiaddr } from '@multiformats/multiaddr'
|
||||
import { multiaddr } from '@multiformats/multiaddr'
|
||||
import Peers from '../../fixtures/peers.js'
|
||||
import { createBaseOptions } from '../base-options.browser.js'
|
||||
import { createEd25519PeerId, createFromJSON, createRSAPeerId } from '@libp2p/peer-id-factory'
|
||||
@ -6,7 +6,7 @@ import { createLibp2pNode, Libp2pNode } from '../../../src/libp2p.js'
|
||||
import type { AddressesConfig, Libp2pOptions } from '../../../src/index.js'
|
||||
import type { PeerId } from '@libp2p/interface-peer-id'
|
||||
|
||||
const listenAddr = new Multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
const listenAddr = multiaddr('/ip4/127.0.0.1/tcp/0')
|
||||
|
||||
export interface CreatePeerOptions {
|
||||
/**
|
||||
|
Reference in New Issue
Block a user