2017-07-04 11:43:45 +01:00
|
|
|
'use strict'
|
|
|
|
|
|
|
|
const PeerInfo = require('peer-info')
|
|
|
|
const PeerId = require('peer-id')
|
|
|
|
const pull = require('pull-stream')
|
2017-11-27 10:10:36 +01:00
|
|
|
const parallel = require('async/parallel')
|
2017-07-04 11:43:45 +01:00
|
|
|
|
2017-11-27 10:10:36 +01:00
|
|
|
const WebSocketStarRendezvous = require('libp2p-websocket-star-rendezvous')
|
2018-06-28 10:06:25 +02:00
|
|
|
const sigServer = require('libp2p-webrtc-star/src/sig-server')
|
|
|
|
|
|
|
|
const rawPeer = require('./test/fixtures/test-peer.json')
|
|
|
|
const Node = require('./test/utils/bundle-nodejs.js')
|
2017-07-04 11:43:45 +01:00
|
|
|
|
2017-11-27 10:10:36 +01:00
|
|
|
let wrtcRendezvous
|
|
|
|
let wsRendezvous
|
2017-07-04 11:43:45 +01:00
|
|
|
let node
|
|
|
|
|
2017-10-26 04:51:36 -07:00
|
|
|
const before = (done) => {
|
2017-11-27 10:10:36 +01:00
|
|
|
parallel([
|
|
|
|
(cb) => {
|
2017-12-01 09:19:44 +00:00
|
|
|
sigServer.start({
|
|
|
|
port: 15555
|
|
|
|
// cryptoChallenge: true TODO: needs https://github.com/libp2p/js-libp2p-webrtc-star/issues/128
|
|
|
|
}, (err, server) => {
|
2018-06-28 10:06:25 +02:00
|
|
|
if (err) {
|
|
|
|
return cb(err)
|
|
|
|
}
|
2017-11-27 10:10:36 +01:00
|
|
|
wrtcRendezvous = server
|
|
|
|
cb()
|
|
|
|
})
|
|
|
|
},
|
|
|
|
(cb) => {
|
|
|
|
WebSocketStarRendezvous.start({
|
|
|
|
port: 14444,
|
|
|
|
refreshPeerListIntervalMS: 1000,
|
|
|
|
strictMultiaddr: false,
|
2017-12-01 09:19:44 +00:00
|
|
|
cryptoChallenge: true
|
2017-11-27 10:10:36 +01:00
|
|
|
}, (err, _server) => {
|
2018-06-28 10:06:25 +02:00
|
|
|
if (err) {
|
|
|
|
return cb(err)
|
|
|
|
}
|
2017-11-27 10:10:36 +01:00
|
|
|
wsRendezvous = _server
|
|
|
|
cb()
|
|
|
|
})
|
|
|
|
},
|
|
|
|
(cb) => {
|
|
|
|
PeerId.createFromJSON(rawPeer, (err, peerId) => {
|
|
|
|
if (err) {
|
|
|
|
return done(err)
|
|
|
|
}
|
|
|
|
const peer = new PeerInfo(peerId)
|
2017-07-04 11:43:45 +01:00
|
|
|
|
2017-11-27 10:10:36 +01:00
|
|
|
peer.multiaddrs.add('/ip4/127.0.0.1/tcp/9200/ws')
|
2017-07-04 11:43:45 +01:00
|
|
|
|
2018-06-28 10:06:25 +02:00
|
|
|
node = new Node({
|
|
|
|
peerInfo: peer
|
|
|
|
})
|
2017-11-27 10:10:36 +01:00
|
|
|
node.handle('/echo/1.0.0', (protocol, conn) => pull(conn, conn))
|
|
|
|
node.start(cb)
|
|
|
|
})
|
2017-07-04 11:43:45 +01:00
|
|
|
}
|
2017-11-27 10:10:36 +01:00
|
|
|
], done)
|
2017-10-26 04:51:36 -07:00
|
|
|
}
|
2017-07-04 11:43:45 +01:00
|
|
|
|
2017-10-26 04:51:36 -07:00
|
|
|
const after = (done) => {
|
2018-06-28 10:06:25 +02:00
|
|
|
setTimeout(() =>
|
|
|
|
parallel(
|
|
|
|
[node, wrtcRendezvous, wsRendezvous].map((s) => (cb) => s.stop(cb)),
|
|
|
|
done),
|
|
|
|
2000)
|
2017-10-26 04:51:36 -07:00
|
|
|
}
|
2017-07-04 11:43:45 +01:00
|
|
|
|
2017-10-26 04:51:36 -07:00
|
|
|
module.exports = {
|
|
|
|
hooks: {
|
|
|
|
pre: before,
|
|
|
|
post: after
|
|
|
|
}
|
|
|
|
}
|