test: coverage for getBlockHeader

This commit is contained in:
Braydon Fuller 2016-05-24 16:39:22 -04:00
parent 1d9b89f187
commit f76b206178
2 changed files with 32 additions and 19 deletions

View File

@ -1681,10 +1681,13 @@ Bitcoin.prototype.getBlockHashesByTimestamp = function(high, low, callback) {
* @param {String|Number} block - A block hash or block height
* @param {Function} callback
*/
Bitcoin.prototype.getBlockHeader = function(block, callback) {
Bitcoin.prototype.getBlockHeader = function(blockArg, callback) {
var self = this;
function queryHeader(blockhash) {
function queryHeader(err, blockhash) {
if (err) {
return callback(err);
}
self._tryAll(function(done) {
self.client.getBlockHeader(blockhash, function(err, response) {
if (err) {
@ -1711,23 +1714,7 @@ Bitcoin.prototype.getBlockHeader = function(block, callback) {
}, callback);
}
if (_.isNumber(block)) {
self._tryAll(function(done) {
self.client.getBlockHash(block, function(err, response) {
if (err) {
return callback(self._wrapRPCError(err));
}
done(null, response.result);
});
}, function(err, blockhash) {
if (err) {
return callback(err);
}
queryHeader(blockhash);
});
} else {
queryHeader(block);
}
self._maybeGetBlockHash(blockArg, queryHeader);
};
/**

View File

@ -3567,6 +3567,18 @@ describe('Bitcoin Service', function() {
describe('#getBlockHeader', function() {
var blockhash = '00000000050a6d07f583beba2d803296eb1e9d4980c4a20f206c584e89a4f02b';
it('will give error from getBlockHash', function() {
var bitcoind = new BitcoinService(baseConfig);
var getBlockHash = sinon.stub().callsArgWith(1, {code: -1, message: 'Test error'});
bitcoind.nodes.push({
client: {
getBlockHash: getBlockHash
}
});
bitcoind.getBlockHeader(10, function(err) {
err.should.be.instanceof(Error);
});
});
it('it will give rpc error from client getblockheader', function() {
var bitcoind = new BitcoinService(baseConfig);
var getBlockHeader = sinon.stub().callsArgWith(1, {code: -1, message: 'Test error'});
@ -3790,6 +3802,20 @@ describe('Bitcoin Service', function() {
done();
});
});
it('will give error from client.getBlock', function(done) {
var bitcoind = new BitcoinService(baseConfig);
var getBlock = sinon.stub().callsArgWith(2, {code: -1, message: 'test'});
bitcoind.nodes.push({
client: {
getBlock: getBlock
}
});
bitcoind.getBlockOverview(blockhash, function(err) {
err.should.be.instanceOf(Error);
err.message.should.equal('test');
done();
});
});
it('will give expected result', function(done) {
var bitcoind = new BitcoinService(baseConfig);
var blockResult = {