mirror of
https://github.com/fluencelabs/js-libp2p-interfaces
synced 2025-04-01 21:31:16 +00:00
70 lines
1.8 KiB
JavaScript
70 lines
1.8 KiB
JavaScript
/* eslint-env mocha */
|
|
'use strict'
|
|
|
|
const tests = require('../../src/connection/tests')
|
|
const { Connection } = require('../../src/connection')
|
|
const peers = require('../../src/utils/peers')
|
|
const PeerId = require('peer-id')
|
|
const multiaddr = require('multiaddr')
|
|
const pair = require('it-pair')
|
|
|
|
describe('compliance tests', () => {
|
|
tests({
|
|
/**
|
|
* Test setup. `properties` allows the compliance test to override
|
|
* certain values for testing.
|
|
* @param {*} properties
|
|
*/
|
|
async setup (properties) {
|
|
const localAddr = multiaddr('/ip4/127.0.0.1/tcp/8080')
|
|
const remoteAddr = multiaddr('/ip4/127.0.0.1/tcp/8081')
|
|
const [localPeer, remotePeer] = await Promise.all([
|
|
PeerId.createFromJSON(peers[0]),
|
|
PeerId.createFromJSON(peers[1])
|
|
])
|
|
const openStreams = []
|
|
let streamId = 0
|
|
|
|
const connection = new Connection({
|
|
localPeer,
|
|
remotePeer,
|
|
localAddr,
|
|
remoteAddr,
|
|
stat: {
|
|
timeline: {
|
|
open: Date.now() - 10,
|
|
upgraded: Date.now()
|
|
},
|
|
direction: 'outbound',
|
|
encryption: '/secio/1.0.0',
|
|
multiplexer: '/mplex/6.7.0'
|
|
},
|
|
newStream: (protocols) => {
|
|
const id = streamId++
|
|
const stream = pair()
|
|
|
|
stream.close = async () => {
|
|
await stream.sink([])
|
|
connection.removeStream(stream.id)
|
|
}
|
|
stream.id = id
|
|
|
|
openStreams.push(stream)
|
|
|
|
return {
|
|
stream,
|
|
protocol: protocols[0]
|
|
}
|
|
},
|
|
close: () => {},
|
|
getStreams: () => openStreams,
|
|
...properties
|
|
})
|
|
return connection
|
|
},
|
|
async teardown () {
|
|
// cleanup resources created by setup()
|
|
}
|
|
})
|
|
})
|