/ test / destroy.js
destroy.js
 1  import Client from '../index.js'
 2  import common from './common.js'
 3  import fixtures from 'webtorrent-fixtures'
 4  import test from 'tape'
 5  
 6  const peerId = Buffer.from('01234567890123456789')
 7  const port = 6881
 8  
 9  function testNoEventsAfterDestroy (t, serverType) {
10    t.plan(1)
11  
12    common.createServer(t, serverType, (server, announceUrl) => {
13      const client = new Client({
14        infoHash: fixtures.leaves.parsedTorrent.infoHash,
15        announce: announceUrl,
16        peerId,
17        port,
18        wrtc: {}
19      })
20  
21      if (serverType === 'ws') common.mockWebsocketTracker(client)
22      client.on('error', err => { t.error(err) })
23      client.on('warning', err => { t.error(err) })
24  
25      client.once('update', () => {
26        t.fail('no "update" event should fire, since client is destroyed')
27      })
28  
29      // announce, then immediately destroy
30      client.update()
31      client.destroy()
32  
33      setTimeout(() => {
34        t.pass('wait to see if any events are fired')
35        server.close()
36      }, 1000)
37    })
38  }
39  
40  test('http: no "update" events after destroy()', t => {
41    testNoEventsAfterDestroy(t, 'http')
42  })
43  
44  test('udp: no "update" events after destroy()', t => {
45    testNoEventsAfterDestroy(t, 'udp')
46  })
47  
48  test('ws: no "update" events after destroy()', t => {
49    testNoEventsAfterDestroy(t, 'ws')
50  })