@@ -189,6 +189,27 @@ describe('pubsub base protocol', () => {
189189 expect ( pubsubB . peers . size ) . to . be . eql ( 1 )
190190 } )
191191
192+ it ( 'should handle newStream errors in onConnect' , async ( ) => {
193+ const onConnectA = registrarRecordA [ protocol ] . onConnect
194+ const handlerB = registrarRecordB [ protocol ] . handler
195+
196+ // Notice peers of connection
197+ const [ c0 , c1 ] = ConnectionPair ( )
198+ const error = new Error ( 'new stream error' )
199+ sinon . stub ( c0 , 'newStream' ) . throws ( error )
200+
201+ await onConnectA ( peerInfoB , c0 )
202+ await handlerB ( {
203+ protocol,
204+ stream : c1 . stream ,
205+ connection : {
206+ remotePeer : peerInfoA . id
207+ }
208+ } )
209+
210+ expect ( c0 . newStream ) . to . have . property ( 'callCount' , 1 )
211+ } )
212+
192213 it ( 'should handle onDisconnect as expected' , async ( ) => {
193214 const onConnectA = registrarRecordA [ protocol ] . onConnect
194215 const onDisconnectA = registrarRecordA [ protocol ] . onDisconnect
@@ -214,6 +235,17 @@ describe('pubsub base protocol', () => {
214235 expect ( pubsubA . peers . size ) . to . be . eql ( 0 )
215236 expect ( pubsubB . peers . size ) . to . be . eql ( 0 )
216237 } )
238+
239+ it ( 'should handle onDisconnect for unknown peers' , ( ) => {
240+ const onDisconnectA = registrarRecordA [ protocol ] . onDisconnect
241+
242+ expect ( pubsubA . peers . size ) . to . be . eql ( 0 )
243+
244+ // Notice peers of disconnect
245+ onDisconnectA ( peerInfoB )
246+
247+ expect ( pubsubA . peers . size ) . to . be . eql ( 0 )
248+ } )
217249 } )
218250
219251 describe ( 'getSubscribers' , ( ) => {
0 commit comments