diff options
author | Julen Garcia Leunda <hicom150@gmail.com> | 2020-10-27 01:48:14 +0300 |
---|---|---|
committer | Julen Garcia Leunda <hicom150@gmail.com> | 2020-10-30 14:53:37 +0300 |
commit | 271bb563a76b32fcc891c4f7084063ad1dd42ef4 (patch) | |
tree | 05738f4a73cc9f403c986e6bb141d4d123064d20 /test | |
parent | 666c27865d179278716f6a3eceebf3003bacd028 (diff) |
Implement peer-address (x.pe) BEP09
Diffstat (limited to 'test')
-rw-r--r-- | test/node/download-from-ip.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/test/node/download-from-ip.js b/test/node/download-from-ip.js index 77a1281..b7334e1 100644 --- a/test/node/download-from-ip.js +++ b/test/node/download-from-ip.js @@ -52,3 +52,54 @@ test('Download via torrent.addPeer()', (t) => { }) }) }) + +test('Download via magnet x.pe (BEP09)', (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, torrentPort: 63000 }) + + 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) }) + + // add x.pe to the magnet + const peerAddress = '127.0.0.1:63000' + const magnetURI = fixtures.leaves.magnetURI + `&x.pe=${peerAddress}` + + downloader.add(magnetURI, { store: MemoryChunkStore }, (torrent) => { + 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')) + }) + }) + }) + }) + }) +}) |