Skip to content

Commit 2aea063

Browse files
committed
make client tests work offline
for webtorrent#18
1 parent dc6f355 commit 2aea063

File tree

1 file changed

+107
-54
lines changed

1 file changed

+107
-54
lines changed

test/client.js

Lines changed: 107 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,105 +1,158 @@
11
var Client = require('../').Client
22
var fs = require('fs')
33
var parseTorrent = require('parse-torrent')
4+
var portfinder = require('portfinder')
5+
var Server = require('../').Server
46
var test = require('tape')
57

68
// TODO: add test where tracker doesn't support compact
79

810
var torrent = fs.readFileSync(__dirname + '/torrents/bitlove-intro.torrent')
911
var parsedTorrent = parseTorrent(torrent)
1012
var peerId = new Buffer('01234567890123456789')
11-
var announceUrl = 'http://t.bitlove.org/announce' // TODO: shouldn't rely on an external server!
13+
var announceUrl = ''
1214
var port = 6881
1315

14-
test('torrent: client.start()', function (t) {
15-
t.plan(4)
16-
17-
var client = new Client(peerId, port, parsedTorrent)
16+
function createServer (cb) {
17+
var server = new Server({ udp: false })
1818

19-
client.on('error', function (err) {
20-
t.error(err)
19+
server.on('error', function (err) {
20+
t.fail(err.message)
2121
})
2222

23-
client.once('update', function (data) {
24-
t.equal(data.announce, announceUrl)
25-
t.equal(typeof data.complete, 'number')
26-
t.equal(typeof data.incomplete, 'number')
23+
server.on('warning', function (err) {
24+
t.fail(err.message)
2725
})
2826

29-
client.once('peer', function (addr) {
30-
t.pass('there is at least one peer')
31-
client.stop()
32-
})
27+
portfinder.getPort(function (err, port) {
28+
if (err) return cb(err)
3329

34-
client.start()
35-
})
30+
announceUrl = 'http://127.0.0.1:' + port + '/announce'
31+
parsedTorrent.announce = [ announceUrl ]
3632

37-
test('torrent: client.stop()', function (t) {
38-
t.plan(4)
33+
server.listen(port)
34+
cb(null, server)
35+
})
36+
}
3937

40-
var client = new Client(peerId, port, parsedTorrent)
38+
test('torrent: client.start()', function (t) {
39+
t.plan(6)
4140

42-
client.on('error', function (err) {
41+
createServer(function (err, server) {
4342
t.error(err)
44-
})
4543

46-
client.start()
44+
var client = new Client(peerId, port, parsedTorrent)
4745

48-
setTimeout(function () {
49-
client.stop()
46+
client.on('error', function (err) {
47+
t.fail(err)
48+
})
5049

5150
client.once('update', function (data) {
52-
// receive one final update after calling stop
5351
t.equal(data.announce, announceUrl)
5452
t.equal(typeof data.complete, 'number')
5553
t.equal(typeof data.incomplete, 'number')
5654
})
5755

58-
client.once('peer', function () {
59-
t.pass('should get more peers on stop()')
56+
client.once('peer', function (addr) {
57+
t.pass('there is at least one peer')
58+
client.stop()
59+
60+
client.once('update', function () {
61+
server.close(function () {
62+
t.pass('server close')
63+
})
64+
})
6065
})
61-
}, 1000)
62-
})
6366

64-
test('torrent: client.update()', function (t) {
65-
t.plan(3)
67+
client.start()
68+
})
69+
})
6670

67-
var client = new Client(peerId, port, parsedTorrent, { interval: 5000 })
71+
test('torrent: client.stop()', function (t) {
72+
t.plan(5)
6873

69-
client.on('error', function (err) {
74+
createServer(function (err, server) {
7075
t.error(err)
71-
})
76+
var client = new Client(peerId, port, parsedTorrent)
7277

73-
client.start()
78+
client.on('error', function (err) {
79+
t.fail(err)
80+
})
7481

75-
client.once('update', function () {
82+
client.start()
7683

77-
client.once('update', function (data) {
78-
// received an update!
79-
t.equal(data.announce, announceUrl)
80-
t.equal(typeof data.complete, 'number')
81-
t.equal(typeof data.incomplete, 'number')
84+
setTimeout(function () {
8285
client.stop()
86+
87+
client.once('update', function (data) {
88+
// receive one final update after calling stop
89+
t.equal(data.announce, announceUrl)
90+
t.equal(typeof data.complete, 'number')
91+
t.equal(typeof data.incomplete, 'number')
92+
93+
server.close(function () {
94+
t.pass('server close')
95+
})
96+
})
97+
98+
}, 1000)
99+
})
100+
})
101+
102+
test('torrent: client.update()', function (t) {
103+
t.plan(5)
104+
105+
createServer(function (err, server) {
106+
t.error(err)
107+
var client = new Client(peerId, port, parsedTorrent, { interval: 5000 })
108+
109+
client.on('error', function (err) {
110+
t.fail(err)
83111
})
84112

113+
client.start()
114+
115+
client.once('update', function () {
116+
117+
client.once('update', function (data) {
118+
// received an update!
119+
t.equal(data.announce, announceUrl)
120+
t.equal(typeof data.complete, 'number')
121+
t.equal(typeof data.incomplete, 'number')
122+
client.stop()
123+
124+
client.once('update', function () {
125+
server.close(function () {
126+
t.pass('server close')
127+
})
128+
})
129+
})
130+
})
85131
})
86132
})
87133

88134
test('torrent: client.scrape()', function (t) {
89-
t.plan(4)
90-
91-
var client = new Client(peerId, port, parsedTorrent)
135+
t.plan(6)
92136

93-
client.on('error', function (err) {
137+
createServer(function (err, server) {
94138
t.error(err)
95-
})
139+
var client = new Client(peerId, port, parsedTorrent)
96140

97-
client.once('scrape', function (data) {
98-
t.equal(data.announce, announceUrl)
99-
t.equal(typeof data.complete, 'number')
100-
t.equal(typeof data.incomplete, 'number')
101-
t.equal(typeof data.downloaded, 'number')
102-
})
141+
client.on('error', function (err) {
142+
t.fail(err)
143+
})
144+
145+
client.once('scrape', function (data) {
146+
t.equal(data.announce, announceUrl)
147+
t.equal(typeof data.complete, 'number')
148+
t.equal(typeof data.incomplete, 'number')
149+
t.equal(typeof data.downloaded, 'number')
103150

104-
client.scrape()
151+
server.close(function () {
152+
t.pass('server close')
153+
})
154+
})
155+
156+
client.scrape()
157+
})
105158
})

0 commit comments

Comments
 (0)