diff options
author | KayleePop <34007889+KayleePop@users.noreply.github.com> | 2020-05-26 01:49:29 +0300 |
---|---|---|
committer | KayleePop <34007889+KayleePop@users.noreply.github.com> | 2020-05-26 01:49:29 +0300 |
commit | f4742f7f31d70ec793d209388c0ef7d09a357e6b (patch) | |
tree | df28927f9e21e73f43d0c026426aa6db870f91cc /test | |
parent | c9462bd8a789b6599b9ff1cb00b6280597dee519 (diff) |
add test for downloading from a manually added peer
Diffstat (limited to 'test')
-rw-r--r-- | test/node/download-from-ip.js | 54 |
1 files changed, 54 insertions, 0 deletions
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')) + }) + }) + }) + }) + }) +}) |