diff options
author | Alex <alxmorais8@msn.com> | 2019-09-08 00:45:37 +0300 |
---|---|---|
committer | Alex <alxmorais8@msn.com> | 2019-09-08 00:45:37 +0300 |
commit | 9fa006813eeda248102f75ce0055939f33483f76 (patch) | |
tree | d8853c2a9d3b6e0e19c52d24b021d618874d2199 /test | |
parent | 4bff7bd38c6efae467adf17df4b679aab5ac6266 (diff) |
Add tests for torrent events order
For #1737
Diffstat (limited to 'test')
-rw-r--r-- | test/torrent-events.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/test/torrent-events.js b/test/torrent-events.js new file mode 100644 index 0000000..febf1c4 --- /dev/null +++ b/test/torrent-events.js @@ -0,0 +1,83 @@ +const fixtures = require('webtorrent-fixtures') +const test = require('tape') +const WebTorrent = require('../') +const MemoryChunkStore = require('memory-chunk-store') + +test('client.add: emit torrent events in order', function (t) { + t.plan(6) + + var client1 = new WebTorrent({ dht: false, tracker: false }) + var client2 = new WebTorrent({ dht: false, tracker: false }) + + client1.on('error', function (err) { t.fail(err) }) + client1.on('warning', function (err) { t.fail(err) }) + + client2.on('error', function (err) { t.fail(err) }) + client2.on('warning', function (err) { t.fail(err) }) + + // Start seeding + client2.seed(fixtures.leaves.content, { + name: 'Leaves of Grass by Walt Whitman.epub', + announce: [] + }) + + client2.on('listening', function () { + // Start downloading + var torrent = client1.add(fixtures.leaves.parsedTorrent.infoHash, { store: MemoryChunkStore }) + + // Manually connect peers + torrent.addPeer('127.0.0.1:' + client2.address().port) + + var order = 0 + + torrent.on('infoHash', function () { + t.equal(++order, 1) + }) + + torrent.on('metadata', function () { + t.equal(++order, 2) + }) + + torrent.on('ready', function () { + t.equal(++order, 3) + }) + + torrent.on('done', function () { + t.equal(++order, 4) + + client1.destroy(function (err) { t.error(err, 'client 1 destroyed') }) + client2.destroy(function (err) { t.error(err, 'client 2 destroyed') }) + }) + }) +}) + +test('client.seed: emit torrent events in order', function (t) { + t.plan(5) + + var client = new WebTorrent({ dht: false, tracker: false }) + + client.on('error', function (err) { t.fail(err) }) + client.on('warning', function (err) { t.fail(err) }) + + var torrent = client.seed(fixtures.leaves.content) + + var order = 0 + + torrent.on('infoHash', function () { + t.equal(++order, 1) + }) + + torrent.on('metadata', function () { + t.equal(++order, 2) + }) + + torrent.on('ready', function () { + t.equal(++order, 3) + }) + + torrent.on('done', function () { + t.equal(++order, 4) + + client.destroy(function (err) { t.error(err, 'client destroyed') }) + }) +}) |