make blockchain monitor component testable

Conflicts:
	lib/blockchainmonitor.js
This commit is contained in:
Ivan Socolsky 2015-12-29 16:36:51 -03:00
parent 13d6421c01
commit 4e3e76aecf
No known key found for this signature in database
GPG Key ID: FAECE6A05FAA4F56
2 changed files with 92 additions and 2 deletions

View File

@ -84,7 +84,7 @@ BlockchainMonitor.prototype._initExplorer = function(explorer) {
socket.on('connect_error', function() {
log.error('Error connecting to ' + explorer.getConnectionInfo());
});
socket.on('tx', _.bind(self._handleIncommingTx, self));
socket.on('tx', _.bind(self._handleIncomingTx, self));
socket.on('block', _.bind(self._handleNewBlock, self, explorer.network));
};
@ -191,7 +191,7 @@ BlockchainMonitor.prototype._updateActiveAddresses = function(address, cb) {
});
};
BlockchainMonitor.prototype._handleIncommingTx = function(data) {
BlockchainMonitor.prototype._handleIncomingTx = function(data) {
this._handleTxId(data);
this._handleTxOuts(data);
};

View File

@ -0,0 +1,90 @@
'use strict';
var _ = require('lodash');
var async = require('async');
var chai = require('chai');
var sinon = require('sinon');
var should = chai.should();
var log = require('npmlog');
log.debug = log.verbose;
log.level = 'info';
var WalletService = require('../../lib/server');
var BlockchainMonitor = require('../../lib/blockchainmonitor');
var TestData = require('../testdata');
var helpers = require('./helpers');
var storage, blockchainExplorer;
var socket = {
handlers: {},
};
socket.on = function(eventName, handler) {
this.handlers[eventName] = handler;
};
describe('Blockchain monitor', function() {
var server, wallet;
before(function(done) {
helpers.before(done);
});
after(function(done) {
helpers.after(done);
});
beforeEach(function(done) {
helpers.beforeEach(function(res) {
storage = res.storage;
blockchainExplorer = res.blockchainExplorer;
blockchainExplorer.initSocket = sinon.stub().returns(socket);
helpers.createAndJoinWallet(2, 3, function(s, w) {
server = s;
wallet = w;
var bcmonitor = new BlockchainMonitor();
bcmonitor.start({
lockOpts: {},
messageBroker: server.messageBroker,
storage: storage,
blockchainExplorers: {
'testnet': blockchainExplorer,
'livenet': blockchainExplorer
},
}, function(err) {
should.not.exist(err);
done();
});
});
});
});
it('should notify copayers of incoming txs', function(done) {
server.createAddress({}, function(err, address) {
should.not.exist(err);
var incoming = {
txid: '123',
vout: [{}],
};
incoming.vout[0][address.address] = 1500;
socket.handlers['tx'](incoming);
setTimeout(function() {
server.getNotifications({}, function(err, notifications) {
should.not.exist(err);
var notification = _.find(notifications, {
type: 'NewIncomingTx'
});
should.exist(notification);
notification.walletId.should.equal(wallet.id);
notification.data.txid.should.equal('123');
notification.data.address.should.equal(address.address);
notification.data.amount.should.equal(1500);
done();
});
}, 100);
});
});
});