bep15
Version:
read and write UDP (BEP 15) tracker packets
112 lines (98 loc) • 3.35 kB
JavaScript
var assert = require('assert');
var generator = require('./test-generator');
var bep15 = require('./');
describe('connect', function() {
var input = {
transactionId: generate.transactionId()
};
var request;
describe('request', function() {
it('should write without any opts', function() {
request = bep15.writeConnectRequest(input);
});
it('should be at least 16 bytes', function () {
assert.ok(request.length >= 16);
});
it('should read out equal transactionId from write to read', function () {
var packet = bep15.writeConnectRequest(input);
var output = bep15.readConnectRequest(packet);
assert.deepEqual(input.transactionId, output.transactionId);
});
});
describe('responce', function() {
var packet;
it('should be at least 16 bytes');
it('should read what was written');
});
});
describe('announce', function() {
describe('request', function() {
var input = {
connectionId: generate.connectionId(),
transactionId: generate.transactionId(),
infoHash: generate.infoHash(),
peerId: generate.peerId(),
downloaded: generate.downloaded(),
left: generate.left(),
uploaded: generate.uploaded(),
event: generate.event(),
ipAddress: generate.ipAddress(),
key: generate.key(),
numWant: generate.numWant(),
port: generate.port()
};
var packet;
it('should write a packet without thrown error', function() {
packet = bep15.writeAnnounceRequest(input);
});
it('should be at least 20 bytes', function() {
assert.ok((packet.length >= 20) ? true : false);
});
it('should read what was written', function() {
var output = bep15.readAnnounceRequest(packet);
assert.deepEqual(input.connectionId, output.connectionId);
assert.equal(1, output.action);
assert.equal(input.transactionId, output.transactionId);
assert.equal(input.infoHash, output.infoHash);
assert.equal(input.peerId, output.peerId);
assert.deepEqual(input.downloaded, output.downloaded);
assert.deepEqual(input.left, output.left);
assert.deepEqual(input.uploaded, output.uploaded);
assert.equal(input.event, output.event);
assert.equal(input.ipAddress, output.ipAddress);
assert.equal(input.key, output.key);
assert.equal(input.numWant, output.numWant);
});
});
describe('responce', function() {
var packet;
it('should write a packet as expected', function() {
var input = {
transactionId: generate.transactionId(),
interval: generate.interval(),
leechers: generate.leechers(),
seeders: generate.seeders(),
peers: generate.peers()
};
packet = bep15.writeAnnounceResponce(input);
});
it('should be at least 20 bytes', function() {
assert.ok((packet.length >= 20) ? true : false);
});
it('should read what was written', function() {
var output = bep15.readAnnounceResponce(packet);
});
});
});
describe('scrape', function() {
describe('request', function() {
var packet;
it('should be at least x bytes');
it('should read what was written');
});
describe('responce', function() {
var packet;
it('should be at least x bytes');
it('should read what was written');
});
});