From 4d784ba8f5ef695406e560937fb7354201c6f188 Mon Sep 17 00:00:00 2001 From: Braydon Fuller Date: Tue, 21 Jul 2015 12:17:28 -0400 Subject: [PATCH] Add test for loading bitcoin.conf --- lib/node.js | 8 +++++++- test/data/bitcoin.conf | 17 +++++++++++++++++ test/node.unit.js | 25 ++++++++++++++++++++++++- 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 test/data/bitcoin.conf diff --git a/lib/node.js b/lib/node.js index 07b19ca4..decc99e6 100644 --- a/lib/node.js +++ b/lib/node.js @@ -60,7 +60,13 @@ Node.prototype._loadBitcoinConf = function(config) { var line = unparsed[i]; if (!line.match(/^\#/) && line.match(/\=/)) { var option = line.split('='); - this.bitcoinConfiguration[option[0]] = option[1]; + var value; + if (!Number.isNaN(Number(option[1]))) { + value = Number(option[1]); + } else { + value = option[1]; + } + this.bitcoinConfiguration[option[0]] = value; } } }; diff --git a/test/data/bitcoin.conf b/test/data/bitcoin.conf new file mode 100644 index 00000000..475d225d --- /dev/null +++ b/test/data/bitcoin.conf @@ -0,0 +1,17 @@ +#testnet=1 +#irc=0 +#upnp=0 +server=1 + +whitelist=127.0.0.1 +txindex=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 4ad34c89..5d607681 100644 --- a/test/node.unit.js +++ b/test/node.unit.js @@ -11,6 +11,8 @@ var Block = require('../lib/block'); var proxyquire = require('proxyquire'); var chainlib = require('chainlib'); var OriginalNode = chainlib.Node; +var fs = require('fs'); +var bitcoinConfBuffer = fs.readFileSync('./test/data/bitcoin.conf'); var BaseNode = function() {}; util.inherits(BaseNode, EventEmitter); @@ -19,7 +21,12 @@ BaseNode.prototype._loadConfiguration = sinon.spy(); BaseNode.prototype._initialize = sinon.spy(); chainlib.Node = BaseNode; -var Node = proxyquire('../lib/node', {chainlib: chainlib}); +var Node = proxyquire('../lib/node', { + chainlib: chainlib, + fs: { + readFileSync: sinon.stub().returns(bitcoinConfBuffer) + } +}); chainlib.Node = OriginalNode; describe('Bitcoind Node', function() { @@ -58,6 +65,22 @@ describe('Bitcoind Node', function() { }).should.throw('Strategy "unknown" is unknown'); }); }); + describe('#_loadBitcoinConf', function() { + it('will parse a bitcoin.conf file', function() { + var node = new Node({}); + node._loadBitcoinConf({datadir: '~/.bitcoin'}); + should.exist(node.bitcoinConfiguration); + node.bitcoinConfiguration.should.deep.equal({ + server: 1, + whitelist: '127.0.0.1', + txindex: 1, + port: 20000, + rpcallowip: '127.0.0.1', + rpcuser: 'bitcoin', + rpcpassword: 'local321' + }); + }); + }); describe('#_loadBitcoind', function() { it('should initialize', function() { var node = new Node({});