Skip to content

Commit 3342c20

Browse files
committed
test: add test for ws tracker for filter tests
1 parent 5dcdf9c commit 3342c20

File tree

2 files changed

+47
-69
lines changed

2 files changed

+47
-69
lines changed

test/common.js

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
11
var Server = require('../').Server
22

3-
exports.createServer = function (t, serverType, cb) {
4-
var server = new Server({
5-
http: serverType === 'http',
6-
udp: serverType === 'udp',
7-
ws: serverType === 'ws'
8-
})
3+
exports.createServer = function (t, opts, cb) {
4+
if (typeof opts === 'string') opts = { serverType: opts }
5+
6+
opts.http = (opts.serverType === 'http')
7+
opts.udp = (opts.serverType === 'udp')
8+
opts.ws = (opts.serverType === 'ws')
9+
10+
var server = new Server(opts)
911

1012
server.on('error', function (err) { t.error(err) })
1113
server.on('warning', function (err) { t.error(err) })
1214

1315
server.listen(0, function () {
14-
var port = server[serverType].address().port
16+
var port = server[opts.serverType].address().port
1517
var announceUrl
16-
if (serverType === 'http') {
18+
if (opts.serverType === 'http') {
1719
announceUrl = 'http://127.0.0.1:' + port + '/announce'
18-
} else if (serverType === 'udp') {
20+
} else if (opts.serverType === 'udp') {
1921
announceUrl = 'udp://127.0.0.1:' + port
20-
} else if (serverType === 'ws') {
22+
} else if (opts.serverType === 'ws') {
2123
announceUrl = 'ws://127.0.0.1:' + port
2224
}
2325

test/filter.js

Lines changed: 35 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
var Client = require('../')
2+
var common = require('./common')
23
var fs = require('fs')
34
var parseTorrent = require('parse-torrent')
45
var path = require('path')
5-
var Server = require('../').Server
66
var test = require('tape')
77

88
var bitlove = fs.readFileSync(path.join(__dirname, 'torrents/bitlove-intro.torrent'))
@@ -15,55 +15,38 @@ var peerId = new Buffer('01234567890123456789')
1515

1616
function testFilterOption (t, serverType) {
1717
t.plan(8)
18-
var opts = serverType === 'http' ? { udp: false, ws: false } : { http: false, ws: false }
18+
19+
var opts = { serverType: serverType } // this is test-suite-only option
1920
opts.filter = function (infoHash, params, cb) {
2021
process.nextTick(function () {
2122
cb(infoHash !== parsedBitlove.infoHash)
2223
})
2324
}
24-
var server = new Server(opts)
25-
26-
server.on('error', function (err) {
27-
t.error(err)
28-
})
29-
30-
server.listen(0, function () {
31-
var port = server[serverType].address().port
32-
var announceUrl = serverType === 'http'
33-
? 'http://127.0.0.1:' + port + '/announce'
34-
: 'udp://127.0.0.1:' + port
3525

26+
common.createServer(t, opts, function (server, announceUrl) {
3627
parsedBitlove.announce = [ announceUrl ]
3728
parsedLeaves.announce = [ announceUrl ]
3829

39-
var client = new Client(peerId, port, parsedBitlove)
30+
var client = new Client(peerId, 6881, parsedBitlove, { wrtc: {} })
4031

41-
client.on('error', function (err) {
42-
t.error(err)
43-
})
32+
client.on('error', function (err) { t.error(err) })
33+
if (serverType === 'ws') common.mockWebsocketTracker(client)
4434

4535
client.once('warning', function (err) {
4636
t.ok(/disallowed info_hash/.test(err.message), 'got client warning')
4737

4838
client.destroy(function () {
4939
t.pass('client destroyed')
50-
client = new Client(peerId, port, parsedLeaves)
40+
client = new Client(peerId, 6881, parsedLeaves, { wrtc: {} })
41+
if (serverType === 'ws') common.mockWebsocketTracker(client)
5142

52-
client.on('error', function (err) {
53-
t.error(err)
54-
})
55-
client.on('warning', function (err) {
56-
t.error(err)
57-
})
43+
client.on('error', function (err) { t.error(err) })
44+
client.on('warning', function (err) { t.error(err) })
5845

5946
client.on('update', function () {
6047
t.pass('got announce')
61-
client.destroy(function () {
62-
t.pass('client destroyed')
63-
})
64-
server.close(function () {
65-
t.pass('server closed')
66-
})
48+
client.destroy(function () { t.pass('client destroyed') })
49+
server.close(function () { t.pass('server closed') })
6750
})
6851

6952
server.on('start', function () {
@@ -74,6 +57,7 @@ function testFilterOption (t, serverType) {
7457
})
7558
})
7659

60+
server.removeAllListeners('warning')
7761
server.once('warning', function (err) {
7862
t.ok(/disallowed info_hash/.test(err.message), 'got server warning')
7963
t.equal(Object.keys(server.torrents).length, 0)
@@ -91,58 +75,45 @@ test('udp: filter option blocks tracker from tracking torrent', function (t) {
9175
testFilterOption(t, 'udp')
9276
})
9377

78+
test('ws: filter option blocks tracker from tracking torrent', function (t) {
79+
testFilterOption(t, 'ws')
80+
})
81+
9482
function testFilterCustomError (t, serverType) {
9583
t.plan(8)
96-
var opts = serverType === 'http' ? { udp: false, ws: false } : { http: false, ws: false }
84+
85+
var opts = { serverType: serverType } // this is test-suite-only option
9786
opts.filter = function (infoHash, params, cb) {
9887
process.nextTick(function () {
9988
if (infoHash === parsedBitlove.infoHash) cb(new Error('bitlove blocked'))
10089
else cb(true)
10190
})
10291
}
103-
var server = new Server(opts)
104-
105-
server.on('error', function (err) {
106-
t.error(err)
107-
})
108-
109-
server.listen(0, function () {
110-
var port = server[serverType].address().port
111-
var announceUrl = serverType === 'http'
112-
? 'http://127.0.0.1:' + port + '/announce'
113-
: 'udp://127.0.0.1:' + port
11492

93+
common.createServer(t, opts, function (server, announceUrl) {
11594
parsedBitlove.announce = [ announceUrl ]
11695
parsedLeaves.announce = [ announceUrl ]
11796

118-
var client = new Client(peerId, port, parsedBitlove)
97+
var client = new Client(peerId, 6881, parsedBitlove, { wrtc: {} })
11998

120-
client.on('error', function (err) {
121-
t.error(err)
122-
})
99+
client.on('error', function (err) { t.error(err) })
100+
if (serverType === 'ws') common.mockWebsocketTracker(client)
123101

124102
client.once('warning', function (err) {
125103
t.ok(/bitlove blocked/.test(err.message), 'got client warning')
126104

127105
client.destroy(function () {
128106
t.pass('client destroyed')
129-
client = new Client(peerId, port, parsedLeaves)
107+
client = new Client(peerId, 6881, parsedLeaves, { wrtc: {} })
108+
if (serverType === 'ws') common.mockWebsocketTracker(client)
130109

131-
client.on('error', function (err) {
132-
t.error(err)
133-
})
134-
client.on('warning', function (err) {
135-
t.error(err)
136-
})
110+
client.on('error', function (err) { t.error(err) })
111+
client.on('warning', function (err) { t.error(err) })
137112

138113
client.on('update', function () {
139114
t.pass('got announce')
140-
client.destroy(function () {
141-
t.pass('client destroyed')
142-
})
143-
server.close(function () {
144-
t.pass('server closed')
145-
})
115+
client.destroy(function () { t.pass('client destroyed') })
116+
server.close(function () { t.pass('server closed') })
146117
})
147118

148119
server.on('start', function () {
@@ -153,6 +124,7 @@ function testFilterCustomError (t, serverType) {
153124
})
154125
})
155126

127+
server.removeAllListeners('warning')
156128
server.once('warning', function (err) {
157129
t.ok(/bitlove blocked/.test(err.message), 'got server warning')
158130
t.equal(Object.keys(server.torrents).length, 0)
@@ -169,3 +141,7 @@ test('http: filter option with custom error', function (t) {
169141
test('udp: filter option filter option with custom error', function (t) {
170142
testFilterCustomError(t, 'udp')
171143
})
144+
145+
test('ws: filter option filter option with custom error', function (t) {
146+
testFilterCustomError(t, 'ws')
147+
})

0 commit comments

Comments
 (0)