changed stub methods & more tests
This commit is contained in:
parent
a8a6962c74
commit
cf37d013b6
|
@ -696,6 +696,7 @@ WalletService.prototype._canCreateAddress = function(ignoreMaxGap, cb) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (ignoreMaxGap) return cb(null, true);
|
if (ignoreMaxGap) return cb(null, true);
|
||||||
|
|
||||||
self.storage.fetchAddresses(self.walletId, function(err, addresses) {
|
self.storage.fetchAddresses(self.walletId, function(err, addresses) {
|
||||||
if (err) return cb(err);
|
if (err) return cb(err);
|
||||||
var latestAddresses = _.takeRight(_.reject(addresses, {
|
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);
|
if (latestAddresses.length < WalletService.MAX_MAIN_ADDRESS_GAP) return cb(null, true);
|
||||||
|
|
||||||
var bc = self._getBlockchainExplorer(latestAddresses[0].network);
|
var bc = self._getBlockchainExplorer(latestAddresses[0].network);
|
||||||
bc.getAddressActivity(latestAddresses, cb);
|
bc.getAddressActivity(_.pluck(latestAddresses, 'address'), cb);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -237,8 +237,8 @@ helpers.stubFeeLevels = function(levels) {
|
||||||
};
|
};
|
||||||
|
|
||||||
helpers.stubAddressActivity = function(activeAddresses) {
|
helpers.stubAddressActivity = function(activeAddresses) {
|
||||||
blockchainExplorer.getAddressActivity = function(address, cb) {
|
blockchainExplorer.getAddressActivity = function(addresses, cb) {
|
||||||
return cb(null, _.contains(activeAddresses, address));
|
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() {
|
describe('1-of-1 (BIP44 & P2PKH)', function() {
|
||||||
|
@ -1741,6 +1715,42 @@ describe('Wallet service', function() {
|
||||||
done();
|
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();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue