wallet model basic functions (WIP)

This commit is contained in:
Matias Alejo Garcia 2014-03-26 17:55:02 -03:00
commit 3bf02173c5
3 changed files with 138 additions and 25 deletions

14
test/FakeStorage.js Normal file
View file

@ -0,0 +1,14 @@
var FakeStorage = function(){
this.storage = {};
};
FakeStorage.prototype.read = function (id) {
return this.storage[id];
};
FakeStorage.prototype.save = function(id, payload) {
this.storage[id] = payload;
}
module.exports = require('soop')(FakeStorage);

View file

@ -6,8 +6,7 @@ var bitcore = bitcore || require('../node_modules/bitcore');
var cosign = cosign || {};
var fakeStorage = {}; // TODO
var fakeStorage = require('./FakeStorage');
var Wallet = cosign.Wallet || require('soop').load('../js/models/Wallet', {Storage: fakeStorage});
@ -15,6 +14,22 @@ var config = {
network:'livenet',
};
var createW = function () {
var w = new Wallet(config);
should.exist(w);
var cosigners = [];
for(var i=0; i<4; i++) {
var c = new Wallet(config);
w.haveAllNeededPubKeys().should.equal(false);
w.addCosignerExtendedPubKey(c.getExtendedPubKey());
cosigners.push(c);
}
return {w:w, cosigners: cosigners};
};
describe('Wallet model', function() {
it('should create an instance (livenet)', function () {
@ -51,33 +66,44 @@ describe('Wallet model', function() {
should.exist(w2.getExtendedPubKey());
});
it('should fail to generate shared pub keys', function () {
it('should fail to generate shared pub keys wo extended key', function () {
var w2 = new Wallet(config);
should.exist(w2);
w2.getChangeAddress.bind(0).should.throw();
w2.registeredCosigners().should.equal(1);
w2.haveAllNeededPubKeys().should.equal(false);
w2.getChangeAddress.bind(0).should.throw();
});
it('should add and check when adding shared pub keys', function () {
var w = new Wallet(config);
should.exist(w);
var k = createW();
var w = k.w;
var cosigners = k.cosigners;
var cosigners = [];
for(var i=0; i<4; i++) {
var c = new Wallet(config);
w.haveAllNeededPubKeys().should.equal(false);
w.addCosignerExtendedPubKey(c.getExtendedPubKey());
cosigners.push(c);
}
w.haveAllNeededPubKeys().should.equal(true);
w.addCosignerExtendedPubKey.bind(w.getExtendedPubKey()).should.throw();
w.addCosignerExtendedPubKey.bind(cosigners[0].getExtendedPubKey()).should.throw();
w.addCosignerExtendedPubKey.bind((new Wallet(config)).getExtendedPubKey()).should.throw();
});
it('show be able to store and retrieve', function () {
var k = createW();
var w = k.w;
var cosigners = k.cosigners;
w.store().should.equal(true);
var ID = w.id;
delete w['id'];
w.store.bind().should.throw();
var w2 = Wallet.read(ID);
w2.haveAllNeededPubKeys().should.equal(true);
w2.addCosignerExtendedPubKey.bind(w.getExtendedPubKey()).should.throw();
w2.addCosignerExtendedPubKey.bind(cosigners[0].getExtendedPubKey()).should.throw();
w2.addCosignerExtendedPubKey.bind((new Wallet(config)).getExtendedPubKey()).should.throw();
});
});