From 9fa006813eeda248102f75ce0055939f33483f76 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 7 Sep 2019 23:45:37 +0200 Subject: Add tests for torrent events order For #1737 --- test/torrent-events.js | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 test/torrent-events.js (limited to 'test') 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') }) + }) +}) -- cgit v1.2.3