From cf37d013b64052dc3611540821c1e52552e72cc6 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Tue, 27 Oct 2015 16:22:42 -0300 Subject: [PATCH] changed stub methods & more tests --- lib/server.js | 3 +- test/integration/server.js | 66 ++++++++++++++++++++++---------------- 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/lib/server.js b/lib/server.js index 8c80fd2..b4a9bc7 100644 --- a/lib/server.js +++ b/lib/server.js @@ -696,6 +696,7 @@ WalletService.prototype._canCreateAddress = function(ignoreMaxGap, cb) { var self = this; if (ignoreMaxGap) return cb(null, true); + self.storage.fetchAddresses(self.walletId, function(err, addresses) { if (err) return cb(err); var latestAddresses = _.takeRight(_.reject(addresses, { @@ -704,7 +705,7 @@ WalletService.prototype._canCreateAddress = function(ignoreMaxGap, cb) { if (latestAddresses.length < WalletService.MAX_MAIN_ADDRESS_GAP) return cb(null, true); var bc = self._getBlockchainExplorer(latestAddresses[0].network); - bc.getAddressActivity(latestAddresses, cb); + bc.getAddressActivity(_.pluck(latestAddresses, 'address'), cb); }); }; diff --git a/test/integration/server.js b/test/integration/server.js index 11b9e9b..e5d86e9 100644 --- a/test/integration/server.js +++ b/test/integration/server.js @@ -237,8 +237,8 @@ helpers.stubFeeLevels = function(levels) { }; helpers.stubAddressActivity = function(activeAddresses) { - blockchainExplorer.getAddressActivity = function(address, cb) { - return cb(null, _.contains(activeAddresses, address)); + blockchainExplorer.getAddressActivity = function(addresses, cb) { + return cb(null, _.intersection(activeAddresses, [].concat(addresses)).length > 0); }; }; @@ -1667,32 +1667,6 @@ describe('Wallet service', function() { }); }); }); - - it('should fail to create more consecutive addresses with no activity than allowed', function(done) { - var MAX_MAIN_ADDRESS_GAP_old = WalletService.MAX_MAIN_ADDRESS_GAP; - var n = WalletService.MAX_MAIN_ADDRESS_GAP = 2; - helpers.stubAddressActivity([]); - async.map(_.range(n), function(i, next) { - server.createAddress({}, next); - }, function(err, addresses) { - addresses.length.should.equal(n); - - server.createAddress({}, function(err, address) { - should.exist(err); - should.not.exist(address); - err.code.should.equal('MAIN_ADDRESS_GAP_REACHED'); - server.createAddress({ - ignoreMaxGap: true - }, function(err, address) { - should.not.exist(err); - should.exist(address); - address.path.should.equal('m/0/' + n); - WalletService.MAX_MAIN_ADDRESS_GAP = MAX_MAIN_ADDRESS_GAP_old; - done(); - }); - }); - }); - }); }); describe('1-of-1 (BIP44 & P2PKH)', function() { @@ -1741,6 +1715,42 @@ describe('Wallet service', function() { done(); }); }); + + it('should fail to create more consecutive addresses with no activity than allowed', function(done) { + var MAX_MAIN_ADDRESS_GAP_old = WalletService.MAX_MAIN_ADDRESS_GAP; + WalletService.MAX_MAIN_ADDRESS_GAP = 2; + helpers.stubAddressActivity([]); + async.map(_.range(2), function(i, next) { + server.createAddress({}, next); + }, function(err, addresses) { + addresses.length.should.equal(2); + + server.createAddress({}, function(err, address) { + should.exist(err); + should.not.exist(address); + err.code.should.equal('MAIN_ADDRESS_GAP_REACHED'); + server.createAddress({ + ignoreMaxGap: true + }, function(err, address) { + should.not.exist(err); + should.exist(address); + address.path.should.equal('m/0/2'); + + helpers.stubAddressActivity([ + '1GdXraZ1gtoVAvBh49D4hK9xLm6SKgesoE', // m/0/2 + ]); + server.createAddress({}, function(err, address) { + should.not.exist(err); + should.exist(address); + address.path.should.equal('m/0/3'); + + WalletService.MAX_MAIN_ADDRESS_GAP = MAX_MAIN_ADDRESS_GAP_old; + done(); + }); + }); + }); + }); + }); }); });