@@ -17,19 +17,30 @@ const sinon = require('sinon')
17
17
const expect = require ( 'chai' ) . expect
18
18
19
19
describe ( 'relay' , function ( ) {
20
- describe ( `handle circuit requests` , function ( ) {
20
+ describe ( `should handle circuit requests` , function ( ) {
21
21
let relay
22
22
let swarm
23
23
let fromConn
24
24
let stream
25
25
let shake
26
26
27
27
beforeEach ( function ( done ) {
28
- stream = handshake ( { timeout : 1000 * 60 } )
28
+ stream = handshake ( { timeout : 1000 * 60 } )
29
29
shake = stream . handshake
30
30
fromConn = new Connection ( stream )
31
31
fromConn . setPeerInfo ( new PeerInfo ( PeerId . createFromB58String ( 'QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA' ) ) )
32
32
33
+ let peers = {
34
+ QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE :
35
+ new PeerInfo ( PeerId . createFromB58String ( `QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE` ) ) ,
36
+ QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA :
37
+ new PeerInfo ( PeerId . createFromB58String ( `QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) ) ,
38
+ QmQvM2mpqkjyXWbTHSUidUAWN26GgdMphTh9iGDdjgVXCy :
39
+ new PeerInfo ( PeerId . createFromB58String ( `QmQvM2mpqkjyXWbTHSUidUAWN26GgdMphTh9iGDdjgVXCy` ) )
40
+ }
41
+
42
+ Object . keys ( peers ) . forEach ( ( key ) => { peers [ key ] . _connectedMultiaddr = true } ) // make it truthy
43
+
33
44
waterfall ( [
34
45
( cb ) => PeerId . createFromJSON ( nodes . node4 , cb ) ,
35
46
( peerId , cb ) => PeerInfo . create ( peerId , cb ) ,
@@ -38,14 +49,25 @@ describe('relay', function () {
38
49
swarm = {
39
50
_peerInfo : peer ,
40
51
conns : {
41
- QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE : new Connection ( )
52
+ QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE : new Connection ( ) ,
53
+ QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA : new Connection ( ) ,
54
+ QmQvM2mpqkjyXWbTHSUidUAWN26GgdMphTh9iGDdjgVXCy : new Connection ( )
55
+ } ,
56
+ _peerBook : {
57
+ get : ( peer ) => {
58
+ if ( ! peers [ peer ] ) {
59
+ throw new Error ( )
60
+ }
61
+
62
+ return peers [ peer ]
63
+ }
42
64
}
43
65
}
44
66
45
67
cb ( )
46
68
}
47
69
] , ( ) => {
48
- relay = new Hop ( swarm , { enabled : true } )
70
+ relay = new Hop ( swarm , { enabled : true } )
49
71
relay . _circuit = sinon . stub ( )
50
72
relay . _circuit . callsArg ( 2 , null , new Connection ( ) )
51
73
done ( )
@@ -56,15 +78,15 @@ describe('relay', function () {
56
78
relay . _circuit . reset ( )
57
79
} )
58
80
59
- it ( `handle a valid circuit request` , function ( done ) {
81
+ it ( `should handle a valid circuit request` , function ( done ) {
60
82
let relayMsg = {
61
83
type : proto . CircuitRelay . Type . HOP ,
62
84
srcPeer : {
63
- id : Buffer . from ( `QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE` ) ,
85
+ id : PeerId . createFromB58String ( `QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE` ) . id ,
64
86
addrs : [ multiaddr ( `/ipfs/QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE` ) . buffer ]
65
87
} ,
66
88
dstPeer : {
67
- id : Buffer . from ( `QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) ,
89
+ id : PeerId . createFromB58String ( `QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) . id ,
68
90
addrs : [ multiaddr ( `/ipfs/QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) . buffer ]
69
91
}
70
92
}
@@ -77,15 +99,67 @@ describe('relay', function () {
77
99
relay . handle ( relayMsg , new StreamHandler ( fromConn ) )
78
100
} )
79
101
102
+ it ( `should handle a request to passive circuit` , function ( done ) {
103
+ let relayMsg = {
104
+ type : proto . CircuitRelay . Type . HOP ,
105
+ srcPeer : {
106
+ id : PeerId . createFromB58String ( `QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) . id ,
107
+ addrs : [ multiaddr ( `/ipfs/QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) . buffer ]
108
+ } ,
109
+ dstPeer : {
110
+ id : PeerId . createFromB58String ( `QmYJjAri5soV8RbeQcHaYYcTAYTET17QTvcoFMyKvRDTXe` ) . id ,
111
+ addrs : [ multiaddr ( `/ipfs/QmYJjAri5soV8RbeQcHaYYcTAYTET17QTvcoFMyKvRDTXe` ) . buffer ]
112
+ }
113
+ }
114
+
115
+ relay . active = false
116
+ lp . decodeFromReader ( shake , ( err , msg ) => {
117
+ expect ( err ) . to . be . null
118
+
119
+ const response = proto . CircuitRelay . decode ( msg )
120
+ expect ( response . code ) . to . equal ( proto . CircuitRelay . Status . HOP_NO_CONN_TO_DST )
121
+ expect ( response . type ) . to . equal ( proto . CircuitRelay . Type . STATUS )
122
+ done ( )
123
+ } )
124
+
125
+ relay . handle ( relayMsg , new StreamHandler ( fromConn ) )
126
+ } )
127
+
128
+ it ( `should handle a request to active circuit` , function ( done ) {
129
+ let relayMsg = {
130
+ type : proto . CircuitRelay . Type . HOP ,
131
+ srcPeer : {
132
+ id : PeerId . createFromB58String ( `QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) . id ,
133
+ addrs : [ multiaddr ( `/ipfs/QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) . buffer ]
134
+ } ,
135
+ dstPeer : {
136
+ id : PeerId . createFromB58String ( `QmYJjAri5soV8RbeQcHaYYcTAYTET17QTvcoFMyKvRDTXe` ) . id ,
137
+ addrs : [ multiaddr ( `/ipfs/QmYJjAri5soV8RbeQcHaYYcTAYTET17QTvcoFMyKvRDTXe` ) . buffer ]
138
+ }
139
+ }
140
+
141
+ relay . active = true
142
+ relay . on ( 'circuit:success' , ( ) => {
143
+ expect ( relay . _circuit . calledWith ( sinon . match . any , relayMsg ) ) . to . be . ok
144
+ done ( )
145
+ } )
146
+
147
+ relay . on ( 'circuit:error' , ( err ) => {
148
+ done ( err )
149
+ } )
150
+
151
+ relay . handle ( relayMsg , new StreamHandler ( fromConn ) )
152
+ } )
153
+
80
154
it ( `not dial to self` , function ( done ) {
81
155
let relayMsg = {
82
156
type : proto . CircuitRelay . Type . HOP ,
83
157
srcPeer : {
84
- id : Buffer . from ( `QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE` ) ,
158
+ id : PeerId . createFromB58String ( `QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE` ) . id ,
85
159
addrs : [ multiaddr ( `/ipfs/QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE` ) . buffer ]
86
160
} ,
87
161
dstPeer : {
88
- id : Buffer . from ( `QmQvM2mpqkjyXWbTHSUidUAWN26GgdMphTh9iGDdjgVXCy` ) ,
162
+ id : PeerId . createFromB58String ( `QmQvM2mpqkjyXWbTHSUidUAWN26GgdMphTh9iGDdjgVXCy` ) . id ,
89
163
addrs : [ multiaddr ( `/ipfs/QmQvM2mpqkjyXWbTHSUidUAWN26GgdMphTh9iGDdjgVXCy` ) . buffer ]
90
164
}
91
165
}
@@ -110,7 +184,7 @@ describe('relay', function () {
110
184
addrs : [ `sdfkjsdnfkjdsb` ]
111
185
} ,
112
186
dstPeer : {
113
- id : Buffer . from ( `QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) ,
187
+ id : PeerId . createFromB58String ( `QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) . id ,
114
188
addrs : [ multiaddr ( `/ipfs/QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) . buffer ]
115
189
}
116
190
}
@@ -131,11 +205,11 @@ describe('relay', function () {
131
205
let relayMsg = {
132
206
type : proto . CircuitRelay . Type . HOP ,
133
207
srcPeer : {
134
- id : Buffer . from ( `QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) ,
208
+ id : PeerId . createFromB58String ( `QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) . id ,
135
209
addrs : [ multiaddr ( `/ipfs/QmQWqGdndSpAkxfk8iyiJyz3XXGkrDNujvc8vEst3baubA` ) . buffer ]
136
210
} ,
137
211
dstPeer : {
138
- id : `sdfkjsdnfkjdsb` ,
212
+ id : PeerId . createFromB58String ( `QmSswe1dCFRepmhjAMR5VfHeokGLcvVggkuDJm7RMfJSrE` ) . id ,
139
213
addrs : [ `sdfkjsdnfkjdsb` ]
140
214
}
141
215
}
0 commit comments