diff --git a/test/destroy.js b/test/destroy.js new file mode 100644 index 0000000..f6eafb6 --- /dev/null +++ b/test/destroy.js @@ -0,0 +1,51 @@ +var Buffer = require('safe-buffer').Buffer +var Client = require('../') +var common = require('./common') +var fixtures = require('webtorrent-fixtures') +var test = require('tape') + +var peerId = Buffer.from('01234567890123456789') +var port = 6881 + +function testNoEventsAfterDestroy (t, serverType) { + t.plan(1) + + common.createServer(t, serverType, function (server, announceUrl) { + var client = new Client({ + infoHash: fixtures.leaves.parsedTorrent.infoHash, + announce: announceUrl, + peerId: peerId, + port: port, + wrtc: {} + }) + + if (serverType === 'ws') common.mockWebsocketTracker(client) + client.on('error', function (err) { t.error(err) }) + client.on('warning', function (err) { t.error(err) }) + + client.once('update', function () { + t.fail('no "update" event should fire, since client is destroyed') + }) + + // announce, then immediately destroy + client.update() + client.destroy() + + setTimeout(function () { + t.pass('wait to see if any events are fired') + server.close() + }, 1000) + }) +} + +test('http: no "update" events after destroy()', function (t) { + testNoEventsAfterDestroy(t, 'http') +}) + +test('udp: no "update" events after destroy()', function (t) { + testNoEventsAfterDestroy(t, 'udp') +}) + +test('ws: no "update" events after destroy()', function (t) { + testNoEventsAfterDestroy(t, 'ws') +})