Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 2 additions & 20 deletions locmap/locmap-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -272,14 +260,8 @@ 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 {
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);
Expand Down
105 changes: 98 additions & 7 deletions locmap/test/testRESTAPI_locmap.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ 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 ServerErrors = require('../lib/serverErrors')

var suspend = require('suspend');

Expand Down Expand Up @@ -119,7 +121,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) {
Expand All @@ -131,6 +133,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) {
Expand All @@ -154,23 +168,23 @@ 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();
});
};

// 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) {
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 + '/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);
Expand All @@ -182,7 +196,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) {
Expand All @@ -200,6 +214,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) {
Expand Down Expand Up @@ -533,7 +566,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) {
Expand All @@ -551,6 +584,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) {
Expand Down Expand Up @@ -604,7 +656,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) {
Expand All @@ -630,6 +682,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) {
Expand Down Expand Up @@ -1599,6 +1677,19 @@ 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];
test.deepEqual(res.data, {serverError: ServerErrors.OutOfDateVersionError});
test.done();
});
}

var v1 = 'v1', v2 = 'v2';
var versions = [v1, v2];

Expand Down