diff --git a/test/basic.js b/test/basic.js new file mode 100644 index 0000000..60fd8d9 --- /dev/null +++ b/test/basic.js @@ -0,0 +1,82 @@ +var Client = require('../').Client +var fs = require('fs') +var parseTorrent = require('parse-torrent') +var test = require('tape') + +var torrent = fs.readFileSync(__dirname + '/torrents/bitlove-intro.torrent') +var parsedTorrent = parseTorrent(torrent) + +var peerId = new Buffer('01234567890123456789') +var port = 6881 + +test('client.start()', function (t) { + t.plan(4) + + var client = new Client(peerId, port, parsedTorrent) + + client.on('error', function (err) { + t.fail(err.message) + }) + + client.once('update', function (data) { + t.equal(data.announce, 'http://t.bitlove.org/announce') + t.equal(typeof data.complete, 'number') + t.equal(typeof data.incomplete, 'number') + }) + + client.once('peer', function (addr) { + t.pass('there is at least one peer') // TODO: this shouldn't rely on an external server! + client.stop() + }) + + client.start() +}) + +test('client.stop()', function (t) { + t.plan(3) + + var client = new Client(peerId, port, parsedTorrent) + + client.on('error', function (err) { + t.fail(err.message) + }) + + client.start() + + setTimeout(function () { + client.stop() + + client.once('update', function (data) { + // receive one final update after calling stop + t.equal(data.announce, 'http://t.bitlove.org/announce') + t.equal(typeof data.complete, 'number') + t.equal(typeof data.incomplete, 'number') + }) + }, 1000) +}) + +test('client.update()', function (t) { + t.plan(3) + + var client = new Client(peerId, port, parsedTorrent, { interval: 5000 }) + + client.on('error', function (err) { + t.fail(err.message) + }) + + client.start() + + client.once('update', function () { + + client.once('update', function (data) { + // received an update! + t.equal(data.announce, 'http://t.bitlove.org/announce') + t.equal(typeof data.complete, 'number') + t.equal(typeof data.incomplete, 'number') + client.stop() + }) + + }) +}) + +// TODO: add test where tracker doesn't support compact diff --git a/test/torrents/bitlove-intro.torrent b/test/torrents/bitlove-intro.torrent new file mode 100644 index 0000000..1c91bf1 Binary files /dev/null and b/test/torrents/bitlove-intro.torrent differ