diff --git a/js/models/Identity.js b/js/models/Identity.js index 253af0d1c..a55e1d667 100644 --- a/js/models/Identity.js +++ b/js/models/Identity.js @@ -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(); + }); }); }); }; diff --git a/js/plugins/InsightStorage.js b/js/plugins/InsightStorage.js index 4b78505bd..1f28eccde 100644 --- a/js/plugins/InsightStorage.js +++ b/js/plugins/InsightStorage.js @@ -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; diff --git a/js/plugins/LocalStorage.js b/js/plugins/LocalStorage.js index 10b84293b..3583453ea 100644 --- a/js/plugins/LocalStorage.js +++ b/js/plugins/LocalStorage.js @@ -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(); }; diff --git a/test/Identity.js b/test/Identity.js index daaddb78e..88c904544 100644 --- a/test/Identity.js +++ b/test/Identity.js @@ -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(); }); }); diff --git a/test/plugin.localstorage.js b/test/plugin.localstorage.js index 4e58cae3c..c4b27271c 100644 --- a/test/plugin.localstorage.js +++ b/test/plugin.localstorage.js @@ -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(); }); });