From f4742f7f31d70ec793d209388c0ef7d09a357e6b Mon Sep 17 00:00:00 2001 From: KayleePop <34007889+KayleePop@users.noreply.github.com> Date: Mon, 25 May 2020 17:49:29 -0500 Subject: add test for downloading from a manually added peer --- test/node/download-from-ip.js | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 test/node/download-from-ip.js (limited to 'test') diff --git a/test/node/download-from-ip.js b/test/node/download-from-ip.js new file mode 100644 index 0000000..270b774 --- /dev/null +++ b/test/node/download-from-ip.js @@ -0,0 +1,54 @@ +const fixtures = require('webtorrent-fixtures') +const fs = require('fs') +const MemoryChunkStore = require('memory-chunk-store') +const test = require('tape') +const WebTorrent = require('../../') + +test('Download via torrent.addPeer()', (t) => { + t.plan(7) + // if initial interest isn't set, then this test is delayed + t.timeoutAfter(5000) + + const seeder = new WebTorrent({ tracker: false, dht: false }) + + seeder.on('error', (err) => t.fail(err)) + seeder.on('warning', (err) => t.fail(err)) + + const torrent = seeder.add(fixtures.leaves.parsedTorrent, { store: MemoryChunkStore }) + + torrent.on('ready', function () { + // torrent metadata has been fetched -- sanity check it + t.equal(torrent.name, 'Leaves of Grass by Walt Whitman.epub') + + var names = ['Leaves of Grass by Walt Whitman.epub'] + t.deepEqual(torrent.files.map(function (file) { return file.name }), names) + }) + + torrent.load(fs.createReadStream(fixtures.leaves.contentPath), (err) => { + t.error(err) + + // torrent data now loaded into seeder + + const downloader = new WebTorrent({ tracker: false, dht: false }) + + downloader.on('error', function (err) { t.fail(err) }) + downloader.on('warning', function (err) { t.fail(err) }) + + downloader.add(fixtures.leaves.parsedTorrent, { store: MemoryChunkStore }, (torrent) => { + torrent.addPeer(`localhost:${seeder.torrentPort}`) + + torrent.once('done', function () { + torrent.files.forEach((file) => { + file.getBuffer((err, buf) => { + t.error(err) + + t.deepEqual(buf, fixtures.leaves.content, 'downloaded correct content') + + seeder.destroy((err) => t.error(err, 'seeder destroyed')) + downloader.destroy((err) => t.error(err, 'downloader destroyed')) + }) + }) + }) + }) + }) +}) -- cgit v1.2.3