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 })