diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 160ab2668788977c2be6db15acf9ce96dad28879..709b0bc0940f9c3c933a9a7f33952a1c23cbe93e 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -75,7 +75,7 @@ ServerConnector.returnUserOrSystemColor = function(userColor, systemPromisedColo color = (color & 0xFFFFFF); return color; }); -} +}; ServerConnector.getSimpleOverlayColorInt = function() { var self = this; @@ -103,9 +103,6 @@ ServerConnector.sendGetRequest = function(url, description) { ServerConnector.sendRequest = function(params) { var self = this; - if (arguments.length > 1) { - return Promise.reject(new Error("Only two arguments are supported")); - } if (self.getSessionData().getToken() === undefined) { self.getSessionData().setLogin(undefined); @@ -140,9 +137,9 @@ ServerConnector._sendRequest = function(params) { if (error) { reject(error); } else if (response.statusCode !== 200) { - reject(new NetworkError(url + " rejected with status code: " + response.statusCode, { + reject(new NetworkError(params.url + " rejected with status code: " + response.statusCode, { content : body, - url : url, + url : params.url, statusCode : response.statusCode })); } else { @@ -153,112 +150,41 @@ ServerConnector._sendRequest = function(params) { }; ServerConnector.sendPostRequest = function(url, params) { - var self = this; - if (self.getSessionData().getToken() === undefined) { - self.getSessionData().setLogin(undefined); - window.location.reload(false); - } - return new Promise(function(resolve, reject) { - request({ - method : "POST", - url : url, - form : params - }, function(error, response, body) { - if (error) { - reject(new NetworkError(error, { - content : body, - url : url - })); - - } else if (response.statusCode !== 200) { - reject(new NetworkError(url + " rejected with status code: " + response.statusCode, { - content : body, - url : url, - statusCode : response.statusCode - })); - } else { - resolve(body); - } - }); + return this.sendRequest({ + method : "POST", + url : url, + form : params }); }; ServerConnector.sendPutRequest = function(url, params) { - var self = this; - if (self.getSessionData().getToken() === undefined) { - self.getSessionData().setLogin(undefined); - window.location.reload(false); - } - return new Promise(function(resolve, reject) { - request({ - method : "POST", - url : url, - form : params - }, function(error, response, body) { - if (error) { - reject(error); - } else if (response.statusCode !== 200) { - reject(new Error(url + " rejected with status code: " + response.statusCode)); - } else { - resolve(body); - } - }); + return this.sendRequest({ + method : "PUT", + url : url, + form : params }); }; ServerConnector.sendDeleteRequest = function(url, json) { - var self = this; - if (self.getSessionData().getToken() === undefined) { - self.getSessionData().setLogin(undefined); - window.location.reload(false); - } - return new Promise(function(resolve, reject) { - request({ - method : "DELETE", - url : url, - json : json, - }, function(error, response, body) { - if (error) { - reject(error); - } else if (response.statusCode !== 200) { - reject(new Error(url + " rejected with status code: " + response.statusCode)); - } else { - resolve(body); - } - }); + return this.sendRequest({ + method : "DELETE", + url : url, + json : json, }); }; -ServerConnector.sendPatchRequest = function(url, params) { - var self = this; - if (self.getSessionData().getToken() === undefined) { - self.getSessionData().setLogin(undefined); - window.location.reload(false); - } - return new Promise(function(resolve, reject) { - request({ - method : "PATCH", - url : url, - json : params, - }, function(error, response, body) { - if (error) { - reject(error); - } else if (response.statusCode !== 200) { - reject(new Error(url + " rejected with status code: " + response.statusCode)); - } else { - resolve(body); - } - }); +ServerConnector.sendPatchRequest = function(url, json) { + return this.sendRequest({ + method : "PATCH", + url : url, + json : json, }); }; -ServerConnector.getToken = function(token) { - if (token !== undefined) { - return Promise.resolve(token); - } - +ServerConnector.getToken = function() { var self = this; - token = self.getSessionData(null).getToken(); + + var token = self.getSessionData(null).getToken(); if (token === undefined) { return self.login(); } else { @@ -269,6 +195,8 @@ ServerConnector.getToken = function(token) { token : token }).then(function() { return token; + // if there was an error accessing configuration it means our token is + // invalid }, function() { return self.login(); }); diff --git a/frontend-js/src/test/js/ServerConnector-mock.js b/frontend-js/src/test/js/ServerConnector-mock.js index 9e227852697fc3c1ba2793728869b2434b2aa027..09002e5b10c4ff5584842bb6a735bce24586f14f 100644 --- a/frontend-js/src/test/js/ServerConnector-mock.js +++ b/frontend-js/src/test/js/ServerConnector-mock.js @@ -15,28 +15,47 @@ var request = require('request'); var ServerConnectorMock = OriginalServerConnector; function replaceAsterisk(str) { - return str.replace(/\*/g,"all").replace(/\:/g,"."); + return str.replace(/\*/g, "all").replace(/\:/g, "."); } function urlToFileName(url) { var result = url; var token = OriginalServerConnector.getSessionData().getToken(); - if (token!==undefined && token!=="" && url.startsWith("./testFiles/apiCalls")) { - if (!result.endsWith("&") &&!result.endsWith("_") ) { - result +="/"; + if (token !== undefined && token !== "" && url.startsWith("./testFiles/apiCalls")) { + if (!result.endsWith("&") && !result.endsWith("_")) { + result += "/"; } - result+="token=" +token+"&"; + result += "token=" + token + "&"; } - + return replaceAsterisk(result); } +function encodeParams(params) { + var result = {}; + for ( var key in params) { + if (params.hasOwnProperty(key)) { + result[key] = encodeURIComponent(params[key]); + } + } + return result; +} + + ServerConnectorMock._sendRequest = function(params) { + var self = this; var url = params.url; var prefix = params.method; - if (prefix==="GET") { + if (prefix === "GET") { prefix = ""; } else { - prefix +="_"; + prefix = "/" + prefix + "_"; + } + var sufix = ""; + if (params.form !== undefined) { + sufix += self.createGetParams(encodeParams(params.form)); + } + if (params.json !== undefined) { + sufix += self.createGetParams(params.json); } return new Promise(function(resolve, reject) { if (url.indexOf("http") === 0) { @@ -50,7 +69,7 @@ ServerConnectorMock._sendRequest = function(params) { } }); } else { - var fileName = urlToFileName(url); + var fileName = urlToFileName(url + prefix + sufix); fs.readFile(fileName, 'utf8', function(err, content) { if (err) { reject(new NetworkError(err.message, { @@ -66,136 +85,6 @@ ServerConnectorMock._sendRequest = function(params) { }); }; -function encodeParams(params) { - var result = {}; - for ( var key in params) { - if (params.hasOwnProperty(key)) { - result[key] = encodeURIComponent(params[key]); - } - } - return result; -} - -ServerConnectorMock.sendPostRequest = function(url, params) { - var self = this; - return new Promise(function(resolve, reject) { - if (url.indexOf("http") === 0) { - request.post({ - url : url, - form : params - }, function(error, response, body) { - if (error) { - reject(error); - - } else if (response.statusCode !== 200) { - reject(response); - } else { - resolve(body); - } - }); - } else { - var mockUrl = urlToFileName(url + "/POST_" + self.createGetParams(encodeParams(params))); - fs.readFile(mockUrl, 'utf8', function(err, content) { - if (err) { - reject(err); - } else { - resolve(content); - } - }); - } - }); -}; - -ServerConnectorMock.sendPutRequest = function(url, params) { - var self = this; - return new Promise(function(resolve, reject) { - if (url.indexOf("http") === 0) { - request.put({ - url : url, - form : params - }, function(error, response, body) { - if (error) { - reject(error); - - } else if (response.statusCode !== 200) { - reject(response); - } else { - resolve(body); - } - }); - } else { - var mockUrl = urlToFileName(url + "/PUT_" + self.createGetParams(encodeParams(params))); - fs.readFile(mockUrl, 'utf8', function(err, content) { - if (err) { - reject(err); - } else { - resolve(content); - } - }); - } - }); -}; - -ServerConnectorMock.sendDeleteRequest = function(url, params) { - var self = this; - return new Promise(function(resolve, reject) { - if (url.indexOf("http") === 0) { - request.delete({ - url : url, - form : params - }, function(error, response, body) { - if (error) { - reject(error); - - } else if (response.statusCode !== 200) { - reject(response); - } else { - resolve(body); - } - }); - } else { - var mockUrl = urlToFileName(url + "/DELETE_" + self.createGetParams(encodeParams(params))); - fs.readFile(mockUrl, 'utf8', function(err, content) { - if (err) { - reject(err); - } else { - resolve(JSON.parse(content)); - } - }); - } - }); -}; - -ServerConnectorMock.sendPatchRequest = function(url, params) { - var self = this; - return new Promise(function(resolve, reject) { - if (url.indexOf("http") === 0) { - request.delete({ - url : url, - form : params - }, function(error, response, body) { - if (error) { - reject(error); - - } else if (response.statusCode !== 200) { - reject(response); - } else { - resolve(body); - } - }); - } else { - var mockUrl = urlToFileName(url + "/PATCH_" + self.createGetParams(params)); - fs.readFile(mockUrl, 'utf8', function(err, content) { - if (err) { - reject(err); - } else { - resolve(JSON.parse(content)); - } - }); - } - }); -}; - ServerConnectorMock.getApiBaseUrl = function() { return "./testFiles/apiCalls/"; }; diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js index 4ac442e701a3b947299dbdd595b4a3ad3508aa1f..3bf7e2c47e3b1407a384d80d39a66a689d7f65b8 100644 --- a/frontend-js/src/test/js/ServerConnector-test.js +++ b/frontend-js/src/test/js/ServerConnector-test.js @@ -275,9 +275,9 @@ describe('ServerConnector', function() { describe('readFile', function() { it('check session expired', function() { ServerConnector.getSessionData().setToken(undefined); - assert.ok(ServerConnector.getSessionData().getLogin()) + assert.ok(ServerConnector.getSessionData().getLogin()); return ServerConnector.sendGetRequest("package.json", "Downloading projects").then(function() { - assert.notOk(ServerConnector.getSessionData().getLogin()) + assert.notOk(ServerConnector.getSessionData().getLogin()); }); }); });