mojio-js-sdk
Version:
Mojio javascript REST client.
318 lines (309 loc) • 12.4 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var MojioRestSDK, MojioSDK, async, nock, should;
MojioSDK = require('../../src/nodejs/sdk/MojioSDK');
MojioRestSDK = require('../../src/nodejs/sdk/MojioRestSDK');
should = require('should');
async = require('async');
nock = require('nock');
describe('Node Mojio Fluent Rest SDK GET calls', function() {
var authorization, call, callback_url, client_id, client_secret, mojio, options, testAccountsURL, testApiURL, timeout, user, vehicle;
user = null;
mojio = null;
vehicle = null;
client_id = 'cacc0d94-b6b4-4da7-9983-3991de197038';
client_secret = '427d5794-5021-4274-a6e8-a38d5d83bf99';
call = null;
timeout = 50;
callback_url = "http://localhost:3000/callback";
authorization = {
client_id: client_id,
client_secret: client_secret,
redirect_uri: 'http://localhost:3000/callback',
username: 'testing',
password: 'Test123!',
scope: 'full',
grant_type: 'password'
};
options = {
sdk: MojioRestSDK,
environment: 'staging',
accountsURL: 'accounts.moj.io',
apiURL: 'api.moj.io',
pushURL: 'push.moj.io',
client_id: authorization.client_id,
client_secret: authorization.client_secret
};
if (options.environment !== '') {
testAccountsURL = 'https://' + options.environment + '-' + options.accountsURL;
testApiURL = 'https://' + options.environment + '-' + options.apiURL;
} else {
testAccountsURL = 'https://' + options.accountsURL;
testApiURL = 'https://' + options.apiURL;
}
beforeEach(function() {
user = null;
mojio = null;
return vehicle = null;
});
return it('can GET a resource or list of resources, secondary resource, or history by ids or no query', function(testComplete) {
var calls, docall, entities, entities2, entity, execute, i, j, k, l, len, len1, len2, len3, len4, m, n, sdk, secondaries, secondaries2, secondaryEntity, setupAuthorizeNock, setupNock, setupTokenNock, tertiary2, tertiaryEntity, testErrorResult;
setupTokenNock = function() {
if (process.env.FUNCTIONAL_TESTS === 'true') {
timeout = 3000;
return {
done: function() {}
};
} else {
call = nock(testAccountsURL).post("/oauth2/token", authorization).reply(function(uri, requestBody, cb) {
cb(null, [
200, {
id: 4,
access_token: "token"
}
]);
});
return call;
}
};
setupAuthorizeNock = function() {
if (process.env.FUNCTIONAL_TESTS === 'true') {
timeout = 3000;
return {
done: function() {}
};
} else {
call = nock(testAccountsURL).post("/oauth2/token", authorization).reply(function(uri, requestBody, cb) {
cb(null, [
200, {
id: 2,
access_token: "token"
}
]);
});
return call;
}
};
setupNock = function(api, verb, version, primary_, pid_, secondary_, sid_, _tertiary, tid_) {
var pathFilter, test;
if (process.env.FUNCTIONAL_TESTS === 'true') {
timeout = 3000;
return {
done: function() {}
};
} else {
test = {
pid: pid_,
sid: sid_,
tid: tid_,
secondary: secondary_,
primary: primary_,
tertiary: _tertiary
};
pathFilter = function(path) {
var idRegex, parts, valid, versionValid;
parts = path.split('/');
idRegex = /\b[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12}\b/;
parts = parts.slice(1, parts.length);
versionValid = parts[0] === version;
parts = parts.slice(1, parts.length);
if (parts.length === 1) {
valid = parts[0] === test.primary;
} else if (parts.length === 2) {
valid = parts[0] === test.primary && (parts[1].match(idRegex) || parts[1] === "" + test.pid);
} else if (parts.length === 3) {
valid = parts[0] === test.primary && (parts[1].match(idRegex) || parts[1] === "" + test.pid) && parts[2] === test.secondary;
} else if (parts.length === 4 && (test.sid != null)) {
valid = parts[0] === test.primary && (parts[1].match(idRegex) || parts[1] === "" + test.pid) && parts[2] === test.secondary && (parts[3].match(idRegex) || parts[3] === "" + test.sid);
} else if (parts.length === 4 && (test.sid == null)) {
valid = parts[0] === test.primary && (parts[1].match(idRegex) || parts[1] === "" + test.pid) && parts[2] === test.secondary && parts[3] === test.tertiary;
} else if (parts.length === 5) {
valid = parts[0] === test.primary && (parts[1].match(idRegex) || parts[1] === "" + test.pid) && parts[2] === test.secondary && (parts[3].match(idRegex) || parts[3] === "" + test.sid) && parts[4] === test.tertiary;
} else if (parts.length === 6) {
valid = parts[0] === test.primary && (parts[1].match(idRegex) || parts[1] === "" + test.pid) && parts[2] === test.secondary && (parts[3].match(idRegex) || parts[3] === "" + test.sid) && parts[4] === test.tertiary && (parts[5].match(idRegex) || parts[5] === "" + test.tid);
}
if (valid && versionValid) {
return '/true';
} else {
return '/false';
}
};
nock.removeInterceptor({
hostname: api
});
call = nock(api).filteringPath(pathFilter)[verb]('/true').reply(function(uri, requestBody, cb) {
cb(null, [
200, {
id: 3,
message: "hi"
}
]);
});
return call;
}
};
testErrorResult = function(error, result) {
if (error != null) {
console.log("ERROR: " + error.statusMessage + " content:" + error.content);
}
(error === null).should.be["true"];
return (result !== null).should.be["true"];
};
sdk = new MojioSDK(options);
execute = function(test, doneOne) {
return async.series([
function(cb) {
setupAuthorizeNock();
return sdk.token(authorization.redirect_uri).credentials(authorization.username, authorization.password).scope(['full']).callback(function(error, result) {
if (error) {
console.log('Access Token Error' + " url:" + sdk.url());
return cb(error, result);
} else {
setupTokenNock();
return sdk.token().parse(result).callback(function(error, result) {
var token;
token = result;
return cb(error, result);
});
}
});
}, function(cb) {
return test(cb);
}
], function(error, results) {
if (error != null) {
console.log(error);
}
(error === null).should.be["true"];
(results !== null).should.be["true"];
doneOne();
});
};
docall = function(item, finishedOne) {
execute(function(cb) {
if ((item.tertiary != null)) {
setupNock(testApiURL, 'get', 'v2', item.primary, item.pid, item.secondary, null, item.tertiary, null);
return sdk.get()[item.primary](item.pid)[item.secondary]()[item.tertiary]().callback(function(error, result) {
testErrorResult(error, result);
return cb(null, result);
});
} else if ((item.secondary != null)) {
if (item.sid != null) {
setupNock(testApiURL, 'get', 'v2', item.primary, item.pid, item.secondary, item.sid, null, null);
return sdk.get()[item.primary](item.pid)[item.secondary](item.sid).callback(function(error, result) {
testErrorResult(error, result);
return cb(null, result);
});
} else if (item.pid != null) {
setupNock(testApiURL, 'get', 'v2', item.primary, item.pid, item.secondary, null, null, null);
return sdk.get()[item.primary](item.pid)[item.secondary]().callback(function(error, result) {
testErrorResult(error, result);
return cb(null, result);
});
}
} else {
if (item.pid != null) {
setupNock(testApiURL, 'get', 'v2', item.primary, item.pid, null, null, null, null);
return sdk.get()[item.primary](item.pid).callback(function(error, result) {
testErrorResult(error, result);
return cb(null, result);
});
} else {
if (item.primary === 'me') {
setupNock(testApiURL, 'get', 'v2', item.primary, null, null, null, null, null);
sdk.me().callback(function(error, result) {
testErrorResult(error, result);
return cb(null, result);
});
} else {
setupNock(testApiURL, 'get', 'v2', item.primary, null, null, null, null, null);
return sdk.get()[item.primary]().callback(function(error, result) {
testErrorResult(error, result);
return cb(null, result);
});
}
}
}
}, finishedOne);
};
calls = [];
calls.push(function(callback) {
return docall({
primary: 'me'
}, function(error, result) {
console.log("me: done" + result);
return callback(error, result);
});
});
entities = ['Vehicles', 'Mojios', 'Users', 'Apps', 'Groups', 'Trips'];
secondaries = ['Tags', 'Permissions'];
i = 1;
for (j = 0, len = entities.length; j < len; j++) {
entity = entities[j];
calls.push(function(callback) {
return docall({
primary: entity
}, function(error, result) {
console.log("" + entity + ": done" + result);
return callback(error, result);
});
});
calls.push(function(callback) {
return docall({
primary: entity,
pid: i++
}, function(error, result) {
console.log("" + entity + "/" + ": done" + result);
return callback(error, result);
});
});
for (k = 0, len1 = secondaries.length; k < len1; k++) {
secondaryEntity = secondaries[k];
calls.push(function(callback) {
return docall({
primary: entity,
pid: i++,
secondary: secondaryEntity
}, function(error, result) {
console.log("" + entity + "/" + ": done" + result);
return callback(error, result);
});
});
}
}
entities2 = ['Vehicles', 'Trips'];
secondaries2 = ['History'];
tertiary2 = ['States', 'Locations'];
for (l = 0, len2 = entities2.length; l < len2; l++) {
entity = entities2[l];
for (m = 0, len3 = secondaries2.length; m < len3; m++) {
secondaryEntity = secondaries2[m];
for (n = 0, len4 = tertiary2.length; n < len4; n++) {
tertiaryEntity = tertiary2[n];
calls.push(function(callback) {
return docall({
primary: entity,
pid: i++,
secondary: secondaryEntity,
sid: null,
tertiary: tertiaryEntity,
tid: null
}, function(error, result) {
console.log("" + entity + "/" + ": done" + result);
return callback(error, result);
});
});
}
}
}
return async.series(calls, function(error, result) {
if (error != null) {
console.log(error);
}
(error === null).should.be["true"];
testComplete();
});
});
});
}).call(this);
//# sourceMappingURL=NodeRestSDK_GET_test.js.map