1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
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, lsd: 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')
const 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, lsd: 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'))
})
})
})
})
})
})
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, lsd: 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, lsd: 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'))
})
})
})
})
})
})
|