clear namespace when removing profile

This commit is contained in:
Ivan Socolsky 2014-12-10 10:49:25 -03:00
parent b51acf277f
commit f5edb12d42
5 changed files with 35 additions and 10 deletions

View File

@ -356,8 +356,13 @@ Identity.prototype.remove = function(opts, cb) {
self.storage.removeItem(self.getId(), function(err) {
if (err) return cb(err);
self.emitAndKeepAlive('closed');
return cb();
self.storage.clear(function (err) {
if (err) return cb(err);
self.emitAndKeepAlive('closed');
return cb();
});
});
});
};

View File

@ -232,8 +232,28 @@ InsightStorage.prototype.removeItem = function(key, callback) {
};
InsightStorage.prototype.clear = function(callback) {
// NOOP
callback();
var passphrase = this.getPassphrase();
var authHeader = new buffers.Buffer(this.email + ':' + passphrase).toString('base64');
var deleteUrl = this.storeUrl + '/delete/profile';
log.debug('Clearing storage for: ' + this.email);
this.request.post({
url: deleteUrl,
headers: {
'Authorization': authHeader
},
body: null,
}, function(err, response, body) {
if (err) {
return callback('Connection error');
}
if (response.statusCode === 409) {
return callback('BADCREDENTIALS: Invalid username or password');
} else if (response.statusCode !== 200) {
return callback('Unable to remove data on insight');
}
return callback();
});
};
module.exports = InsightStorage;

View File

@ -80,11 +80,7 @@ LocalStorage.prototype.removeItem = function(k, cb) {
};
LocalStorage.prototype.clear = function(cb) {
if (isChromeApp) {
chrome.storage.clear();
} else {
this.ls.clear();
}
// NOP
return cb();
};

View File

@ -171,6 +171,7 @@ describe('Identity model', function() {
var storage = sinon.stub();
storage.setCredentials = sinon.stub();
storage.removeItem = sinon.stub().yields(null);
storage.clear = sinon.stub().yields();
var opts = {
email: 'test@test.com',
@ -191,6 +192,7 @@ describe('Identity model', function() {
should.not.exist(err);
storage.removeItem.calledOnce.should.be.true;
storage.removeItem.getCall(0).args[0].should.equal(iden.getId());
storage.clear.calledOnce.should.be.true;
done();
});
});
@ -199,6 +201,7 @@ describe('Identity model', function() {
var storage = sinon.stub();
storage.setCredentials = sinon.stub();
storage.removeItem = sinon.stub().yields(null);
storage.clear = sinon.stub().yields();
var opts = {
email: 'test@test.com',
@ -231,6 +234,7 @@ describe('Identity model', function() {
storage.removeItem.callCount.should.equal(4);
storage.removeItem.getCall(0).args[0].should.equal(Wallet.getStorageKey('wallet0'));
storage.removeItem.getCall(3).args[0].should.equal(iden.getId());
storage.clear.calledOnce.should.be.true;
done();
});
});

View File

@ -63,7 +63,7 @@ describe('local storage plugin', function() {
it('#clear', function(done) {
storage.clear(function(err) {
assert(!err);
storageMock.clear.calledOnce.should.equal(true);
storageMock.clear.calledOnce.should.be.false;
return done();
});
});