@@ -11,6 +11,7 @@ const Topology = require('libp2p-interfaces/src/topology/multicodec-topology')
11
11
const PeerStore = require ( '../../src/peer-store' )
12
12
const Registrar = require ( '../../src/registrar' )
13
13
const { createMockConnection } = require ( './utils' )
14
+ const peerUtils = require ( '../utils/creators/peer' )
14
15
15
16
const multicodec = '/test/1.0.0'
16
17
@@ -170,5 +171,44 @@ describe('registrar', () => {
170
171
171
172
await onDisconnectDefer . promise
172
173
} )
174
+
175
+ it ( 'should filter connections on disconnect, removing the closed one' , async ( ) => {
176
+ const onDisconnectDefer = pDefer ( )
177
+
178
+ const topologyProps = new Topology ( {
179
+ multicodecs : multicodec ,
180
+ handlers : {
181
+ onConnect : ( ) => { } ,
182
+ onDisconnect : ( ) => {
183
+ onDisconnectDefer . resolve ( )
184
+ }
185
+ }
186
+ } )
187
+
188
+ // Register protocol
189
+ registrar . register ( topologyProps )
190
+
191
+ // Setup connections before registrar
192
+ const [ localPeer , remotePeer ] = await peerUtils . createPeerInfo ( { number : 2 } )
193
+
194
+ const conn1 = await createMockConnection ( { localPeer : localPeer . id , remotePeer : remotePeer . id } )
195
+ const conn2 = await createMockConnection ( { localPeer : localPeer . id , remotePeer : remotePeer . id } )
196
+ const peerInfo = await PeerInfo . create ( remotePeer . id )
197
+ const id = peerInfo . id . toString ( )
198
+
199
+ // Add connection to registrar
200
+ peerStore . put ( peerInfo )
201
+ registrar . onConnect ( peerInfo , conn1 )
202
+ registrar . onConnect ( peerInfo , conn2 )
203
+
204
+ expect ( registrar . connections . get ( id ) . length ) . to . eql ( 2 )
205
+
206
+ conn2 . _stat . status = 'closed'
207
+ registrar . onDisconnect ( peerInfo , conn2 )
208
+
209
+ const peerConnections = registrar . connections . get ( id )
210
+ expect ( peerConnections . length ) . to . eql ( 1 )
211
+ expect ( peerConnections [ 0 ] . _stat . status ) . to . eql ( 'open' )
212
+ } )
173
213
} )
174
214
} )
0 commit comments