Add wallet addresses index discovery on importing backup

This commit is contained in:
Yemel Jardi 2014-06-18 10:58:34 -03:00
commit 29920abdb3
7 changed files with 167 additions and 3 deletions

View file

@ -593,4 +593,48 @@ describe('Wallet model', function() {
w.getNetworkName().should.equal('testnet');
});
var mockFakeActivity = function(w, isChange, f) {
var ADDRESSES = w.deriveAddresses(0, 20, isChange);
w.blockchain.checkActivity = function(addresses, cb) {
var activity = new Array(addresses.length);
for(var i=0; i<addresses.length; i++) activity[i] = f(ADDRESSES.indexOf(addresses[i]));
cb(null, activity);
}
}
it('#indexDiscovery should work without found activities', function(done) {
var w = createW2();
mockFakeActivity(w, false, function(index) { return false });
w.indexDiscovery(0, false, 5, function(e, lastActive){
lastActive.should.equal(-1);
done();
});
});
it('#indexDiscovery should continue scanning', function(done) {
var w = createW2();
mockFakeActivity(w, false, function(index) { return index <= 7 });
w.indexDiscovery(0, false, 5, function(e, lastActive){
lastActive.should.equal(7);
done();
});
});
it('#indexDiscovery should not found beyond the scannWindow', function(done) {
var w = createW2();
mockFakeActivity(w, false, function(index) { return index <= 10 || index == 17 });
w.indexDiscovery(0, false, 5, function(e, lastActive){
lastActive.should.equal(10);
done();
});
});
it('#indexDiscovery should look for activity along the scannWindow', function(done) {
var w = createW2();
mockFakeActivity(w, false, function(index) { return index <= 14 && index % 2 == 0 });
w.indexDiscovery(0, false, 5, function(e, lastActive){
lastActive.should.equal(14);
done();
});
});
});

View file

@ -72,5 +72,35 @@ describe('Insight model', function() {
done();
});
});
it('#checkActivity for innactive addreses', function(done) {
var w = new Insight();
w.getTransactions = function(addresses, cb) {
cb([]);
};
w.checkActivity(addresses, function(err, actives){
console.log(err);
actives.length.should.equal(addresses.length);
actives.filter(function(i) { return i }).length.should.equal(0);
done();
});
});
it('#checkActivity for active addreses', function(done) {
var w = new Insight();
w.getTransactions = function(addresses, cb) {
cb([
{vin: [{ addr: '2NATQJnaQe2CUKLyhL1zdNkttJM1dUH9HaM'}], vout: []},
{vin: [{ addr: '2NATQJnaQe2CUKLyhL1zdNkttJM1dUH9HaM'}], vout: []},
{vin: [{ addr: '2N9D5bcCQ2bPWUDByQ6Qb5bMgMtgsk1rw3x'}], vout: []},
{vin: [], vout: [{scriptPubKey: {addresses: ['2NFjCBFZSsxiwWAD7CKQ3hzWFtf9DcqTucY']}}]}
]);
};
w.checkActivity(addresses, function(err, actives){
actives.length.should.equal(addresses.length);
actives.filter(function(i) { return i }).length.should.equal(3);
done();
});
});
});