diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 597c164b9ac01c1b8122a1f64f1c5cebf26da42b..cdcc370b7e724ee780aea814f8a031493d4784dd 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -57,7 +57,7 @@ ServerConnector.registerListenerType("onDataLoadStart"); ServerConnector.registerListenerType("onDataLoadStop"); ServerConnector.init(); -ServerConnector.getMinOverlayColorInt = function () { +ServerConnector.getMinOverlayColorInt = function() { var self = this; return self.getLoggedUser().then(function(user) { var userColor = user.getMinColor(); @@ -78,7 +78,7 @@ ServerConnector.returnUserOrSystemColor = function(userColor, systemPromisedColo }); }; -ServerConnector.getSimpleOverlayColorInt = function () { +ServerConnector.getSimpleOverlayColorInt = function() { var self = this; return self.getLoggedUser().then(function(user) { var userColor = user.getSimpleColor(); @@ -94,45 +94,57 @@ ServerConnector.getMaxOverlayColorInt = function() { }); }; -ServerConnector.readFile = function (url, description) { +ServerConnector.sendGetRequest = function(url, description) { + return this.sendRequest({ + url : url, + description : description, + method : "GET" + }); +}; + +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); window.location.reload(false); } - if (description === undefined) { - description = url; + var description = params.url; + if (params.description !== undefined) { + description = params.description; + params.description = undefined; } + var content; - return self.callListeners("onDataLoadStart", description).then(function () { - return self._readFile(url); - }).then(function (result) { + return self.callListeners("onDataLoadStart", description).then(function() { + return self._sendRequest(params); + }).then(function(result) { content = result; return self.callListeners("onDataLoadStop", description); - }, function (error) { - return self.callListeners("onDataLoadStop", description).then(function () { + }, function(error) { + return self.callListeners("onDataLoadStop", description).then(function() { return Promise.reject(error); }); - }).then(function () { + }).then(function() { return content; }); + }; -ServerConnector._readFile = function(url) { +ServerConnector._sendRequest = function(params) { return new Promise(function(resolve, reject) { - request({ - method : "GET", - url : url - }, function(error, response, body) { + request(params, function(error, response, body) { if (error) { reject(error); } else if (response.statusCode !== 200) { reject(new NetworkError(url + " rejected with status code: " + response.statusCode, { - content: body, - url: url, - statusCode: response.statusCode + content : body, + url : url, + statusCode : response.statusCode })); } else { resolve(body); @@ -141,7 +153,7 @@ ServerConnector._readFile = function(url) { }); }; -ServerConnector.sendPostRequest = function (url, params) { +ServerConnector.sendPostRequest = function(url, params) { var self = this; if (self.getSessionData().getToken() === undefined) { self.getSessionData().setLogin(undefined); @@ -161,9 +173,9 @@ ServerConnector.sendPostRequest = function (url, params) { } else if (response.statusCode !== 200) { reject(new NetworkError(url + " rejected with status code: " + response.statusCode, { - content: body, - url: url, - statusCode: response.statusCode + content : body, + url : url, + statusCode : response.statusCode })); } else { resolve(body); @@ -172,7 +184,7 @@ ServerConnector.sendPostRequest = function (url, params) { }); }; -ServerConnector.sendPutRequest = function (url, params) { +ServerConnector.sendPutRequest = function(url, params) { var self = this; if (self.getSessionData().getToken() === undefined) { self.getSessionData().setLogin(undefined); @@ -195,18 +207,18 @@ ServerConnector.sendPutRequest = function (url, params) { }); }; -ServerConnector.sendDeleteRequest = function (url, 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) { + return new Promise(function(resolve, reject) { request({ - method: "DELETE", - url: url, - json: params, - }, function (error, response, body) { + method : "DELETE", + url : url, + json : json, + }, function(error, response, body) { if (error) { reject(error); } else if (response.statusCode !== 200) { @@ -218,18 +230,18 @@ ServerConnector.sendDeleteRequest = function (url, params) { }); }; -ServerConnector.sendPatchRequest = function (url, params) { +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) { + return new Promise(function(resolve, reject) { request({ - method: "PATCH", - url: url, - json: params, - }, function (error, response, body) { + method : "PATCH", + url : url, + json : params, + }, function(error, response, body) { if (error) { reject(error); } else if (response.statusCode !== 200) { @@ -241,7 +253,7 @@ ServerConnector.sendPatchRequest = function (url, params) { }); }; -ServerConnector.getToken = function (token) { +ServerConnector.getToken = function(token) { if (token !== undefined) { return Promise.resolve(token); } @@ -255,9 +267,11 @@ ServerConnector.getToken = function (token) { // if the project is not initialized then check if we can download data // using current token if (self.getSessionData().getProject() === null) { - return self.getConfiguration().then(function () { + return self.getConfiguration({ + token : token + }).then(function() { return token; - }, function () { + }, function() { return self.login(); }); } else { @@ -284,7 +298,7 @@ ServerConnector.getServerBaseUrl = function () { return this._serverBaseUrl; }; -ServerConnector.createGetParams = function (params, prefix) { +ServerConnector.createGetParams = function(params, prefix) { var sorted = [], key; for (key in params) { @@ -320,7 +334,7 @@ ServerConnector.createGetParams = function (params, prefix) { return result; }; -ServerConnector.getApiUrl = function (paramObj) { +ServerConnector.getApiUrl = function(paramObj) { var type = paramObj.type; var method = paramObj.method; var params = this.createGetParams(paramObj.params); @@ -338,7 +352,7 @@ ServerConnector.getApiUrl = function (paramObj) { return result; }; -ServerConnector.getProjectsUrl = function (queryParams, filterParams) { +ServerConnector.getProjectsUrl = function(queryParams, filterParams) { return this.getApiUrl({ type : "projects/", params : filterParams, @@ -369,19 +383,19 @@ ServerConnector.getPublicationsUrl = function (queryParams, filterParams) { }); }; -ServerConnector.getReferenceGenomeUrl = function (queryParams, filterParams) { +ServerConnector.getReferenceGenomeUrl = function(queryParams, filterParams) { var version = this.getIdOrAsterisk(queryParams.version); return this.getApiUrl({ - type: "genomics/taxonomies/" + queryParams.organism + "/genomeTypes/" + queryParams.type + "/versions/" + version - + "/", - params: filterParams + type : "genomics/taxonomies/" + queryParams.organism + "/genomeTypes/" + queryParams.type + "/versions/" + version + + "/", + params : filterParams }); }; -ServerConnector.loginUrl = function () { +ServerConnector.loginUrl = function() { return this.getApiUrl({ - type: "/doLogin", + type : "/doLogin", }); }; @@ -624,10 +638,13 @@ ServerConnector.getUserUrl = function (queryParams, filterParams) { }); }; -ServerConnector.getConfiguration = function () { +ServerConnector.getConfiguration = function(params) { + if (params === undefined) { + params = {}; + } var self = this; if (this._configuration === undefined) { - return self.readFile(self.getConfigurationUrl()).then(function (content) { + return self.sendGetRequest(self.getConfigurationUrl()).then(function(content) { self._configuration = new Configuration(JSON.parse(content)); return Promise.resolve(self._configuration); }); @@ -641,19 +658,19 @@ ServerConnector.getConfigurationParam = function (paramId) { return Promise.reject(new Error("Unknown param type")); } var self = this; - return self.getConfiguration().then(function (configuration) { + return self.getConfiguration().then(function(configuration) { return configuration.getOption(paramId); }); }; -ServerConnector.getModels = function (projectId) { +ServerConnector.getModels = function(projectId) { var queryParams = {}; var filterParams = {}; var self = this; - return self.getProjectId(projectId).then(function (result) { + return self.getProjectId(projectId).then(function(result) { queryParams.projectId = result; - return self.readFile(self.getModelsUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getModelsUrl(queryParams, filterParams)); + }).then(function(content) { var models = []; var parsedJson = JSON.parse(content); for (var i = 0; i < parsedJson.length; i++) { @@ -668,9 +685,9 @@ ServerConnector.getProject = function(projectId) { var filterParams = {}; var project; var self = this; - return self.getProjectId(projectId).then(function (result) { + return self.getProjectId(projectId).then(function(result) { queryParams.projectId = result; - return self.readFile(self.getProjectUrl(queryParams, filterParams)); + return self.sendGetRequest(self.getProjectUrl(queryParams, filterParams)); }).then(function(content) { var downloadedProject = new Project(content); if (self._projectsById[projectId] !== undefined) { @@ -680,21 +697,21 @@ ServerConnector.getProject = function(projectId) { } project = self._projectsById[projectId]; return self.getModels(projectId); - }).then(function (models) { + }).then(function(models) { project.setModel(models[0]); return self.getOverlays(projectId); - }).then(function (overlays) { + }).then(function(overlays) { project.getModel().addLayouts(overlays); return project; - }).then(null, function (error) { + }).then(null, function(error) { if ((error instanceof NetworkError)) { switch (error.statusCode) { - case HttpStatus.NOT_FOUND: - return null; - case HttpStatus.FORBIDDEN: - return Promise.reject(new SecurityError("Access denied.")); - default: - return Promise.reject(error); + case HttpStatus.NOT_FOUND: + return null; + case HttpStatus.FORBIDDEN: + return Promise.reject(new SecurityError("Access denied.")); + default: + return Promise.reject(error); } } else { return Promise.reject(error); @@ -707,7 +724,7 @@ ServerConnector.getProjects = function(reload) { if (self._projects.length > 0 && !reload) { return Promise.resolve(self._projects); } else { - return self.readFile(self.getProjectsUrl()).then(function(content) { + return self.sendGetRequest(self.getProjectsUrl()).then(function(content) { var parsedData = JSON.parse(content); self._projects.length = 0; for (var i = 0; i < parsedData.length; i++) { @@ -729,10 +746,10 @@ ServerConnector.getProjectStatistics = function(projectId) { var filterParams = {}; var self = this; var content; - return self.getProjectId(projectId).then(function (result) { + return self.getProjectId(projectId).then(function(result) { queryParams.projectId = result; - return self.readFile(self.getProjectStatisticsUrl(queryParams, filterParams)); - }).then(function (result) { + return self.sendGetRequest(self.getProjectStatisticsUrl(queryParams, filterParams)); + }).then(function(result) { content = JSON.parse(result); return self.getConfiguration(); }).then(function (configuration) { @@ -759,7 +776,7 @@ ServerConnector.getUser = function (login) { }; var filterParams = {}; - return self.readFile(self.getUserUrl(queryParams, filterParams)).then(function (content) { + return self.sendGetRequest(self.getUserUrl(queryParams, filterParams)).then(function(content) { var obj = JSON.parse(content); return new User(obj); }); @@ -772,8 +789,8 @@ ServerConnector.getOverlays = function (projectId) { return new Promise(function (resolve, reject) { self.getProjectId(projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getOverlaysUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getOverlaysUrl(queryParams, filterParams)); + }).then(function(content) { var arr = JSON.parse(content); var result = []; for (var i = 0; i < arr.length; i++) { @@ -797,8 +814,8 @@ ServerConnector.getOverlayElements = function (overlayId, projectId) { var filterParams = {}; return self.getProjectId(projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getOverlayElementsUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getOverlayElementsUrl(queryParams, filterParams)); + }).then(function(content) { var arr = JSON.parse(content); var result = []; for (var i = 0; i < arr.length; i++) { @@ -827,8 +844,8 @@ ServerConnector.getFullOverlayElement = function (params) { return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getFullOverlayElementUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getFullOverlayElementUrl(queryParams, filterParams)); + }).then(function(content) { var element = JSON.parse(content); var result = null; if (element.type === "REACTION") { @@ -873,8 +890,8 @@ ServerConnector.getOverlayById = function (overlayId, projectId) { var filterParams = {}; return self.getProjectId(projectId).then(function (data) { queryParams.projectId = data; - return self.readFile(self.getOverlayByIdUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getOverlayByIdUrl(queryParams, filterParams)); + }).then(function(content) { return new LayoutData(JSON.parse(content)); }); }; @@ -898,7 +915,7 @@ ServerConnector.getReactions = function (params) { if (filterParams.id.length > 100 || filterParams.participantId.length > 100) { return self.sendPostRequest(self.getReactionsUrl(queryParams), filterParams); } else { - return self.readFile(self.getReactionsUrl(queryParams, filterParams)); + return self.sendGetRequest(self.getReactionsUrl(queryParams, filterParams)); } }).then(function (content) { @@ -938,7 +955,7 @@ ServerConnector.getAliases = function (params) { if (filterParams.id.length > 100) { return self.sendPostRequest(self.getAliasesUrl(queryParams), filterParams); } else { - return self.readFile(self.getAliasesUrl(queryParams, filterParams)); + return self.sendGetRequest(self.getAliasesUrl(queryParams, filterParams)); } }).then(function (content) { var array = JSON.parse(content); @@ -967,8 +984,8 @@ ServerConnector.getComments = function (params) { }; return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getCommentsUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getCommentsUrl(queryParams, filterParams)); + }).then(function(content) { var array = JSON.parse(content); var result = []; for (var i = 0; i < array.length; i++) { @@ -999,8 +1016,8 @@ ServerConnector.getClosestElementsByCoordinates = function (params) { }; return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getSearchUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getSearchUrl(queryParams, filterParams)); + }).then(function(content) { var array = JSON.parse(content); var result = []; for (var i = 0; i < array.length; i++) { @@ -1036,7 +1053,7 @@ ServerConnector.logout = function () { var self = this; self.getSessionData().setToken(undefined); self.getSessionData().setLogin(undefined); - return self.readFile(self.logoutUrl()); + return self.sendGetRequest(self.logoutUrl()); }; ServerConnector.getElementsByQuery = function (params) { @@ -1051,8 +1068,8 @@ ServerConnector.getElementsByQuery = function (params) { return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getSearchUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getSearchUrl(queryParams, filterParams)); + }).then(function(content) { var array = JSON.parse(content); var result = []; for (var i = 0; i < array.length; i++) { @@ -1070,8 +1087,8 @@ ServerConnector.getDrugsByQuery = function (params) { }; return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getSearchDrugsUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getSearchDrugsUrl(queryParams, filterParams)); + }).then(function(content) { var array = JSON.parse(content); var result = []; for (var i = 0; i < array.length; i++) { @@ -1089,8 +1106,8 @@ ServerConnector.getMiRnasByQuery = function (params) { }; return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getSearchMiRnasUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getSearchMiRnasUrl(queryParams, filterParams)); + }).then(function(content) { var array = JSON.parse(content); var result = []; for (var i = 0; i < array.length; i++) { @@ -1108,8 +1125,8 @@ ServerConnector.getChemicalsByQuery = function (params) { }; return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getSearchChemicalsUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getSearchChemicalsUrl(queryParams, filterParams)); + }).then(function(content) { var array = JSON.parse(content); var result = []; for (var i = 0; i < array.length; i++) { @@ -1207,8 +1224,8 @@ ServerConnector.getDrugNamesByTarget = function (params) { }; return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getSearchDrugsUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getSearchDrugsUrl(queryParams, filterParams)); + }).then(function(content) { var result = []; var object = JSON.parse(content); for (var i = 0; i < object.length; i++) { @@ -1227,8 +1244,8 @@ ServerConnector.getMiRnaNamesByTarget = function (params) { }; return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getSearchMiRnasUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getSearchMiRnasUrl(queryParams, filterParams)); + }).then(function(content) { var result = []; var object = JSON.parse(content); for (var i = 0; i < object.length; i++) { @@ -1247,8 +1264,8 @@ ServerConnector.getChemicalNamesByTarget = function (params) { }; return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getSearchChemicalsUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getSearchChemicalsUrl(queryParams, filterParams)); + }).then(function(content) { var result = []; var object = JSON.parse(content); for (var i = 0; i < object.length; i++) { @@ -1343,8 +1360,8 @@ ServerConnector.getSuggestedQueryList = function(projectId) { var self = this; return self.getProjectId(projectId).then(function (result) { projectId = result; - return self.readFile(self.getSuggestedQueryListUrl({ - projectId: projectId + return self.sendGetRequest(self.getSuggestedQueryListUrl({ + projectId : projectId })); }).then(function (content) { return JSON.parse(content); @@ -1374,8 +1391,8 @@ ServerConnector.getPublications = function (params) { }; return self.getProjectId(params.projectId).then(function (result) { queryParams.projectId = result; - return self.readFile(self.getPublicationsUrl(queryParams, filterParams)); - }).then(function (content) { + return self.sendGetRequest(self.getPublicationsUrl(queryParams, filterParams)); + }).then(function(content) { return JSON.parse(content); }); }; @@ -1383,7 +1400,7 @@ ServerConnector.getPublications = function (params) { ServerConnector.getReferenceGenome = function (params) { var self = this; var filterParams = {}; - return self.readFile(self.getReferenceGenomeUrl(params, filterParams)).then(function (content) { + return self.sendGetRequest(self.getReferenceGenomeUrl(params, filterParams)).then(function(content) { return new ReferenceGenome(JSON.parse(content)); }); }; diff --git a/frontend-js/src/test/js/ServerConnector-mock.js b/frontend-js/src/test/js/ServerConnector-mock.js index b77bd3b4d42cda4d9312e16230f6baf967a69340..9e227852697fc3c1ba2793728869b2434b2aa027 100644 --- a/frontend-js/src/test/js/ServerConnector-mock.js +++ b/frontend-js/src/test/js/ServerConnector-mock.js @@ -30,7 +30,14 @@ function urlToFileName(url) { return replaceAsterisk(result); } -ServerConnectorMock._readFile = function(url) { +ServerConnectorMock._sendRequest = function(params) { + var url = params.url; + var prefix = params.method; + if (prefix==="GET") { + prefix = ""; + } else { + prefix +="_"; + } return new Promise(function(resolve, reject) { if (url.indexOf("http") === 0) { request.get(url, function(error, response, body) { diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js index 1c4acaf8ac8f84d55df5e43df032f638e91299cd..92f46f70b04ac7d08d4ccaff824fd2c7b1461aba 100644 --- a/frontend-js/src/test/js/ServerConnector-test.js +++ b/frontend-js/src/test/js/ServerConnector-test.js @@ -118,7 +118,7 @@ describe('ServerConnector', function() { }).then(function(url) { assert.ok(url); assert.ok(url.indexOf(id) >= 0); - return ServerConnector.readFile(url); + return ServerConnector.sendGetRequest(url); }); }); @@ -130,7 +130,7 @@ describe('ServerConnector', function() { }).then(function(url) { assert.ok(url); assert.ok(url.indexOf(modelId) >= 0); - return ServerConnector.readFile(url); + return ServerConnector.sendGetRequest(url); }); }); @@ -142,14 +142,14 @@ describe('ServerConnector', function() { }).then(function(url) { assert.ok(url); assert.ok(url.indexOf(modelId) >= 0); - return ServerConnector.readFile(url); + return ServerConnector.sendGetRequest(url); }); }); it('getProjectSourceDownloadUrl', function() { return ServerConnector.getProjectSourceDownloadUrl().then(function(url) { assert.ok(url); - return ServerConnector.readFile(url); + return ServerConnector.sendGetRequest(url); }); }); @@ -286,7 +286,7 @@ describe('ServerConnector', function() { it('check session expired', function() { ServerConnector.getSessionData().setToken(undefined); assert.ok(ServerConnector.getSessionData().getLogin()) - return ServerConnector.readFile("package.json", "Downloading projects").then(function() { + return ServerConnector.sendGetRequest("package.json", "Downloading projects").then(function() { assert.notOk(ServerConnector.getSessionData().getLogin()) }); }); diff --git a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js index bf7b6b407a8f8ca0a894dd8a9aae5a33f747fd19..388d4e32c238af5a7a21a374a8486959425b4bd9 100644 --- a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js @@ -109,7 +109,7 @@ describe('OverlayPanel', function() { customMap : map }); - return ServerConnector.readFile("testFiles/overlay/good.txt").then(function(fileContent) { + return ServerConnector.sendGetRequest("testFiles/overlay/good.txt").then(function(fileContent) { var obj = panel.parseFile(fileContent); assert.equal(obj.name, "example name"); assert.equal(obj.description, "layout description"); diff --git a/frontend-js/src/test/js/map/data/Project-test.js b/frontend-js/src/test/js/map/data/Project-test.js index 7d9b9b0481c182787511d81530722aafdada6dd0..f498364fbe53ef7d500578d8297bae07561ef504 100644 --- a/frontend-js/src/test/js/map/data/Project-test.js +++ b/frontend-js/src/test/js/map/data/Project-test.js @@ -10,7 +10,7 @@ var assert = chai.assert; describe('Project', function() { describe("constructor", function() { it("default", function() { - return ServerConnector.readFile("testFiles/apiCalls/projects/sample/token=MOCK_TOKEN_ID&").then(function(res) { + return ServerConnector.sendGetRequest("testFiles/apiCalls/projects/sample/token=MOCK_TOKEN_ID&").then(function(res) { var project = new Project(res); assert.ok(project); @@ -24,7 +24,7 @@ describe('Project', function() { }); }); it("from Project obj", function() { - return ServerConnector.readFile("testFiles/apiCalls/projects/sample/token=MOCK_TOKEN_ID&").then(function(res) { + return ServerConnector.sendGetRequest("testFiles/apiCalls/projects/sample/token=MOCK_TOKEN_ID&").then(function(res) { var tmpProject = new Project(res); var project = new Project(tmpProject);