Merge pull request #6 from eordano/testcoverage
Add integration test with network data
This commit is contained in:
commit
ff2577603f
BIN
test/connection.log
Normal file
BIN
test/connection.log
Normal file
Binary file not shown.
55
test/peer.js
55
test/peer.js
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
var _ = require('lodash');
|
||||
var chai = require('chai');
|
||||
var Net = require('net');
|
||||
var Socks5Client = require('socks5-client');
|
||||
@ -7,6 +8,8 @@ var Socks5Client = require('socks5-client');
|
||||
/* jshint unused: false */
|
||||
var should = chai.should();
|
||||
var expect = chai.expect;
|
||||
var sinon = require('sinon');
|
||||
var fs = require('fs');
|
||||
|
||||
var bitcore = require('bitcore');
|
||||
var P2P = require('../');
|
||||
@ -15,6 +18,58 @@ var Networks = bitcore.Networks;
|
||||
|
||||
describe('Peer', function() {
|
||||
|
||||
describe('Integration test', function() {
|
||||
it('parses this stream of data from a connection', function(callback) {
|
||||
var peer = new P2P.Peer('');
|
||||
var stub = sinon.stub();
|
||||
var dataCallback;
|
||||
var connectCallback;
|
||||
var expected = {
|
||||
version: 1,
|
||||
verack: 1,
|
||||
inv: 18,
|
||||
addr: 4
|
||||
};
|
||||
var received = {
|
||||
version: 0,
|
||||
verack: 0,
|
||||
inv: 0,
|
||||
addr: 0
|
||||
};
|
||||
stub.on = function() {
|
||||
if (arguments[0] === 'data') {
|
||||
dataCallback = arguments[1];
|
||||
}
|
||||
if (arguments[0] === 'connect') {
|
||||
connectCallback = arguments[1];
|
||||
}
|
||||
};
|
||||
stub.write = function() {
|
||||
};
|
||||
stub.connect = function() {
|
||||
connectCallback();
|
||||
};
|
||||
peer._getSocket = function() {
|
||||
return stub;
|
||||
};
|
||||
peer.on('connect', function() {
|
||||
dataCallback(fs.readFileSync('./test/connection.log'));
|
||||
});
|
||||
var check = function(message) {
|
||||
received[message.command]++;
|
||||
if (_.isEqual(received, expected)) {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
peer.on('version', check);
|
||||
peer.on('verack', check);
|
||||
peer.on('addr', check);
|
||||
peer.on('inv', check);
|
||||
peer.connect();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it('should be able to create instance', function() {
|
||||
var peer = new Peer('localhost');
|
||||
peer.host.should.equal('localhost');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user