This repository was archived by the owner on Aug 23, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy path03-transport-websockets.node.js
123 lines (110 loc) · 3.23 KB
/
03-transport-websockets.node.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/* eslint-env mocha */
'use strict'
const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const parallel = require('async/parallel')
const multiaddr = require('multiaddr')
const WebSockets = require('libp2p-websockets')
const pull = require('pull-stream')
const goodbye = require('pull-goodbye')
const utils = require('./utils')
const Swarm = require('../src')
describe('transport - websockets', function () {
var swarmA
var swarmB
var peerA
var peerB
before((done) => {
utils.createInfos(2, (err, infos) => {
if (err) {
return done(err)
}
peerA = infos[0]
peerB = infos[1]
peerA.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9888/ws'))
peerB.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9999/ws/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC'))
swarmA = new Swarm(peerA)
swarmB = new Swarm(peerB)
done()
})
})
it('add', (done) => {
swarmA.transport.add('ws', new WebSockets())
expect(Object.keys(swarmA.transports).length).to.equal(1)
swarmB.transport.add('ws', new WebSockets(), () => {
expect(Object.keys(swarmB.transports).length).to.equal(1)
done()
})
})
it('listen', (done) => {
parallel([
(cb) => swarmA.transport.listen('ws', {}, (conn) => {
pull(conn, conn)
}, cb),
(cb) => swarmB.transport.listen('ws', {}, (conn) => {
pull(conn, conn)
}, cb)
], () => {
expect(peerA.multiaddrs.length).to.equal(1)
expect(
peerA.multiaddrs[0].equals(multiaddr('/ip4/127.0.0.1/tcp/9888/ws'))
).to.be.equal(
true
)
expect(peerB.multiaddrs.length).to.equal(1)
expect(
peerB.multiaddrs[0].equals(multiaddr('/ip4/127.0.0.1/tcp/9999/ws/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC'))
).to.equal(
true
)
done()
})
})
it('dial', (done) => {
const conn = swarmA.transport.dial('ws', multiaddr('/ip4/127.0.0.1/tcp/9999/ws'), (err, conn) => {
expect(err).to.not.exist()
})
const s = goodbye({
source: pull.values([Buffer('hey')]),
sink: pull.collect((err, data) => {
expect(err).to.not.exist()
expect(data).to.be.eql([Buffer('hey')])
done()
})
})
pull(s, conn, s)
})
it('dial (conn from callback)', (done) => {
swarmA.transport.dial('ws', multiaddr('/ip4/127.0.0.1/tcp/9999/ws'), (err, conn) => {
expect(err).to.not.exist()
const s = goodbye({
source: pull.values([Buffer('hey')]),
sink: pull.collect((err, data) => {
expect(err).to.not.exist()
expect(data).to.be.eql([Buffer('hey')])
done()
})
})
pull(s, conn, s)
})
})
it('dial to set of multiaddr, none is available', (done) => {
swarmA.transport.dial('ws', [
multiaddr('/ip4/127.0.0.1/tcp/9320/ws'),
multiaddr('/ip4/127.0.0.1/tcp/9359/ws')
], (err, conn) => {
expect(err).to.exist()
expect(err.errors).to.have.length(2)
expect(conn).to.not.exist()
done()
})
})
it('close', (done) => {
parallel([
(cb) => swarmA.transport.close('ws', cb),
(cb) => swarmB.transport.close('ws', cb)
], done)
})
})