diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index fb12da4020d4ca29e535b069c8f20fe148f4ed89..698bd803efce6327162f637ce6bdb845dc3b1f75 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -971,7 +971,7 @@ ServerConnector.getLoggedUser = function () { if (self._loggedUser !== undefined) { return Promise.resolve(self._loggedUser); } else { - return self.getUser(self.getSessionData().getLogin()).then(function (user) { + self._loggedUser = self.getUser(self.getSessionData().getLogin()).then(function (user) { if (user !== null) { self._loggedUser = user; return self._loggedUser; @@ -979,6 +979,7 @@ ServerConnector.getLoggedUser = function () { return Promise.reject(new Error("User " + self.getSessionData().getLogin() + " doesn't exist")); } }); + return self._loggedUser; } }; diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js index cc30334eec20eadc55584dd4a33800a88119b184..8b8ed6a47fc4c6520402044d90a3c30bed8290ee 100644 --- a/frontend-js/src/test/js/ServerConnector-test.js +++ b/frontend-js/src/test/js/ServerConnector-test.js @@ -402,5 +402,22 @@ describe('ServerConnector', function () { }); }); + it('getLoggedUser called twice', function () { + var called = 0; + var orginalFunction = ServerConnector.getUser; + ServerConnector.getUser = function (login) { + called++; + return Promise.delay(20, orginalFunction.call(ServerConnector, login)); + }; + + var promises = [ServerConnector.getLoggedUser(), ServerConnector.getLoggedUser()]; + return Promise.all(promises).then(function (result) { + assert.ok(result[0] === result[1]); + assert.equal(1, called); + }).finally(function () { + ServerConnector.getUser = orginalFunction; + }); + }); + });