From 2c40cca160043b6cfcffd3c75f97879dc5747418 Mon Sep 17 00:00:00 2001 From: Olli Raitio Date: Thu, 10 Dec 2015 18:11:26 +0200 Subject: [PATCH 1/4] merge dashboard controller with versionCode param to v2 dashboard controller --- locmap/locmap-server.js | 16 +----- locmap/test/testRESTAPI_locmap.js | 91 ++++++++++++++++++++++++++++--- 2 files changed, 86 insertions(+), 21 deletions(-) diff --git a/locmap/locmap-server.js b/locmap/locmap-server.js index 90331bd..74590de 100644 --- a/locmap/locmap-server.js +++ b/locmap/locmap-server.js @@ -247,22 +247,10 @@ module.exports = function (app) { }); }); - routeUser(GET, 'v2', 'dashboard', function (req, res) { + routeUser(GET, 'v2', 'version/:versionCode/dashboard', function (req, res) { var cache = new Cache(); cache.cache('locmapuser', req.params.userId, req.cachedUserObjFromAuthorization); - locMapRestApi2.getUserDashboard(req.params.userId, cache, function (status, result) { - logger.trace('Dashboard reply status: ' + status + - ' contents: ' + JSON.stringify(result)); - res.send(status, result); - }); - }); - - // Check for version, if it is out of date, then return a server message. - // Otherwise, return the user dashboard information. - routeUser(GET, ['v1', 'v2'], 'version/:versionCode/dashboard', function (req, res) { - var cache = new Cache(); - cache.cache('locmapuser', req.params.userId, req.cachedUserObjFromAuthorization); // Load account data var user = new LocMapUserModel(req.params.userId); user.getData(function() { @@ -279,7 +267,7 @@ module.exports = function (app) { responseData.serverError = ServerErrors.AccountExpiredError; res.send(200, responseData); } else { - locMapRestApi.getUserDashboard(req.params.userId, cache, function (status, result) { + locMapRestApi2.getUserDashboard(req.params.userId, cache, function (status, result) { logger.trace('Dashboard reply status: ' + status + ' contents: ' + JSON.stringify(result)); res.send(status, result); diff --git a/locmap/test/testRESTAPI_locmap.js b/locmap/test/testRESTAPI_locmap.js index 710f684..c87eacf 100644 --- a/locmap/test/testRESTAPI_locmap.js +++ b/locmap/test/testRESTAPI_locmap.js @@ -8,6 +8,7 @@ See LICENSE for details var helpers = require('../../test_helpers/test_helpers'); var lmHelpers = require('../test_helpers/locMapHelpers'); var conf = require('../../lib/config'); +var Constants = require('../lib/constants'); var suspend = require('suspend'); @@ -119,7 +120,7 @@ tests.both.userSignupLowerCasesEmail = function(version) { }; // User dashboard requires authentication. -tests.both.userDashboardAuthentication = function(version) { +tests.v1.userDashboardAuthentication = function(version) { return function (test) { test.expect(5); lmHelpers.createLocMapUser(test, testUserEmail, 'dev1', function (auth, reply) { @@ -131,6 +132,18 @@ tests.both.userDashboardAuthentication = function(version) { } }; +// User dashboard requires authentication. +tests.v2.userDashboardAuthentication = function(version) { + return function (test) { + test.expect(5); + lmHelpers.createLocMapUser(test, testUserEmail, 'dev1', function (auth, reply) { + lmHelpers.api.get(test, '/' + version + '/user/' + reply.id + '/version/' + Constants.MinimumAcceptedVersionCode + '/dashboard', + {headers: {authorizationtoken: ''}}, lmHelpers.wrongAuthTokenResult, function () { + test.done(); + }); + }); + } +}; // User dashboard has correct information. tests.v1.userDashboardNewUser = function(version) { return function (test) { @@ -154,7 +167,7 @@ tests.v2.userDashboardNewUser = function (version) { var auth = res[0]; var reply = res[1]; var res = (yield lmHelpers.api.get(test, - '/' + version + '/user/' + reply.id + '/dashboard', auth, suspend.resumeRaw()))[0]; + '/' + version + '/user/' + reply.id + '/version/' + Constants.MinimumAcceptedVersionCode + '/dashboard', auth, suspend.resumeRaw()))[0]; var dash = JSON.parse(JSON.stringify(lmHelpers.userDashboardv2)); test.deepEqual(res.data, dash); test.done(); @@ -162,7 +175,7 @@ tests.v2.userDashboardNewUser = function (version) { }; // User dashboard contains location when it has been posted. -tests.both.userDashboardWithLocation = function(version) { +tests.v2.userDashboardWithLocation = function(version) { return function (test) { test.expect(8); lmHelpers.createLocMapUser(test, testUserEmail, 'dev1', function (auth, reply) { @@ -170,7 +183,7 @@ tests.both.userDashboardWithLocation = function(version) { authWithLocation.data = JSON.parse(JSON.stringify(lmHelpers.locMapReport1)); lmHelpers.api.post(test, '/' + version + '/user/' + reply.id + '/location', authWithLocation, function () { - lmHelpers.api.get(test, '/' + version + '/user/' + reply.id + '/dashboard', auth, + lmHelpers.api.get(test, '/' + version + '/user/' + reply.id + '/version/' + Constants.MinimumAcceptedVersionCode + '/dashboard', auth, function (res) { lmHelpers.compareLocation(test, res.data.location, lmHelpers.locMapReport1.location); @@ -182,7 +195,7 @@ tests.both.userDashboardWithLocation = function(version) { }; // User dashboard contains battery status when it has been posted. -tests.both.userDashBoardWithBattery = function(version) { +tests.v1.userDashBoardWithBattery = function(version) { return function (test) { test.expect(5); lmHelpers.createLocMapUser(test, testUserEmail, 'dev1', function (auth, reply) { @@ -200,6 +213,25 @@ tests.both.userDashBoardWithBattery = function(version) { } }; +// User dashboard contains battery status when it has been posted. +tests.v2.userDashBoardWithBattery = function(version) { + return function (test) { + test.expect(5); + lmHelpers.createLocMapUser(test, testUserEmail, 'dev1', function (auth, reply) { + var authWithLocation = JSON.parse(JSON.stringify(auth)); + authWithLocation.data = JSON.parse(JSON.stringify(lmHelpers.locMapReport1)); + lmHelpers.api.post(test, '/' + version + '/user/' + reply.id + '/location', authWithLocation, + function () { + lmHelpers.api.get(test, '/' + version + '/user/' + reply.id + '/version/' + Constants.MinimumAcceptedVersionCode + '/dashboard', auth, + function (res) { + test.equal(res.data.battery, 99); + test.done(); + }); + }); + }); + } +}; + // Setting user location gives status 200 tests.both.userLocation = function(version) { return function (test) { @@ -533,7 +565,7 @@ tests.both.allowedUsersUpperLimit = function(version) { }; // Stub users cannot be authorized. -tests.both.stubUserDashboardFails = function(version) { +tests.v1.stubUserDashboardFails = function(version) { return function (test) { test.expect(6); lmHelpers.createLocMapUser(test, testUserEmail, 'dev1', function (auth1, reply1) { @@ -551,6 +583,25 @@ tests.both.stubUserDashboardFails = function(version) { } }; +// Stub users cannot be authorized. +tests.both.stubUserDashboardFails = function(version) { + return function (test) { + test.expect(6); + lmHelpers.createLocMapUser(test, testUserEmail, 'dev1', function (auth1, reply1) { + auth1.data = {emails: [testStubUser]}; + lmHelpers.api.post(test, '/' + version + '/user/' + reply1.id + '/allow', auth1, function () { + // Hash for stub user email, depends on the hashing function. + lmHelpers.api.get(test, + '/' + version + '/user/b4b265d4a1a7f40c631e4dd003510ebf43f32135/version/' + Constants.MinimumAcceptedVersionCode + '/dashboard', + {'headers': {'authorizationtoken': ''}}, lmHelpers.wrongAuthTokenResult, + function () { + test.done(); + }); + }); + }); + } +}; + // Test signup with stub user. tests.both.stubUserSignup = function(version) { return function (test) { @@ -604,7 +655,7 @@ tests.both.existingUserSignupWrongDeviceid = function(version) { } }; -tests.both.setVisibility = function(version) { +tests.v1.setVisibility = function(version) { return function (test) { test.expect(8); lmHelpers.createLocMapUser(test, testUserEmail, 'dev1', function (auth1, reply1) { @@ -630,6 +681,32 @@ tests.both.setVisibility = function(version) { } }; +tests.v2.setVisibility = function(version) { + return function (test) { + test.expect(8); + lmHelpers.createLocMapUser(test, testUserEmail, 'dev1', function (auth1, reply1) { + var authWithVisibility = JSON.parse(JSON.stringify(auth1)); + authWithVisibility.data = {visibility: false}; + lmHelpers.api.put(test, '/' + version + '/user/' + reply1.id + '/visibility', authWithVisibility, + function () { + lmHelpers.api.get(test, '/' + version + '/user/' + reply1.id + '/version/' + Constants.MinimumAcceptedVersionCode + '/dashboard', auth1, + function (dash) { + test.equal(dash.data.visibility, false); + authWithVisibility.data = {visibility: true}; + lmHelpers.api.put(test, '/' + version + '/user/' + reply1.id + '/visibility', + authWithVisibility, function () { + lmHelpers.api.get(test, '/' + version + '/user/' + reply1.id + '/version/' + Constants.MinimumAcceptedVersionCode + '/dashboard', + auth1, function (dash2) { + test.equal(dash2.data.visibility, true); + test.done(); + }); + }); + }); + }); + }); + } +}; + // Create multiple places with same name tests.v1.createMultiplePlacesWithSameNameShouldError = function(version) { return function (test) { From d266cebf012a3851e6cae3927cfd1480f4358202 Mon Sep 17 00:00:00 2001 From: Olli Raitio Date: Thu, 10 Dec 2015 22:30:06 +0200 Subject: [PATCH 2/4] remove checking for user existence in dashboard controller, because the execution never reaches that part --- locmap/locmap-server.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/locmap/locmap-server.js b/locmap/locmap-server.js index 74590de..32bfa08 100644 --- a/locmap/locmap-server.js +++ b/locmap/locmap-server.js @@ -260,12 +260,6 @@ module.exports = function (app) { var responseData = {}; responseData.serverError = ServerErrors.OutOfDateVersionError; res.send(200, responseData); - } else if (!user.exists) { - // Account probably expired. Direct user to the sign up again. - logger.warn('User does not exist.'); - var responseData = {}; - responseData.serverError = ServerErrors.AccountExpiredError; - res.send(200, responseData); } else { locMapRestApi2.getUserDashboard(req.params.userId, cache, function (status, result) { logger.trace('Dashboard reply status: ' + status + From 6a6a8a16cdbdb7129ad322720d794cfbdb8e3e2a Mon Sep 17 00:00:00 2001 From: Olli Raitio Date: Thu, 10 Dec 2015 22:30:43 +0200 Subject: [PATCH 3/4] add test for checking if client is out of date --- locmap/test/testRESTAPI_locmap.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/locmap/test/testRESTAPI_locmap.js b/locmap/test/testRESTAPI_locmap.js index c87eacf..9212aa3 100644 --- a/locmap/test/testRESTAPI_locmap.js +++ b/locmap/test/testRESTAPI_locmap.js @@ -9,6 +9,7 @@ var helpers = require('../../test_helpers/test_helpers'); var lmHelpers = require('../test_helpers/locMapHelpers'); var conf = require('../../lib/config'); var Constants = require('../lib/constants'); +var ServerErrors = require('../lib/serverErrors') var suspend = require('suspend'); @@ -1676,6 +1677,20 @@ tests.v2.userRenameContacts = function(version) { } }; +tests.v2.outOfDateVersionError = function(version) { + return suspend(function* (test) { + var res = yield lmHelpers.createLocMapUser( + test, testUserEmail, 'dev1', suspend.resumeRaw()); + var auth = res[0]; + var reply = res[1]; + var res = (yield lmHelpers.api.get(test, + '/' + version + '/user/' + reply.id + '/version/' + (parseInt(Constants.MinimumAcceptedVersionCode) - 1) + '/dashboard', auth, suspend.resumeRaw()))[0]; + //var dash = JSON.parse(JSON.stringify(lmHelpers.userDashboardv2)); + test.deepEqual(res.data, {serverError: ServerErrors.OutOfDateVersionError}); + test.done(); + }); +} + var v1 = 'v1', v2 = 'v2'; var versions = [v1, v2]; From 9621fa99436e62e18f5f94e14f676f1fc211fbee Mon Sep 17 00:00:00 2001 From: Olli Raitio Date: Fri, 11 Dec 2015 15:42:28 +0200 Subject: [PATCH 4/4] remove commented line so lint won't complain --- locmap/test/testRESTAPI_locmap.js | 1 - 1 file changed, 1 deletion(-) diff --git a/locmap/test/testRESTAPI_locmap.js b/locmap/test/testRESTAPI_locmap.js index 9212aa3..b969d8b 100644 --- a/locmap/test/testRESTAPI_locmap.js +++ b/locmap/test/testRESTAPI_locmap.js @@ -1685,7 +1685,6 @@ tests.v2.outOfDateVersionError = function(version) { var reply = res[1]; var res = (yield lmHelpers.api.get(test, '/' + version + '/user/' + reply.id + '/version/' + (parseInt(Constants.MinimumAcceptedVersionCode) - 1) + '/dashboard', auth, suspend.resumeRaw()))[0]; - //var dash = JSON.parse(JSON.stringify(lmHelpers.userDashboardv2)); test.deepEqual(res.data, {serverError: ServerErrors.OutOfDateVersionError}); test.done(); });