From 7bde207ca9ea2d539daf7304c447639f8a513d0d Mon Sep 17 00:00:00 2001 From: Feross Aboukhadijeh Date: Fri, 15 Jan 2016 02:21:23 +0100 Subject: add more tests for duplicate trackers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For #571. Still can’t reproduce the issue --- test/client-add-duplicate-trackers.js | 70 ++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/client-add-duplicate-trackers.js b/test/client-add-duplicate-trackers.js index 66e8fd2..70cec07 100644 --- a/test/client-add-duplicate-trackers.js +++ b/test/client-add-duplicate-trackers.js @@ -1,8 +1,9 @@ var common = require('./common') +var extend = require('xtend') var test = require('tape') var WebTorrent = require('../') -test('client.add: magnet uri, utf-8 string', function (t) { +test('client.add: duplicate trackers', function (t) { t.plan(3) var client = new WebTorrent({ dht: false, tracker: false }) @@ -20,3 +21,70 @@ test('client.add: magnet uri, utf-8 string', function (t) { client.destroy(function (err) { t.error(err, 'client destroyed') }) }) }) + +test('client.add: duplicate trackers, with multiple torrents', function (t) { + t.plan(5) + + // Re-use this object, in case webtorrent is changing it + var opts = { + announce: [ 'wss://example.com', 'wss://example.com', 'wss://example.com' ] + } + + 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 torrent1 = client.add(common.leaves.torrent, opts) + + torrent1.on('ready', function () { + t.equal(torrent1.magnetURI, common.leaves.magnetURI + '&tr=' + encodeURIComponent('wss://example.com')) + + var torrent2 = client.add(common.alice.torrent, opts) + + torrent2.on('ready', function () { + t.equal(torrent2.magnetURI, common.alice.magnetURI + '&tr=' + encodeURIComponent('wss://example.com')) + + torrent1.destroy(function (err) { t.error(err, 'torrent1 destroyed') }) + torrent2.destroy(function (err) { t.error(err, 'torrent2 destroyed') }) + client.destroy(function (err) { t.error(err, 'client destroyed') }) + }) + }) +}) + +test('client.add: duplicate trackers (including in .torrent file), multiple torrents', function (t) { + t.plan(5) + + // Re-use this object, in case webtorrent is changing it + var opts = { + announce: [ 'wss://example.com', 'wss://example.com', 'wss://example.com' ] + } + + // Include the duplicate trackers in the .torrent files + var parsedTorrentLeaves = extend(common.leaves.parsedTorrent) + parsedTorrentLeaves.announce = [ 'wss://example.com', 'wss://example.com', 'wss://example.com' ] + + var parsedTorrentAlice = extend(common.alice.parsedTorrent) + parsedTorrentAlice.announce = [ 'wss://example.com', 'wss://example.com', 'wss://example.com' ] + + 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 torrent1 = client.add(parsedTorrentLeaves, opts) + + torrent1.on('ready', function () { + t.equal(torrent1.magnetURI, common.leaves.magnetURI + '&tr=' + encodeURIComponent('wss://example.com')) + + var torrent2 = client.add(parsedTorrentAlice, opts) + + torrent2.on('ready', function () { + t.equal(torrent2.magnetURI, common.alice.magnetURI + '&tr=' + encodeURIComponent('wss://example.com')) + + torrent1.destroy(function (err) { t.error(err, 'torrent1 destroyed') }) + torrent2.destroy(function (err) { t.error(err, 'torrent2 destroyed') }) + client.destroy(function (err) { t.error(err, 'client destroyed') }) + }) + }) +}) -- cgit v1.2.3