#import test

This commit is contained in:
Matias Alejo Garcia 2014-10-21 12:03:09 -03:00
commit 02d5604497
4 changed files with 40 additions and 14 deletions

View file

@ -343,11 +343,13 @@ Identity.prototype.closeWallet = function(wid, cb) {
*/
Identity.import = function(str, password, opts, cb) {
preconditions.checkArgument(str);
console.log('[Identity.js.347:str::]',str); //TODO
var json = JSON.parse(str);
preconditions.checkArgument(_.isNumber(json.iterations));
if (!_.isNumber(json.iterations))
return cb('BADSTR: Missing iterations');
if (!json.profile)
return cb('BADSTR: Missing profile');
var iden = new Identity(password, opts);
@ -383,7 +385,7 @@ Identity.prototype.export = function() {
ret.wallets = {};
_.each(this.openWallets, function(w) {
ret.wallets[w.getId()] = w.toEncryptedObj();
ret.wallets[w.getId()] = w.export();
});
var r = JSON.stringify(ret);

View file

@ -233,17 +233,17 @@ Storage.prototype.clearAll = function(cb) {
Storage.prototype.decrypt = function(base64, password, iterations) {
if (password) {
this.storage.savePassphrase();
this.savePassphrase();
var opts = iterations ? {iterations: iterations} : {};
this.storage.setPassword(password, opts);
this.setPassword(password, opts);
}
var decryptedStr = this._decrypt(base64);
var ret = JSON.parse(decryptedStr);
if (password)
this.storage.restorePassphrase();
this.restorePassphrase();
return ret;
};

View file

@ -108,7 +108,7 @@ describe('Identity model', function() {
describe('#constructors', function() {
describe('#new', function() {
it('should create an identity', function() {
var iden = new Identity(email, password, config);
var iden = new Identity(password, config);
should.exist(iden);
iden.walletDefaults.should.deep.equal(config.walletDefaults);
});
@ -358,7 +358,7 @@ describe('Identity model', function() {
});
});
describe.only('#import', function() {
describe('#import', function() {
beforeEach(function() {
var ws = [];
@ -375,14 +375,37 @@ describe('Identity model', function() {
email: '1@1.com',
hash: 'hash1234'
});
});
it('should create an encrypted object', function(done) {
it('should check the import string', function(done) {
Identity.import(JSON.stringify({
iterations: 10
profile: '1234'
}), '1234', config, function(err, ret) {
err.should.contain('BADSTR');
done();
});
});
it('should check the import string 2', function(done) {
Identity.import(JSON.stringify({
iterations: 10,
}), '1234', config, function(err, ret) {
err.should.contain('BADSTR');
done();
});
});
it('should import a simple wallet', function(done) {
Identity.import(JSON.stringify({
iterations: 10,
profile: '1234'
}), '1234', config, function(err, iden) {
should.not.exist(err);
should.exist(ret);
should.exist(iden);
iden.profile.email.should.equal('1@1.com');
done();
});
});

View file

@ -420,10 +420,11 @@ describe('Storage model', function() {
should.not.exist(wo);
});
it('should call save / restorePassphrase', function() {
var wo = s.decrypt(encryptedLegacy1, 'xxx');
sinon.spy(s,'savePassphrase');
sinon.spy(s,'restorePassphrase');
s.decrypt(encryptedLegacy1, 'xxx');
s.savePassphrase.calledOnce.should.equal(true);
s.restorePassphrase.calledOnce.should.equal(true);
should.not.exist(wo);
});