promisify Node.getStatus()

This commit is contained in:
Manuel Araoz 2015-03-06 19:06:19 -03:00
parent 2a17f8076a
commit 7c3231ac3c
6 changed files with 39 additions and 16 deletions

View File

@ -7,7 +7,10 @@ NodeStatus.setNode = function(aNode) {
};
NodeStatus.getStatus = function(req, res) {
res.send(node.status);
node.getStatus()
.then(function(status) {
res.send(status);
});
};
module.exports = NodeStatus;

View File

@ -1,10 +1,14 @@
'use strict';
var Promise = require('bluebird');
var bitcore = require('bitcore');
var _ = bitcore.deps._;
var $ = bitcore.util.preconditions;
var Transaction = bitcore.Transaction;
var BitcoreNode = require('../../');
var Transactions = {};
var node;
@ -23,13 +27,12 @@ Transactions.setNode = function(aNode) {
Transactions.txHashParam = function(req, res, next, txHash) {
node.getTransaction(txHash)
.then(function(tx) {
if (_.isUndefined(tx)) {
res.status(404).send('Transaction with id ' + txHash + ' not found');
return;
}
req.tx = tx;
})
.then(next);
.then(next)
.catch(BitcoreNode.errors.Transactions.NotFound, function() {
res.status(404).send('Transaction with id ' + txHash + ' not found');
});
};
@ -66,8 +69,8 @@ Transactions.send = function(req, res) {
.then(function() {
res.send('Transaction broadcasted successfully');
})
.catch(function(err) {
res.status(422).send(err);
.catch(BitcoreNode.errors.Transactions.CantBroadcast, function(err) {
res.status(422).send(err.message);
});
};

View File

@ -1,8 +1,11 @@
'use strict';
var config = require('config');
var BitcoreHTTP = require('./lib/http');
var http = BitcoreHTTP.create(config.get('BitcoreHTTP'));
http.start();
if (require.main === module) {
var config = require('config');
var http = BitcoreHTTP.create(config.get('BitcoreHTTP'));
http.start();
}
module.exports = BitcoreHTTP;

View File

@ -5,6 +5,8 @@ var should = chai.should();
var request = require('supertest');
var EventEmitter = require('eventemitter2').EventEmitter2;
var Promise = require('bluebird');
Promise.longStackTraces();
var BitcoreHTTP = require('../../lib/http');
@ -19,6 +21,9 @@ describe('BitcoreHTTP v1 node routes', function() {
peer_count: 8,
version: 'test'
};
nodeMock.getStatus = function() {
return Promise.resolve(nodeMock.status);
};
app = new BitcoreHTTP(nodeMock).app;
agent = request(app);
});

View File

@ -5,12 +5,14 @@ var should = chai.should();
var request = require('supertest');
var bitcore = require('bitcore');
var _ = bitcore.deps._;
var Transaction = bitcore.Transaction;
var EventEmitter = require('eventemitter2').EventEmitter2;
var Promise = require('bluebird');
Promise.longStackTraces();
var BitcoreHTTP = require('../../lib/http');
var BitcoreNode = require('../../../');
var mockTransactions = require('../data/transactions');
describe('BitcoreHTTP v1 transactions routes', function() {
@ -22,11 +24,15 @@ describe('BitcoreHTTP v1 transactions routes', function() {
beforeEach(function() {
nodeMock = new EventEmitter();
nodeMock.getTransaction = function(txHash) {
return Promise.resolve(mockTransactions[txHash]);
var tx = mockTransactions[txHash];
if (_.isUndefined(tx)) {
return Promise.reject(new BitcoreNode.errors.Transactions.NotFound(txHash));
}
return Promise.resolve(tx);
};
nodeMock.broadcast = function(tx) {
if (mockTransactions[tx.id]) {
return Promise.reject('some error');
return Promise.reject(new BitcoreNode.errors.Transactions.CantBroadcast(tx.id));
}
return Promise.resolve();
};
@ -99,7 +105,7 @@ describe('BitcoreHTTP v1 transactions routes', function() {
raw: t1.uncheckedSerialize()
})
.expect(422)
.expect('some error', cb);
.expect('Unable to broadcast transaction 8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87', cb);
});
});

View File

@ -1,10 +1,10 @@
'use strict';
var config = require('config');
var BitcoreNode = require('./lib/node.js');
var BitcoreNode = require('./lib/node');
if (require.main === module) {
var config = require('config');
var node = BitcoreNode.create(config.get('BitcoreNode'));
node.start();
node.on('error', function(err) {
@ -16,4 +16,7 @@ if (require.main === module) {
});
}
BitcoreNode.errors = require('./lib/errors');
module.exports = BitcoreNode;