2016-08-31 06:41:34 -04:00
|
|
|
/* eslint-env mocha */
|
|
|
|
'use strict'
|
|
|
|
|
2019-09-16 16:19:47 +01:00
|
|
|
const sinon = require('sinon')
|
2019-12-06 09:42:43 +01:00
|
|
|
const tests = require('libp2p-interfaces/src/transport/tests')
|
2016-08-31 06:41:34 -04:00
|
|
|
const multiaddr = require('multiaddr')
|
2019-09-16 16:19:47 +01:00
|
|
|
const net = require('net')
|
2018-02-07 06:40:00 +00:00
|
|
|
const TCP = require('../src')
|
2016-08-31 06:41:34 -04:00
|
|
|
|
2016-09-05 18:13:43 -04:00
|
|
|
describe('interface-transport compliance', () => {
|
2016-08-31 06:41:34 -04:00
|
|
|
tests({
|
2019-09-16 16:19:47 +01:00
|
|
|
setup ({ upgrader }) {
|
|
|
|
const tcp = new TCP({ upgrader })
|
2016-08-31 06:41:34 -04:00
|
|
|
const addrs = [
|
|
|
|
multiaddr('/ip4/127.0.0.1/tcp/9091'),
|
|
|
|
multiaddr('/ip4/127.0.0.1/tcp/9092'),
|
2019-09-19 15:20:54 +02:00
|
|
|
multiaddr('/ip4/127.0.0.1/tcp/9093')
|
2016-08-31 06:41:34 -04:00
|
|
|
]
|
2019-09-16 16:19:47 +01:00
|
|
|
|
|
|
|
// Used by the dial tests to simulate a delayed connect
|
|
|
|
const connector = {
|
|
|
|
delay (delayMs) {
|
|
|
|
const netConnect = net.connect
|
|
|
|
sinon.replace(net, 'connect', (opts) => {
|
|
|
|
const socket = netConnect(opts)
|
|
|
|
const socketEmit = socket.emit.bind(socket)
|
|
|
|
sinon.replace(socket, 'emit', (...args) => {
|
|
|
|
const time = args[0] === 'connect' ? delayMs : 0
|
|
|
|
setTimeout(() => socketEmit(...args), time)
|
|
|
|
})
|
|
|
|
return socket
|
|
|
|
})
|
|
|
|
},
|
|
|
|
restore () {
|
|
|
|
sinon.restore()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return { transport: tcp, addrs, connector }
|
2016-08-31 06:41:34 -04:00
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|