/v1/node tests added to integration

This commit is contained in:
Manuel Araoz 2015-04-29 23:10:19 -03:00
parent 9c3d50da3e
commit 895e658b6c
6 changed files with 41 additions and 34 deletions

View File

@ -2,19 +2,22 @@
var BitcoreHTTP = require('../lib/http');
var bitcore = require('bitcore');
var request = require('supertest');
var _app = null;
var _agent = null;
module.exports = function(nodeMock) {
if (process.env.INTEGRATION === 'true') {
if (_app) {
return _app;
if (_agent) {
return _agent;
}
var config = require('config');
var network = config.get('BitcoreHTTP.BitcoreNode').network;
console.log('Starting test suite', network, 'network');
bitcore.Networks.defaultNetwork = bitcore.Networks.get(network);
_app = BitcoreHTTP.create(config.get('BitcoreHTTP')).app;
return _app;
var node = BitcoreHTTP.create(config.get('BitcoreHTTP'));
node.start();
_agent = request(node.app);
return _agent;
}
return new BitcoreHTTP(nodeMock).app;
return request(new BitcoreHTTP(nodeMock).app);
};

View File

@ -2,7 +2,6 @@
var chai = require('chai');
var should = chai.should();
var request = require('supertest');
var EventEmitter = require('eventemitter2').EventEmitter2;
var Promise = require('bluebird');
@ -10,7 +9,6 @@ Promise.longStackTraces();
var bitcore = require('bitcore');
var _ = bitcore.deps._;
var BitcoreHTTP = require('../../lib/http');
var BitcoreNode = require('../../../');
var mockBlocks = require('../data/blocks');
@ -26,7 +24,7 @@ describe('BitcoreHTTP v1 blocks routes', function() {
};
var last3 = _.keys(mockBlocks).splice(-3).map(blockForHash);
var some2 = _.keys(mockBlocks).splice(2, 2).map(blockForHash);
var nodeMock, app, agent;
var nodeMock, agent;
var blockList = _.values(mockBlocks);
beforeEach(function() {
nodeMock = new EventEmitter();
@ -56,8 +54,7 @@ describe('BitcoreHTTP v1 blocks routes', function() {
var ret = section.slice(offset, offset + limit);
return Promise.resolve(ret);
};
app = require('../app')(nodeMock);
agent = request(app);
agent = require('../app')(nodeMock);
});
var toObject = function(b) {

View File

@ -2,39 +2,44 @@
var chai = require('chai');
var should = chai.should();
var request = require('supertest');
var EventEmitter = require('eventemitter2').EventEmitter2;
var Promise = require('bluebird');
Promise.longStackTraces();
var BitcoreHTTP = require('../../lib/http');
describe('BitcoreHTTP v1 node routes', function() {
// mocks
var nodeMock, app, agent;
var nodeMock, agent;
beforeEach(function() {
nodeMock = new EventEmitter();
nodeMock.status = {
sync: 0.75,
peerCount: 8,
version: 'test',
network: 'test',
network: 'regtest',
height: 1234,
};
nodeMock.getStatus = function() {
return Promise.resolve(nodeMock.status);
};
app = new BitcoreHTTP(nodeMock).app;
agent = request(app);
agent = require('../app')(nodeMock);
});
describe('/node', function() {
describe('/v1/node', function() {
it('works', function(cb) {
agent.get('/v1/node/')
.expect(200)
.expect(nodeMock.status, cb);
.expect(200, function(err, res) {
should.not.exist(err);
should.exist(res.body);
var r = res.body;
should.exist(r.sync);
should.exist(r.peerCount);
should.exist(r.version);
should.exist(r.network);
should.exist(r.height);
cb();
});
});
});

View File

@ -2,7 +2,6 @@
var chai = require('chai');
var should = chai.should();
var request = require('supertest');
var bitcore = require('bitcore');
var _ = bitcore.deps._;
@ -11,7 +10,6 @@ var EventEmitter = require('eventemitter2').EventEmitter2;
var Promise = require('bluebird');
Promise.longStackTraces();
var BitcoreHTTP = require('../../lib/http');
var BitcoreNode = require('../../../');
var mockTransactions = require('../data/transactions');
@ -20,7 +18,7 @@ describe('BitcoreHTTP v1 transactions routes', function() {
// mocks
var mockValidTx = new Transaction();
var t1 = mockTransactions[_.keys(mockTransactions)[0]];
var nodeMock, app, agent;
var nodeMock, agent;
beforeEach(function() {
nodeMock = new EventEmitter();
nodeMock.transactionService = {};
@ -37,8 +35,7 @@ describe('BitcoreHTTP v1 transactions routes', function() {
}
return Promise.resolve();
};
app = require('../app')(nodeMock);
agent = request(app);
agent = require('../app')(nodeMock);
});
var failsWithInvalidHash = function(agent, url, cb) {
@ -98,14 +95,6 @@ describe('BitcoreHTTP v1 transactions routes', function() {
.expect(200)
.expect('Transaction broadcasted successfully', cb);
});
it('fails with invalid tx', function(cb) {
agent.post('/v1/transactions/send')
.send({
raw: t1.uncheckedSerialize()
})
.expect(422)
.expect('Unable to broadcast transaction 8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87', cb);
});
});
var testIO = function(name) {
describe('/transactions/:txHash/' + name + '/', function() {

View File

@ -2,6 +2,7 @@
var util = require('util');
var EventEmitter = require('eventemitter2').EventEmitter2;
var Promise = require('bluebird').Promise;
var bitcore = require('bitcore');
var Networks = bitcore.Networks;
@ -79,6 +80,12 @@ NetworkMonitor.prototype.requestBlocks = function(locator) {
}));
};
NetworkMonitor.prototype.broadcast = function(tx) {
$.checkArgument(tx instanceof bitcore.Transaction, 'tx must be a Transaction object');
this.peer.sendMessage(this.messages.Transaction(tx));
return Promise.resolve();
};
NetworkMonitor.prototype.start = function() {
console.log('starting network monitor');
this.peer.connect();

View File

@ -202,6 +202,12 @@ BitcoreNode.prototype._requestFromTip = function() {
this.networkMonitor.requestBlocks(locator);
};
BitcoreNode.prototype.broadcast = function(tx) {
$.checkArgument(tx instanceof bitcore.Transaction, 'tx must be a Transaction object');
return this.networkMonitor.broadcast(tx);
};
BitcoreNode.prototype.sync = function() {
var self = this;
this.networkMonitor.on('ready', function(reportedMaxHeight) {