UNPKG

mojio-js-sdk

Version:

Mojio javascript REST client.

318 lines (309 loc) 12.4 kB
// 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