Commit 46b74188 authored by Aurélien Vermylen's avatar Aurélien Vermylen

Major rehaul of automaticapi storage: list by device and not user.

parent b7a612ea
...@@ -14498,12 +14498,12 @@ return new Parser; ...@@ -14498,12 +14498,12 @@ return new Parser;
var result = [], var result = [],
type = endpoint.split('/')[1], type = endpoint.split('/')[1],
promises, promises,
usr = filters.user || 'all', dev = filters.device || 'all',
isId = checkEndpointAsId(endpoint), isId = checkEndpointAsId(endpoint),
user_dict = {}, device_dict = {},
i; i;
// Remove 'user' filter which should not be put in Automatic request. // Remove 'device' filter which should not be put in Automatic request.
delete filters.user; delete filters.device;
// Check endpoint validity. // Check endpoint validity.
if (!checkEndpoint(endpoint)) { if (!checkEndpoint(endpoint)) {
throw new jIO.util.jIOError('Wrong Automatic API query. (usually ' + throw new jIO.util.jIOError('Wrong Automatic API query. (usually ' +
...@@ -14512,7 +14512,7 @@ return new Parser; ...@@ -14512,7 +14512,7 @@ return new Parser;
// Promise chain to handle multi-part response ("_metadata"->"next" parts). // Promise chain to handle multi-part response ("_metadata"->"next" parts).
function treatNext(returned) { function treatNext(returned) {
var data, var data,
user_id, device_id,
next; next;
// If the returned value was an error, return it (-> quite nasty design // If the returned value was an error, return it (-> quite nasty design
// to have to return errors, but this is in order for all RSVP.all() to // to have to return errors, but this is in order for all RSVP.all() to
...@@ -14521,7 +14521,7 @@ return new Parser; ...@@ -14521,7 +14521,7 @@ return new Parser;
return returned; return returned;
} }
data = returned[0]; data = returned[0];
user_id = user_dict[returned[1]]; device_id = device_dict[returned[1]];
data = [data]; data = [data];
if (!isId) { if (!isId) {
if (data[0]._metadata === undefined) { if (data[0]._metadata === undefined) {
...@@ -14536,16 +14536,16 @@ return new Parser; ...@@ -14536,16 +14536,16 @@ return new Parser;
path = URI(dat.url).path(); path = URI(dat.url).path();
temp = { temp = {
'automatic_path': path, 'automatic_path': path,
'reference': '/' + user_id + path, 'reference': '/' + device_id + path,
'id': '/' + user_id + path, 'id': '/' + device_id + path,
'type': type, 'type': type,
'start_date': dat.started_at || null, 'start_date': dat.started_at || null,
'stop_date': dat.ended_at || null, 'stop_date': dat.ended_at || null,
'automatic_user': user_id 'automatic_device': device_id
}; };
result.push(temp); result.push(temp);
return jio._cache.put('/' + user_id + path, temp).push(function () { return jio._cache.put('/' + device_id + path, temp).push(function () {
return jio._cache.putAttachment('/' + user_id + path, 'data', return jio._cache.putAttachment('/' + device_id + path, 'data',
new Blob([JSON.stringify(dat)], {type: new Blob([JSON.stringify(dat)], {type:
'text/plain'})); 'text/plain'}));
}); });
...@@ -14578,13 +14578,15 @@ return new Parser; ...@@ -14578,13 +14578,15 @@ return new Parser;
return new RSVP.Queue().push(function () { return new RSVP.Queue().push(function () {
return jIO.util.ajax({ return jIO.util.ajax({
'type': 'GET', 'type': 'GET',
'url': automatic_template.expand({endpoint: ['user', 'me', '']}), 'url': automatic_template.expand({endpoint: ['user', 'me', 'device',
'']}),
'headers': {'Authorization': 'Bearer ' + token} 'headers': {'Authorization': 'Bearer ' + token}
//'xhrFields': {withCredentials: true} //'xhrFields': {withCredentials: true}
}); });
}).push(function (respusr) { }).push(function (respdev) {
user_dict[token] = JSON.parse(respusr.target.responseText).id; device_dict[token] =
if (usr === 'all' || usr === user_dict[token]) { JSON.parse(respdev.target.responseText).results[0].id;
if (dev === 'all' || dev === device_dict[token]) {
return jIO.util.ajax({ return jIO.util.ajax({
'type': 'GET', 'type': 'GET',
'url': URI(automatic_template.expand({endpoint: 'url': URI(automatic_template.expand({endpoint:
...@@ -14610,7 +14612,7 @@ return new Parser; ...@@ -14610,7 +14612,7 @@ return new Parser;
return RSVP.all(promises); return RSVP.all(promises);
}).push(function (trueOrErrorArray) { }).push(function (trueOrErrorArray) {
// If we queried an id, return results should be length 1 // If we queried an id, return results should be length 1
if (isId && (usr !== 'all')) { if (isId && (dev !== 'all')) {
if (result.length === 1) { if (result.length === 1) {
return result[0]; return result[0];
} }
...@@ -14620,7 +14622,7 @@ return new Parser; ...@@ -14620,7 +14622,7 @@ return new Parser;
} }
// Result is empty, so we throw the correct token error. // Result is empty, so we throw the correct token error.
i = jio._access_tokens.map(function (token) { i = jio._access_tokens.map(function (token) {
if (user_dict[token] === usr) { if (device_dict[token] === dev) {
return true; return true;
} }
return false; return false;
...@@ -14630,8 +14632,8 @@ return new Parser; ...@@ -14630,8 +14632,8 @@ return new Parser;
throw trueOrErrorArray[i]; throw trueOrErrorArray[i];
} }
// If we didn't find the error in the promise returns, we don't have // If we didn't find the error in the promise returns, we don't have
// a token for user usr. // a token for device dev.
throw new jIO.util.jIOError('No valid token for user: ' + usr, 400); throw new jIO.util.jIOError('No valid token for device: ' + dev, 400);
} }
// Otherwise return results and errors and let caller handle. // Otherwise return results and errors and let caller handle.
return result; return result;
...@@ -14662,8 +14664,8 @@ return new Parser; ...@@ -14662,8 +14664,8 @@ return new Parser;
AutomaticAPIStorage.prototype.get = function (id) { AutomaticAPIStorage.prototype.get = function (id) {
var self = this, var self = this,
endpoint = id.split('/'), endpoint = id.split('/'),
usr; dev;
usr = endpoint.splice(1, 1)[0]; dev = endpoint.splice(1, 1)[0];
endpoint = endpoint.join('/'); endpoint = endpoint.join('/');
if (id.indexOf('/') !== 0) { if (id.indexOf('/') !== 0) {
throw new jIO.util.jIOError('id ' + id + throw new jIO.util.jIOError('id ' + id +
...@@ -14676,13 +14678,13 @@ return new Parser; ...@@ -14676,13 +14678,13 @@ return new Parser;
if (!checkEndpointAsId(endpoint)) { if (!checkEndpointAsId(endpoint)) {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
if (usr === 'all') { if (dev === 'all') {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
return this._cache.get(id).push(function (res) { return this._cache.get(id).push(function (res) {
return res; return res;
}, function () { }, function () {
return _queryAutomaticAPI(endpoint, {'user': usr}, self) return _queryAutomaticAPI(endpoint, {'device': dev}, self)
.push(function (res) { .push(function (res) {
return res; return res;
}, function (err) { }, function (err) {
...@@ -14715,8 +14717,8 @@ return new Parser; ...@@ -14715,8 +14717,8 @@ return new Parser;
AutomaticAPIStorage.prototype.getAttachment = function (id, name, options) { AutomaticAPIStorage.prototype.getAttachment = function (id, name, options) {
var self = this, var self = this,
endpoint = id.split('/'), endpoint = id.split('/'),
usr; dev;
usr = endpoint.splice(1, 1)[0]; dev = endpoint.splice(1, 1)[0];
endpoint = endpoint.join('/'); endpoint = endpoint.join('/');
if (id.indexOf('/') !== 0) { if (id.indexOf('/') !== 0) {
throw new jIO.util.jIOError('id ' + id + throw new jIO.util.jIOError('id ' + id +
...@@ -14729,7 +14731,7 @@ return new Parser; ...@@ -14729,7 +14731,7 @@ return new Parser;
if (!checkEndpointAsId(endpoint)) { if (!checkEndpointAsId(endpoint)) {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
if (usr === 'all') { if (dev === 'all') {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
return this._cache.get(id).push(function () { return this._cache.get(id).push(function () {
...@@ -14759,8 +14761,8 @@ return new Parser; ...@@ -14759,8 +14761,8 @@ return new Parser;
AutomaticAPIStorage.prototype.allAttachments = function (id) { AutomaticAPIStorage.prototype.allAttachments = function (id) {
var endpoint = id.split('/'), var endpoint = id.split('/'),
usr; dev;
usr = endpoint.splice(1, 1)[0]; dev = endpoint.splice(1, 1)[0];
endpoint = endpoint.join('/'); endpoint = endpoint.join('/');
if (id.indexOf('/') !== 0) { if (id.indexOf('/') !== 0) {
throw new jIO.util.jIOError('id ' + id + throw new jIO.util.jIOError('id ' + id +
...@@ -14773,7 +14775,7 @@ return new Parser; ...@@ -14773,7 +14775,7 @@ return new Parser;
if (!checkEndpointAsId(endpoint)) { if (!checkEndpointAsId(endpoint)) {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
if (usr === 'all') { if (dev === 'all') {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
return {data: null}; return {data: null};
...@@ -14793,9 +14795,9 @@ return new Parser; ...@@ -14793,9 +14795,9 @@ return new Parser;
key_list, key_list,
automatic_filters = {}, automatic_filters = {},
simplequery_type_value, simplequery_type_value,
intercept_keys = ['start_date', 'stop_date', 'automatic_user', intercept_keys = ['start_date', 'stop_date', 'automatic_device',
'vehicle'], 'vehicle'],
intercept_keys_automatic_name = ['started_at', 'ended_at', 'user', intercept_keys_automatic_name = ['started_at', 'ended_at', 'device',
'vehicle'], 'vehicle'],
intercept_accepted_operators = [['>', '>=', '<', '<='], intercept_accepted_operators = [['>', '>=', '<', '<='],
['>', '>=', '<', '<='], ['='], ['=']], ['>', '>=', '<', '<='], ['='], ['=']],
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -56,12 +56,12 @@ ...@@ -56,12 +56,12 @@
var result = [], var result = [],
type = endpoint.split('/')[1], type = endpoint.split('/')[1],
promises, promises,
usr = filters.user || 'all', dev = filters.device || 'all',
isId = checkEndpointAsId(endpoint), isId = checkEndpointAsId(endpoint),
user_dict = {}, device_dict = {},
i; i;
// Remove 'user' filter which should not be put in Automatic request. // Remove 'device' filter which should not be put in Automatic request.
delete filters.user; delete filters.device;
// Check endpoint validity. // Check endpoint validity.
if (!checkEndpoint(endpoint)) { if (!checkEndpoint(endpoint)) {
throw new jIO.util.jIOError('Wrong Automatic API query. (usually ' + throw new jIO.util.jIOError('Wrong Automatic API query. (usually ' +
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
// Promise chain to handle multi-part response ("_metadata"->"next" parts). // Promise chain to handle multi-part response ("_metadata"->"next" parts).
function treatNext(returned) { function treatNext(returned) {
var data, var data,
user_id, device_id,
next; next;
// If the returned value was an error, return it (-> quite nasty design // If the returned value was an error, return it (-> quite nasty design
// to have to return errors, but this is in order for all RSVP.all() to // to have to return errors, but this is in order for all RSVP.all() to
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
return returned; return returned;
} }
data = returned[0]; data = returned[0];
user_id = user_dict[returned[1]]; device_id = device_dict[returned[1]];
data = [data]; data = [data];
if (!isId) { if (!isId) {
if (data[0]._metadata === undefined) { if (data[0]._metadata === undefined) {
...@@ -94,16 +94,16 @@ ...@@ -94,16 +94,16 @@
path = URI(dat.url).path(); path = URI(dat.url).path();
temp = { temp = {
'automatic_path': path, 'automatic_path': path,
'reference': '/' + user_id + path, 'reference': '/' + device_id + path,
'id': '/' + user_id + path, 'id': '/' + device_id + path,
'type': type, 'type': type,
'start_date': dat.started_at || null, 'start_date': dat.started_at || null,
'stop_date': dat.ended_at || null, 'stop_date': dat.ended_at || null,
'automatic_user': user_id 'automatic_device': device_id
}; };
result.push(temp); result.push(temp);
return jio._cache.put('/' + user_id + path, temp).push(function () { return jio._cache.put('/' + device_id + path, temp).push(function () {
return jio._cache.putAttachment('/' + user_id + path, 'data', return jio._cache.putAttachment('/' + device_id + path, 'data',
new Blob([JSON.stringify(dat)], {type: new Blob([JSON.stringify(dat)], {type:
'text/plain'})); 'text/plain'}));
}); });
...@@ -136,13 +136,15 @@ ...@@ -136,13 +136,15 @@
return new RSVP.Queue().push(function () { return new RSVP.Queue().push(function () {
return jIO.util.ajax({ return jIO.util.ajax({
'type': 'GET', 'type': 'GET',
'url': automatic_template.expand({endpoint: ['user', 'me', '']}), 'url': automatic_template.expand({endpoint: ['user', 'me', 'device',
'']}),
'headers': {'Authorization': 'Bearer ' + token} 'headers': {'Authorization': 'Bearer ' + token}
//'xhrFields': {withCredentials: true} //'xhrFields': {withCredentials: true}
}); });
}).push(function (respusr) { }).push(function (respdev) {
user_dict[token] = JSON.parse(respusr.target.responseText).id; device_dict[token] =
if (usr === 'all' || usr === user_dict[token]) { JSON.parse(respdev.target.responseText).results[0].id;
if (dev === 'all' || dev === device_dict[token]) {
return jIO.util.ajax({ return jIO.util.ajax({
'type': 'GET', 'type': 'GET',
'url': URI(automatic_template.expand({endpoint: 'url': URI(automatic_template.expand({endpoint:
...@@ -168,7 +170,7 @@ ...@@ -168,7 +170,7 @@
return RSVP.all(promises); return RSVP.all(promises);
}).push(function (trueOrErrorArray) { }).push(function (trueOrErrorArray) {
// If we queried an id, return results should be length 1 // If we queried an id, return results should be length 1
if (isId && (usr !== 'all')) { if (isId && (dev !== 'all')) {
if (result.length === 1) { if (result.length === 1) {
return result[0]; return result[0];
} }
...@@ -178,7 +180,7 @@ ...@@ -178,7 +180,7 @@
} }
// Result is empty, so we throw the correct token error. // Result is empty, so we throw the correct token error.
i = jio._access_tokens.map(function (token) { i = jio._access_tokens.map(function (token) {
if (user_dict[token] === usr) { if (device_dict[token] === dev) {
return true; return true;
} }
return false; return false;
...@@ -188,8 +190,8 @@ ...@@ -188,8 +190,8 @@
throw trueOrErrorArray[i]; throw trueOrErrorArray[i];
} }
// If we didn't find the error in the promise returns, we don't have // If we didn't find the error in the promise returns, we don't have
// a token for user usr. // a token for device dev.
throw new jIO.util.jIOError('No valid token for user: ' + usr, 400); throw new jIO.util.jIOError('No valid token for device: ' + dev, 400);
} }
// Otherwise return results and errors and let caller handle. // Otherwise return results and errors and let caller handle.
return result; return result;
...@@ -220,8 +222,8 @@ ...@@ -220,8 +222,8 @@
AutomaticAPIStorage.prototype.get = function (id) { AutomaticAPIStorage.prototype.get = function (id) {
var self = this, var self = this,
endpoint = id.split('/'), endpoint = id.split('/'),
usr; dev;
usr = endpoint.splice(1, 1)[0]; dev = endpoint.splice(1, 1)[0];
endpoint = endpoint.join('/'); endpoint = endpoint.join('/');
if (id.indexOf('/') !== 0) { if (id.indexOf('/') !== 0) {
throw new jIO.util.jIOError('id ' + id + throw new jIO.util.jIOError('id ' + id +
...@@ -234,13 +236,13 @@ ...@@ -234,13 +236,13 @@
if (!checkEndpointAsId(endpoint)) { if (!checkEndpointAsId(endpoint)) {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
if (usr === 'all') { if (dev === 'all') {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
return this._cache.get(id).push(function (res) { return this._cache.get(id).push(function (res) {
return res; return res;
}, function () { }, function () {
return _queryAutomaticAPI(endpoint, {'user': usr}, self) return _queryAutomaticAPI(endpoint, {'device': dev}, self)
.push(function (res) { .push(function (res) {
return res; return res;
}, function (err) { }, function (err) {
...@@ -273,8 +275,8 @@ ...@@ -273,8 +275,8 @@
AutomaticAPIStorage.prototype.getAttachment = function (id, name, options) { AutomaticAPIStorage.prototype.getAttachment = function (id, name, options) {
var self = this, var self = this,
endpoint = id.split('/'), endpoint = id.split('/'),
usr; dev;
usr = endpoint.splice(1, 1)[0]; dev = endpoint.splice(1, 1)[0];
endpoint = endpoint.join('/'); endpoint = endpoint.join('/');
if (id.indexOf('/') !== 0) { if (id.indexOf('/') !== 0) {
throw new jIO.util.jIOError('id ' + id + throw new jIO.util.jIOError('id ' + id +
...@@ -287,7 +289,7 @@ ...@@ -287,7 +289,7 @@
if (!checkEndpointAsId(endpoint)) { if (!checkEndpointAsId(endpoint)) {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
if (usr === 'all') { if (dev === 'all') {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
return this._cache.get(id).push(function () { return this._cache.get(id).push(function () {
...@@ -317,8 +319,8 @@ ...@@ -317,8 +319,8 @@
AutomaticAPIStorage.prototype.allAttachments = function (id) { AutomaticAPIStorage.prototype.allAttachments = function (id) {
var endpoint = id.split('/'), var endpoint = id.split('/'),
usr; dev;
usr = endpoint.splice(1, 1)[0]; dev = endpoint.splice(1, 1)[0];
endpoint = endpoint.join('/'); endpoint = endpoint.join('/');
if (id.indexOf('/') !== 0) { if (id.indexOf('/') !== 0) {
throw new jIO.util.jIOError('id ' + id + throw new jIO.util.jIOError('id ' + id +
...@@ -331,7 +333,7 @@ ...@@ -331,7 +333,7 @@
if (!checkEndpointAsId(endpoint)) { if (!checkEndpointAsId(endpoint)) {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
if (usr === 'all') { if (dev === 'all') {
throw new jIO.util.jIOError('Invalid id.', 400); throw new jIO.util.jIOError('Invalid id.', 400);
} }
return {data: null}; return {data: null};
...@@ -351,9 +353,9 @@ ...@@ -351,9 +353,9 @@
key_list, key_list,
automatic_filters = {}, automatic_filters = {},
simplequery_type_value, simplequery_type_value,
intercept_keys = ['start_date', 'stop_date', 'automatic_user', intercept_keys = ['start_date', 'stop_date', 'automatic_device',
'vehicle'], 'vehicle'],
intercept_keys_automatic_name = ['started_at', 'ended_at', 'user', intercept_keys_automatic_name = ['started_at', 'ended_at', 'device',
'vehicle'], 'vehicle'],
intercept_accepted_operators = [['>', '>=', '<', '<='], intercept_accepted_operators = [['>', '>=', '<', '<='],
['>', '>=', '<', '<='], ['='], ['=']], ['>', '>=', '<', '<='], ['='], ['=']],
......
...@@ -85,11 +85,14 @@ ...@@ -85,11 +85,14 @@
}); });
test("get inexistent document", function () { test("get inexistent document", function () {
var url = "https://api.automatic.com/user/me/"; var url = "https://api.automatic.com/user/me/device/";
this.server.respondWith("GET", url, [200, { this.server.respondWith("GET", url, [200, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"id": "usertest"}' ]); }, '{"_metadata": {"count": 1, "next": null, "previous": null},' +
'"results": [{"id": "devicetest",' +
'"url": "https://api.automatic.com/user/usertest/' +
'device/devicetest/", "version": 5}]}']);
url = "https://api.automatic.com/trip/T_inexistent/"; url = "https://api.automatic.com/trip/T_inexistent/";
this.server.respondWith("GET", url, [404, { this.server.respondWith("GET", url, [404, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
...@@ -98,11 +101,11 @@ ...@@ -98,11 +101,11 @@
stop(); stop();
expect(3); expect(3);
this.jio.get("/usertest/trip/T_inexistent/") this.jio.get("/devicetest/trip/T_inexistent/")
.fail(function (error) { .fail(function (error) {
ok(error instanceof jIO.util.jIOError); ok(error instanceof jIO.util.jIOError);
equal(error.message, 'Cannot find document:' + equal(error.message, 'Cannot find document:' +
' /usertest/trip/T_inexistent/, Error: ' + ' /devicetest/trip/T_inexistent/, Error: ' +
'{"error": "err_object_not_found"}'); '{"error": "err_object_not_found"}');
equal(error.status_code, 404); equal(error.status_code, 404);
}) })
...@@ -160,20 +163,24 @@ ...@@ -160,20 +163,24 @@
this.server.respondWith("GET", url, [401, { this.server.respondWith("GET", url, [401, {
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"error":"err_unauthorized","detail":"Invalid token."}\n']); }, '{"error":"err_unauthorized","detail":"Invalid token."}\n']);
url = "https://api.automatic.com/user/me/"; url = "https://api.automatic.com/user/me/device/";
this.server.respondWith("GET", url, [200, { this.server.respondWith("GET", url, [200, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"id": "usertest2"}' ]); }, '{"_metadata": {"count": 1, "next": null, "previous": null},' +
'"results": [{"id": "devicetest2",' +
'"url": "https://api.automatic.com/user/usertest/' +
'device/devicetest2/", "version": 5}]}' ]);
stop(); stop();
expect(3); expect(3);
this.jio.get("/usertest/trip/T_whatever/") this.jio.get("/devicetest/trip/T_whatever/")
.fail(function (error) { .fail(function (error) {
ok(error instanceof jIO.util.jIOError); ok(error instanceof jIO.util.jIOError);
equal(error.message, "Cannot find document: /usertest/trip/T_whatever/" equal(error.message,
+ ", Error: No valid token for user: usertest"); "Cannot find document: /devicetest/trip/T_whatever/"
+ ", Error: No valid token for device: devicetest");
equal(error.status_code, 404); equal(error.status_code, 404);
}) })
.fail(function (error) { .fail(function (error) {
...@@ -200,24 +207,27 @@ ...@@ -200,24 +207,27 @@
xhr.respond(404, { "Content-Type": "application/json" }, xhr.respond(404, { "Content-Type": "application/json" },
'{"error":"err_unauthorized","detail":"Invalid token."}\n'); '{"error":"err_unauthorized","detail":"Invalid token."}\n');
}); });
url = "https://api.automatic.com/user/me/"; url = "https://api.automatic.com/user/me/device/";
this.server.respondWith("GET", url, [200, { this.server.respondWith("GET", url, [200, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"id": "usertest"}' ]); }, '{"_metadata": {"count": 1, "next": null, "previous": null},' +
'"results": [{"id": "devicetest",' +
'"url": "https://api.automatic.com/user/usertest/' +
'device/devicetest/", "version": 5}]}' ]);
stop(); stop();
expect(1); expect(1);
this.jio.get("/usertest/trip/T_randomtrip/") this.jio.get("/devicetest/trip/T_randomtrip/")
.then(function (result) { .then(function (result) {
deepEqual(result, { deepEqual(result, {
'automatic_path': '/trip/T_randomtrip/', 'automatic_path': '/trip/T_randomtrip/',
'reference': '/usertest/trip/T_randomtrip/', 'reference': '/devicetest/trip/T_randomtrip/',
'id': '/usertest/trip/T_randomtrip/', 'id': '/devicetest/trip/T_randomtrip/',
'type': 'trip', 'type': 'trip',
'start_date': null, 'start_date': null,
'stop_date': null, 'stop_date': null,
'automatic_user': 'usertest' 'automatic_device': 'devicetest'
}, "Check single element type"); }, "Check single element type");
}) })
.fail(function (error) { .fail(function (error) {
...@@ -286,11 +296,14 @@ ...@@ -286,11 +296,14 @@
}); });
test("get inexistent document's attachment", function () { test("get inexistent document's attachment", function () {
var url = "https://api.automatic.com/user/me/"; var url = "https://api.automatic.com/user/me/device/";
this.server.respondWith("GET", url, [200, { this.server.respondWith("GET", url, [200, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"id": "usertest"}' ]); }, '{"_metadata": {"count": 1, "next": null, "previous": null},' +
'"results": [{"id": "devicetest",' +
'"url": "https://api.automatic.com/user/usertest/' +
'device/devicetest/", "version": 5}]}' ]);
url = "https://api.automatic.com/trip/T_inexistent/"; url = "https://api.automatic.com/trip/T_inexistent/";
this.server.respondWith("GET", url, [404, { this.server.respondWith("GET", url, [404, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
...@@ -299,11 +312,11 @@ ...@@ -299,11 +312,11 @@
stop(); stop();
expect(3); expect(3);
this.jio.getAttachment("/usertest/trip/T_inexistent/", 'whatever') this.jio.getAttachment("/devicetest/trip/T_inexistent/", 'whatever')
.fail(function (error) { .fail(function (error) {
ok(error instanceof jIO.util.jIOError); ok(error instanceof jIO.util.jIOError);
equal(error.message, 'Cannot find document:' + equal(error.message, 'Cannot find document:' +
' /usertest/trip/T_inexistent/, Error: ' + ' /devicetest/trip/T_inexistent/, Error: ' +
'{"error": "err_object_not_found"}'); '{"error": "err_object_not_found"}');
equal(error.status_code, 404); equal(error.status_code, 404);
}) })
...@@ -361,20 +374,24 @@ ...@@ -361,20 +374,24 @@
this.server.respondWith("GET", url, [401, { this.server.respondWith("GET", url, [401, {
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"error":"err_unauthorized","detail":"Invalid token."}\n']); }, '{"error":"err_unauthorized","detail":"Invalid token."}\n']);
url = "https://api.automatic.com/user/me/"; url = "https://api.automatic.com/user/me/device/";
this.server.respondWith("GET", url, [200, { this.server.respondWith("GET", url, [200, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"id": "usertest2"}' ]); }, '{"_metadata": {"count": 1, "next": null, "previous": null},' +
'"results": [{"id": "devicetest2",' +
'"url": "https://api.automatic.com/user/usertest/' +
'device/devicetest2/", "version": 5}]}' ]);
stop(); stop();
expect(3); expect(3);
this.jio.getAttachment("/usertest/trip/T_whatever/", 'whatever') this.jio.getAttachment("/devicetest/trip/T_whatever/", 'whatever')
.fail(function (error) { .fail(function (error) {
ok(error instanceof jIO.util.jIOError); ok(error instanceof jIO.util.jIOError);
equal(error.message, "Cannot find document: /usertest/trip/T_whatever/" equal(error.message,
+ ", Error: No valid token for user: usertest"); "Cannot find document: /devicetest/trip/T_whatever/"
+ ", Error: No valid token for device: devicetest");
equal(error.status_code, 404); equal(error.status_code, 404);
}) })
.fail(function (error) { .fail(function (error) {
...@@ -401,15 +418,18 @@ ...@@ -401,15 +418,18 @@
xhr.respond(404, { "Content-Type": "application/json" }, xhr.respond(404, { "Content-Type": "application/json" },
'{"error":"err_unauthorized","detail":"Invalid token."}\n'); '{"error":"err_unauthorized","detail":"Invalid token."}\n');
}); });
url = "https://api.automatic.com/user/me/"; url = "https://api.automatic.com/user/me/device/";
this.server.respondWith("GET", url, [200, { this.server.respondWith("GET", url, [200, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"id": "usertest"}' ]); }, '{"_metadata": {"count": 1, "next": null, "previous": null},' +
'"results": [{"id": "devicetest",' +
'"url": "https://api.automatic.com/user/usertest/' +
'device/devicetest/", "version": 5}]}' ]);
stop(); stop();
expect(1); expect(1);
this.jio.getAttachment("/usertest/trip/T_randomtrip/", 'data', {format: this.jio.getAttachment("/devicetest/trip/T_randomtrip/", 'data', {format:
'text'}).then(function (result) { 'text'}).then(function (result) {
deepEqual(result, '{"id":"T_randomtrip",' + deepEqual(result, '{"id":"T_randomtrip",' +
'"url":"https://api.automatic.com/trip/T_randomtrip/"}', '"url":"https://api.automatic.com/trip/T_randomtrip/"}',
...@@ -439,7 +459,7 @@ ...@@ -439,7 +459,7 @@
stop(); stop();
expect(1); expect(1);
this.jio.allAttachments('/usertest/trip/T_trip/').then(function (result) { this.jio.allAttachments('/devicetest/trip/T_trip/').then(function (result) {
deepEqual(result, {data: null}); deepEqual(result, {data: null});
}).fail(function (error) { }).fail(function (error) {
ok(false, error); ok(false, error);
...@@ -489,11 +509,14 @@ ...@@ -489,11 +509,14 @@
'{"_metadata":{"count":0,"next":null,"previous":null},' + '{"_metadata":{"count":0,"next":null,"previous":null},' +
'"results":[]}'); '"results":[]}');
}); });
url = "https://api.automatic.com/user/me/"; url = "https://api.automatic.com/user/me/device/";
this.server.respondWith("GET", url, [200, { this.server.respondWith("GET", url, [200, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"id": "0"}' ]); }, '{"_metadata": {"count": 1, "next": null, "previous": null},' +
'"results": [{"id": "0",' +
'"url": "https://api.automatic.com/user/usertest/' +
'device/0/", "version": 5}]}' ]);
stop(); stop();
expect(4); expect(4);
...@@ -520,7 +543,7 @@ ...@@ -520,7 +543,7 @@
'type': 'trip', 'type': 'trip',
'start_date': "2017-06-17T16:45:41Z", 'start_date': "2017-06-17T16:45:41Z",
'stop_date': "2017-06-17T16:46:38Z", 'stop_date': "2017-06-17T16:46:38Z",
'automatic_user': '0' 'automatic_device': '0'
}], "Check trip is returned in result"); }], "Check trip is returned in result");
}) })
.fail(function (error) { .fail(function (error) {
...@@ -558,7 +581,7 @@ ...@@ -558,7 +581,7 @@
'type': 'trip', 'type': 'trip',
'start_date': "2017-06-17T16:45:41Z", 'start_date': "2017-06-17T16:45:41Z",
'stop_date': "2017-06-17T16:46:38Z", 'stop_date': "2017-06-17T16:46:38Z",
'automatic_user': '0' 'automatic_device': '0'
}], "Check trip is returned in result"); }], "Check trip is returned in result");
}) })
.fail(function (error) { .fail(function (error) {
...@@ -590,11 +613,14 @@ ...@@ -590,11 +613,14 @@
'{"_metadata":{"count":0,"next":null,"previous":null},' + '{"_metadata":{"count":0,"next":null,"previous":null},' +
'"results":[]}'); '"results":[]}');
}); });
url = "https://api.automatic.com/user/me/"; url = "https://api.automatic.com/user/me/device/";
this.server.respondWith("GET", url, [200, { this.server.respondWith("GET", url, [200, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"id": "0"}' ]); }, '{"_metadata": {"count": 1, "next": null, "previous": null},' +
'"results": [{"id": "0",' +
'"url": "https://api.automatic.com/user/usertest/' +
'device/0/", "version": 5}]}' ]);
stop(); stop();
expect(1); expect(1);
...@@ -609,7 +635,7 @@ ...@@ -609,7 +635,7 @@
'type': 'vehicle', 'type': 'vehicle',
'start_date': null, 'start_date': null,
'stop_date': null, 'stop_date': null,
'automatic_user': '0' 'automatic_device': '0'
}], "Check vehicle list is returned"); }], "Check vehicle list is returned");
}) })
.fail(function (error) { .fail(function (error) {
...@@ -638,7 +664,7 @@ ...@@ -638,7 +664,7 @@
'{"_metadata":{"count":0,"next":null,"previous":null},' + '{"_metadata":{"count":0,"next":null,"previous":null},' +
'"results":[]}'); '"results":[]}');
}); });
url = "https://api.automatic.com/user/me/"; url = "https://api.automatic.com/user/me/device/";
this.server.respondWith("GET", url, [404, { this.server.respondWith("GET", url, [404, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
"Content-Type": "application/json" "Content-Type": "application/json"
...@@ -679,11 +705,14 @@ ...@@ -679,11 +705,14 @@
'{"_metadata":{"count":0,"next":null,"previous":null},' + '{"_metadata":{"count":0,"next":null,"previous":null},' +
'"results":[]}'); '"results":[]}');
}); });
url = "https://api.automatic.com/user/me/"; url = "https://api.automatic.com/user/me/device/";
this.server.respondWith("GET", url, [200, { this.server.respondWith("GET", url, [200, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
"Content-Type": "application/json" "Content-Type": "application/json"
}, '{"id": "0"}' ]); }, '{"_metadata": {"count": 1, "next": null, "previous": null},' +
'"results": [{"id": "0",' +
'"url": "https://api.automatic.com/user/usertest/' +
'device/0/", "version": 5}]}' ]);
url = "https://api.automatic.com/specific/nexturl/"; url = "https://api.automatic.com/specific/nexturl/";
this.server.respondWith("GET", url, [200, { this.server.respondWith("GET", url, [200, {
"Content-Encoding": "gzip", "Content-Encoding": "gzip",
...@@ -705,7 +734,7 @@ ...@@ -705,7 +734,7 @@
'type': 'vehicle', 'type': 'vehicle',
'start_date': null, 'start_date': null,
'stop_date': null, 'stop_date': null,
'automatic_user': '0' 'automatic_device': '0'
}, { }, {
'automatic_path': '/vehicle/V_example2/', 'automatic_path': '/vehicle/V_example2/',
'reference': '/0/vehicle/V_example2/', 'reference': '/0/vehicle/V_example2/',
...@@ -713,7 +742,7 @@ ...@@ -713,7 +742,7 @@
'type': 'vehicle', 'type': 'vehicle',
'start_date': null, 'start_date': null,
'stop_date': null, 'stop_date': null,
'automatic_user': '0' 'automatic_device': '0'
}], "Check vehicle list is returned"); }], "Check vehicle list is returned");
}) })
.fail(function (error) { .fail(function (error) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment