#import test
This commit is contained in:
parent
86d9e9ee2c
commit
02d5604497
4 changed files with 40 additions and 14 deletions
|
|
@ -343,11 +343,13 @@ Identity.prototype.closeWallet = function(wid, cb) {
|
||||||
*/
|
*/
|
||||||
Identity.import = function(str, password, opts, cb) {
|
Identity.import = function(str, password, opts, cb) {
|
||||||
preconditions.checkArgument(str);
|
preconditions.checkArgument(str);
|
||||||
console.log('[Identity.js.347:str::]',str); //TODO
|
|
||||||
|
|
||||||
|
|
||||||
var json = JSON.parse(str);
|
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);
|
var iden = new Identity(password, opts);
|
||||||
|
|
@ -383,7 +385,7 @@ Identity.prototype.export = function() {
|
||||||
ret.wallets = {};
|
ret.wallets = {};
|
||||||
|
|
||||||
_.each(this.openWallets, function(w) {
|
_.each(this.openWallets, function(w) {
|
||||||
ret.wallets[w.getId()] = w.toEncryptedObj();
|
ret.wallets[w.getId()] = w.export();
|
||||||
});
|
});
|
||||||
|
|
||||||
var r = JSON.stringify(ret);
|
var r = JSON.stringify(ret);
|
||||||
|
|
|
||||||
|
|
@ -233,17 +233,17 @@ Storage.prototype.clearAll = function(cb) {
|
||||||
Storage.prototype.decrypt = function(base64, password, iterations) {
|
Storage.prototype.decrypt = function(base64, password, iterations) {
|
||||||
|
|
||||||
if (password) {
|
if (password) {
|
||||||
this.storage.savePassphrase();
|
this.savePassphrase();
|
||||||
var opts = iterations ? {iterations: iterations} : {};
|
var opts = iterations ? {iterations: iterations} : {};
|
||||||
|
|
||||||
this.storage.setPassword(password, opts);
|
this.setPassword(password, opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
var decryptedStr = this._decrypt(base64);
|
var decryptedStr = this._decrypt(base64);
|
||||||
var ret = JSON.parse(decryptedStr);
|
var ret = JSON.parse(decryptedStr);
|
||||||
|
|
||||||
if (password)
|
if (password)
|
||||||
this.storage.restorePassphrase();
|
this.restorePassphrase();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ describe('Identity model', function() {
|
||||||
describe('#constructors', function() {
|
describe('#constructors', function() {
|
||||||
describe('#new', function() {
|
describe('#new', function() {
|
||||||
it('should create an identity', function() {
|
it('should create an identity', function() {
|
||||||
var iden = new Identity(email, password, config);
|
var iden = new Identity(password, config);
|
||||||
should.exist(iden);
|
should.exist(iden);
|
||||||
iden.walletDefaults.should.deep.equal(config.walletDefaults);
|
iden.walletDefaults.should.deep.equal(config.walletDefaults);
|
||||||
});
|
});
|
||||||
|
|
@ -358,7 +358,7 @@ describe('Identity model', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.only('#import', function() {
|
describe('#import', function() {
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
var ws = [];
|
var ws = [];
|
||||||
|
|
@ -375,14 +375,37 @@ describe('Identity model', function() {
|
||||||
email: '1@1.com',
|
email: '1@1.com',
|
||||||
hash: 'hash1234'
|
hash: 'hash1234'
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should create an encrypted object', function(done) {
|
|
||||||
|
it('should check the import string', function(done) {
|
||||||
Identity.import(JSON.stringify({
|
Identity.import(JSON.stringify({
|
||||||
iterations: 10
|
profile: '1234'
|
||||||
}), '1234', config, function(err, ret) {
|
}), '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.not.exist(err);
|
||||||
should.exist(ret);
|
should.exist(iden);
|
||||||
|
iden.profile.email.should.equal('1@1.com');
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -420,10 +420,11 @@ describe('Storage model', function() {
|
||||||
should.not.exist(wo);
|
should.not.exist(wo);
|
||||||
});
|
});
|
||||||
it('should call save / restorePassphrase', function() {
|
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.savePassphrase.calledOnce.should.equal(true);
|
||||||
s.restorePassphrase.calledOnce.should.equal(true);
|
s.restorePassphrase.calledOnce.should.equal(true);
|
||||||
should.not.exist(wo);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue