diff --git a/lib/node.js b/lib/node.js index f9b0f21e..48e5f022 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 and reindex an existing database if necessary with reindex=1'); }; Node.prototype._loadBitcoind = function(config) { diff --git a/test/data/badbitcoin.conf b/test/data/badbitcoin.conf new file mode 100644 index 00000000..c69affa1 --- /dev/null +++ b/test/data/badbitcoin.conf @@ -0,0 +1,16 @@ +#testnet=1 +#irc=0 +#upnp=0 +server=1 + +whitelist=127.0.0.1 + +# listen on different ports +port=20000 + +rpcallowip=127.0.0.1 + +rpcuser=bitcoin +rpcpassword=local321 + + diff --git a/test/node.unit.js b/test/node.unit.js index c6516b50..b6de7661 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() {