Esteban Ordano
10 years ago
3 changed files with 0 additions and 532 deletions
@ -1,353 +0,0 @@ |
|||||
'use strict'; |
|
||||
|
|
||||
var chai = require('chai'); |
|
||||
|
|
||||
var should = chai.should(); |
|
||||
|
|
||||
var bitcore = require('../..'); |
|
||||
var Data = require('../data/messages'); |
|
||||
var Messages = bitcore.transport.Messages; |
|
||||
var Networks = bitcore.Networks; |
|
||||
|
|
||||
describe('Messages', function() { |
|
||||
|
|
||||
describe('Version', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.Version(); |
|
||||
message.command.should.equal('version'); |
|
||||
message.version.should.equal(70000); |
|
||||
message.subversion.should.equal('/BitcoinX:0.1/'); |
|
||||
should.exist(message.nonce); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.Version(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.Version(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to parse payload', function() { |
|
||||
var payload = new Buffer(Data.VERSION.payload, 'hex'); |
|
||||
new Messages.Version().fromBuffer(payload); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('VerAck', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.VerAck(); |
|
||||
message.command.should.equal('verack'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.VerAck(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.VerAck(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to parse payload', function() { |
|
||||
var payload = new Buffer(Data.VERACK.payload, 'hex'); |
|
||||
new Messages.VerAck().fromBuffer(payload); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('Inventory', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.Inventory(); |
|
||||
message.command.should.equal('inv'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.Inventory(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.Inventory(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to parse payload', function() { |
|
||||
var payload = new Buffer(Data.INV.payload, 'hex'); |
|
||||
new Messages.Inventory().fromBuffer(payload); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('Addresses', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.Addresses(); |
|
||||
message.command.should.equal('addr'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.Addresses(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.Addresses(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to parse payload', function() { |
|
||||
var payload = new Buffer(Data.ADDR.payload, 'hex'); |
|
||||
new Messages.Addresses().fromBuffer(payload); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('Ping', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.Ping(); |
|
||||
message.command.should.equal('ping'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.Ping(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.Ping(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to parse payload', function() { |
|
||||
var payload = new Buffer(Data.PING.payload, 'hex'); |
|
||||
new Messages.Ping().fromBuffer(payload); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('Pong', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.Pong(); |
|
||||
message.command.should.equal('pong'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.Pong(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.Pong(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to parse payload', function() { |
|
||||
var payload = new Buffer(Data.PING.payload, 'hex'); |
|
||||
new Messages.Pong().fromBuffer(payload); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('Alert', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.Alert(); |
|
||||
message.command.should.equal('alert'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.Alert(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.Alert(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('Reject', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.Reject(); |
|
||||
message.command.should.equal('reject'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.Reject(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.Reject(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('Block', function() { |
|
||||
var blockHex = 'f9beb4d91d0100000100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c0101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000'; |
|
||||
var block = new bitcore.Block(new Buffer(blockHex, 'hex')); |
|
||||
|
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.Block(block); |
|
||||
message.command.should.equal('block'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.Block(block); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.Block(block); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('GetBlocks', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.GetBlocks(); |
|
||||
message.command.should.equal('getblocks'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.GetBlocks(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.GetBlocks(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('GetHeaders', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.GetHeaders(); |
|
||||
message.command.should.equal('getheaders'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.GetHeaders(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.GetHeaders(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('GetData', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.GetData(); |
|
||||
message.command.should.equal('getdata'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.GetData(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.GetData(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('GetData', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.GetData(); |
|
||||
message.command.should.equal('getdata'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.GetData(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.GetData(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('GetAddresses', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.GetAddresses(); |
|
||||
message.command.should.equal('getaddr'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.GetAddresses(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.GetAddresses(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('Headers', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.Headers(); |
|
||||
message.command.should.equal('headers'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.Headers(); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.Headers(); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
describe('Transaction', function() { |
|
||||
it('should be able to create instance', function() { |
|
||||
var message = new Messages.Transaction(new bitcore.Transaction()); |
|
||||
message.command.should.equal('tx'); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the payload', function() { |
|
||||
var message = new Messages.Transaction(new bitcore.Transaction()); |
|
||||
var payload = message.getPayload(); |
|
||||
should.exist(payload); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to serialize the message', function() { |
|
||||
var message = new Messages.Transaction(new bitcore.Transaction()); |
|
||||
var buffer = message.serialize(Networks.livenet); |
|
||||
should.exist(buffer); |
|
||||
}); |
|
||||
}); |
|
||||
}); |
|
@ -1,75 +0,0 @@ |
|||||
'use strict'; |
|
||||
|
|
||||
var chai = require('chai'); |
|
||||
var Net = require('net'); |
|
||||
var Socks5Client = require('socks5-client'); |
|
||||
|
|
||||
/* jshint unused: false */ |
|
||||
var should = chai.should(); |
|
||||
var expect = chai.expect; |
|
||||
|
|
||||
var bitcore = require('../..'); |
|
||||
var Peer = bitcore.transport.Peer; |
|
||||
var Networks = bitcore.Networks; |
|
||||
|
|
||||
describe('Peer', function() { |
|
||||
|
|
||||
it('should be able to create instance', function() { |
|
||||
var peer = new Peer('localhost'); |
|
||||
peer.host.should.equal('localhost'); |
|
||||
peer.network.should.equal(Networks.livenet); |
|
||||
peer.port.should.equal(Networks.livenet.port); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to create instance setting a port', function() { |
|
||||
var peer = new Peer('localhost', 8111); |
|
||||
peer.host.should.equal('localhost'); |
|
||||
peer.network.should.equal(Networks.livenet); |
|
||||
peer.port.should.equal(8111); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to create instance setting a network', function() { |
|
||||
var peer = new Peer('localhost', Networks.testnet); |
|
||||
peer.host.should.equal('localhost'); |
|
||||
peer.network.should.equal(Networks.testnet); |
|
||||
peer.port.should.equal(Networks.testnet.port); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to create instance setting port and network', function() { |
|
||||
var peer = new Peer('localhost', 8111, Networks.testnet); |
|
||||
peer.host.should.equal('localhost'); |
|
||||
peer.network.should.equal(Networks.testnet); |
|
||||
peer.port.should.equal(8111); |
|
||||
}); |
|
||||
|
|
||||
it('should support creating instance without new', function() { |
|
||||
var peer = Peer('localhost', 8111, Networks.testnet); |
|
||||
peer.host.should.equal('localhost'); |
|
||||
peer.network.should.equal(Networks.testnet); |
|
||||
peer.port.should.equal(8111); |
|
||||
}); |
|
||||
|
|
||||
if (typeof(window) === 'undefined'){ |
|
||||
|
|
||||
// Node.js Tests
|
|
||||
|
|
||||
it('should be able to set a proxy', function() { |
|
||||
var peer, peer2, socket; |
|
||||
|
|
||||
peer = new Peer('localhost'); |
|
||||
expect(peer.proxy).to.be.undefined(); |
|
||||
socket = peer._getSocket(); |
|
||||
socket.should.be.instanceof(Net.Socket); |
|
||||
|
|
||||
peer2 = peer.setProxy('127.0.0.1', 9050); |
|
||||
peer2.proxy.host.should.equal('127.0.0.1'); |
|
||||
peer2.proxy.port.should.equal(9050); |
|
||||
socket = peer2._getSocket(); |
|
||||
socket.should.be.instanceof(Socks5Client); |
|
||||
|
|
||||
peer.should.equal(peer2); |
|
||||
}); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
}); |
|
@ -1,104 +0,0 @@ |
|||||
'use strict'; |
|
||||
|
|
||||
if (typeof(window) === 'undefined'){ |
|
||||
|
|
||||
// Node.js Tests
|
|
||||
|
|
||||
var chai = require('chai'); |
|
||||
|
|
||||
/* jshint unused: false */ |
|
||||
var should = chai.should(); |
|
||||
var expect = chai.expect; |
|
||||
|
|
||||
var dns = require('dns'); |
|
||||
var sinon = require('sinon'); |
|
||||
|
|
||||
var bitcore = require('../..'); |
|
||||
var Peer = bitcore.transport.Peer; |
|
||||
var MessagesData = require('../data/messages'); |
|
||||
var Messages = bitcore.transport.Messages; |
|
||||
var Pool = bitcore.transport.Pool; |
|
||||
var Networks = bitcore.Networks; |
|
||||
|
|
||||
describe('Pool', function() { |
|
||||
|
|
||||
it('should be able to create instance', function() { |
|
||||
var pool = new Pool(); |
|
||||
should.exist(pool.network); |
|
||||
expect(pool.network).to.satisfy(function(network){ |
|
||||
if (network === Networks.testnet || network === Networks.livenet) { |
|
||||
return true; |
|
||||
} |
|
||||
return false; |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
it('should be able to create instance setting the network', function() { |
|
||||
var pool = new Peer(Networks.testnet); |
|
||||
pool.network.should.equal(Networks.livenet); |
|
||||
}); |
|
||||
|
|
||||
it('should discover peers via dns', function() { |
|
||||
var stub = sinon.stub(dns, 'resolve', function(seed, callback){ |
|
||||
callback(null, ['10.10.10.1', '10.10.10.2', '10.10.10.3']); |
|
||||
}); |
|
||||
var pool = new Pool(Networks.livenet); |
|
||||
pool.connect(); |
|
||||
pool.disconnect(); |
|
||||
pool._addrs.length.should.equal(3); |
|
||||
stub.restore(); |
|
||||
}); |
|
||||
|
|
||||
it('should not discover peers via dns', function() { |
|
||||
var pool = new Pool(); |
|
||||
pool._addAddr({ip: {v4: '10.10.10.1'}}); |
|
||||
pool.connect(); |
|
||||
pool.disconnect(); |
|
||||
pool._addrs.length.should.equal(1); |
|
||||
}); |
|
||||
|
|
||||
it('should add new addrs as they are announced over the network', function(done) { |
|
||||
|
|
||||
// only emit an event, no need to connect
|
|
||||
var peerConnectStub = sinon.stub(Peer.prototype, 'connect', function(){ |
|
||||
this._readMessage(); |
|
||||
this.emit('ready'); |
|
||||
}); |
|
||||
|
|
||||
// mock a addr peer event
|
|
||||
var peerMessageStub = sinon.stub(Peer.prototype, '_readMessage', function(){ |
|
||||
var payload = new Buffer(MessagesData.ADDR.payload, 'hex'); |
|
||||
var message = new Messages.Addresses().fromBuffer(payload); |
|
||||
this.emit(message.command, message); |
|
||||
}); |
|
||||
|
|
||||
var pool = new Pool(); |
|
||||
|
|
||||
pool._addAddr({ip: {v4: 'localhost'}}); |
|
||||
|
|
||||
// listen for the event
|
|
||||
pool.on('peeraddr', function(peer, message) { |
|
||||
pool._addrs.length.should.equal(502); |
|
||||
|
|
||||
// restore stubs
|
|
||||
peerConnectStub.restore(); |
|
||||
peerMessageStub.restore(); |
|
||||
|
|
||||
for (var i = 0; i < pool._addrs.length; i++) { |
|
||||
should.exist(pool._addrs[i].hash); |
|
||||
should.exist(pool._addrs[i].ip); |
|
||||
should.exist(pool._addrs[i].ip.v4); |
|
||||
} |
|
||||
|
|
||||
// done
|
|
||||
done(); |
|
||||
}); |
|
||||
|
|
||||
pool.connect(); |
|
||||
|
|
||||
}); |
|
||||
|
|
||||
|
|
||||
}); |
|
||||
|
|
||||
} |
|
Loading…
Reference in new issue