Merge pull request #66 from maraoz/polish/transactions
/v1/node tests added to integration
This commit is contained in:
commit
fe43fcb7be
@ -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);
|
||||
};
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user