From 4fe1cdd2a7a1930d8ca0cb5bc23e5bfa22be6e55 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 4 Jul 2014 14:08:48 +0200 Subject: Add machine readable error messages to OC\JSON Reload the files app in case of authentication errors, expired tokens or disabled app Reloading will triger the full server side handeling of those errors formatting fix missing semicolon + some jshint warnings --- apps/files/js/filelist.js | 11 +++++++++-- apps/files/tests/js/filelistSpec.js | 26 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) (limited to 'apps/files') diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 400e3e28f00..80b30968eff 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -945,6 +945,13 @@ this.hideMask(); if (!result || result.status === 'error') { + // if the error is not related to folder we're trying to load, reload the page to handle logout etc + if (result.data.error === 'authentication_error' || + result.data.error === 'token_expired' || + result.data.error === 'application_not_enabled' + ) { + OC.redirect(OC.generateUrl('apps/files')); + } OC.Notification.show(result.data.message); return false; } @@ -968,7 +975,7 @@ } this.setFiles(result.data.files); - return true + return true; }, updateStorageStatistics: function(force) { @@ -1566,7 +1573,7 @@ numMatch=base.match(/\((\d+)\)/); var num=2; if (numMatch && numMatch.length>0) { - num=parseInt(numMatch[numMatch.length-1])+1; + num=parseInt(numMatch[numMatch.length-1], 10)+1; base=base.split('('); base.pop(); base=$.trim(base.join('(')); diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 713cd5468d8..ae22ae0123e 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -1933,4 +1933,30 @@ describe('OCA.Files.FileList tests', function() { }); }); }); + describe('Handeling errors', function () { + beforeEach(function () { + redirectStub = sinon.stub(OC, 'redirect'); + + fileList = new OCA.Files.FileList($('#app-content-files')); + }); + afterEach(function () { + fileList = undefined; + + redirectStub.restore(); + }); + it('reloads the page on authentication errors', function () { + fileList.reload(); + fakeServer.requests[0].respond( + 200, + { 'Content-Type': 'application/json' }, + JSON.stringify({ + status: 'error', + data: { + 'error': 'authentication_error' + } + }) + ); + expect(redirectStub.calledWith(OC.generateUrl('apps/files'))).toEqual(true); + }); + }); }); -- cgit v1.2.3