diff --git a/lib/node.js b/lib/node.js index 3d9c429d..9bc128ae 100644 --- a/lib/node.js +++ b/lib/node.js @@ -86,6 +86,9 @@ Node.prototype._loadBitcoinConf = function(config) { } } + $.checkState((this.bitcoinConfiguration.txindex && this.bitcoinConfiguration.txindex == 1), + 'Txindex option is required in order to use most of the features of bitcore-node. \ +Please add "txindex=1" to your configuration.'); }; Node.prototype._loadBitcoind = function(config) { diff --git a/test/node.unit.js b/test/node.unit.js index 438fae88..9b7405b3 100644 --- a/test/node.unit.js +++ b/test/node.unit.js @@ -22,6 +22,13 @@ BaseNode.prototype._loadConfiguration = sinon.spy(); BaseNode.prototype._initialize = sinon.spy(); chainlib.Node = BaseNode; +var BadNode = proxyquire('../lib/node', { + chainlib: chainlib, + fs: { + readFileSync: sinon.stub().returns(fs.readFileSync(__dirname + '/data/badbitcoin.conf')) + } +}); + var Node = proxyquire('../lib/node', { chainlib: chainlib, fs: { @@ -117,6 +124,12 @@ describe('Bitcoind Node', function() { node._loadBitcoind({datadir: './test', testnet: true}); should.exist(node.bitcoind); }); + it('should throw an exception if txindex isn\'t enabled in the configuration', function() { + var node = new BadNode({}); + (function() { + node._loadBitcoinConf({datadir: './test'}); + }).should.throw('Txindex option'); + }); }); describe('#_syncBitcoindAncestor', function() { it('will find an ancestor 6 deep', function() {