mojio-js-sdk
Version:
Mojio javascript REST client.
164 lines (155 loc) • 5.4 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var MojioPushSDK, MojioSDK, async, nock, should;
MojioSDK = require('../../src/nodejs/sdk/MojioSDK');
MojioPushSDK = require('../../src/nodejs/sdk/MojioPushSDK');
should = require('should');
async = require('async');
nock = require('nock');
describe('Node Mojio Fluent Push SDK', function() {
var authorization, call, callback_url, changeVehicle, execute, mojio, sdk, setupNock, testErrorResult, timeout, user, vehicle;
user = null;
mojio = null;
vehicle = null;
call = null;
timeout = 50;
callback_url = "http://localhost:3000/callback";
authorization = {
client_id: 'id',
client_secret: 'secret',
redirect_uri: 'http://localhost:3000/callback',
username: 'testing',
password: 'Test123!',
scope: 'full',
grant_type: 'password'
};
sdk = new MojioSDK({
sdk: MojioPushSDK,
client_id: 'id',
client_secret: 'secret',
test: true
});
setupNock = function() {
if ((process.env.FUNCTIONAL_TESTS != null)) {
timeout = 3000;
return {
done: function() {}
};
} else {
call = nock('https://accounts.moj.io').post("/oauth2/token", authorization).reply(function(uri, requestBody, cb) {
return cb(null, [
200, {
id: 1
}
]);
});
return call;
}
};
testErrorResult = function(error, result) {
(error === null).should.be["true"];
return (result !== null).should.be["true"];
};
changeVehicle = function(vehicle, cb) {
return sdk.vehicle(vehicle).update(function(error, result) {
if (error != null) {
cb("Error: Vehicle could not be saved", null);
}
if (result != null) {
return console.log("vehicle changed:" + result);
}
});
};
execute = function(test, done) {
return async.series([
function(cb) {
setupNock();
return sdk.token(authorization.redirect_uri).credentials(authorization.username, authorization.password).scope(['full']).callback(function(error, result) {
var token;
if (error) {
console.log('Access Token Error', JSON.stringify(error.content) + " message:" + error.statusMessage + " url:" + sdk.url());
} else {
token = result;
console.log("Token:" + JSON.stringify(token));
}
return cb(error, result);
});
}, function(cb) {
console.log("Mock User");
return sdk.mock().user({}).callback(function(error, result) {
user = result;
return cb(error, result);
});
}, function(cb) {
console.log("Mock Mojio");
return sdk.mojio({
UserId: user.id,
Imei: "9991234567891234"
}).mock(function(error, result) {
mojio = result;
return cb(error, result);
});
}, function(cb) {
console.log("Mock Vehicle");
return sdk.mock().vehicle({
MojioId: mojio.id,
UserId: user.id,
Speed: 80
}, (function(error, result) {
vehicle = 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"];
return done();
});
};
beforeEach(function() {
user = null;
mojio = null;
return vehicle = null;
});
it('can create an observer of vehicles with minimum defaults', function(done) {
this.timeout(2000);
return execute(function(cb) {
console.log("Start observer test");
return sdk.observe({
key: "UnitTestVehicleDefault"
}).vehicles().callback(function(error, result) {
testErrorResult(error, result);
if (typeof result === 'boolean') {
console.log("Change Vehicle");
return changeVehicle(vehicle, cb);
} else if (++callbackTimes === 2 || result instanceof 'object') {
return cb(null, result);
}
});
}, done);
});
return it('can create a complex observer of vehicles', function(done) {
this.timeout(2000);
return execute(function(cb) {
return sdk.observe({
key: "AccidentStateOnVehicleForMojio"
}).vehicles().fields(["VIN", "AccidentState", "Battery", "Location", "Heading", "Altitude", "Speed", "Accelerometer", "LastContactTime", "GatewayTimeStamp", "FuelLevel"]).where("Battery > min or Battery < max and MojioId == [mojio id]").throttle("1 second").throttle("5 samples").debounce("3 samples").debounce("3 seconds").timing(['edge', 'high']).transport({
Type: "SignalR",
Callback: function(error, result) {
testErrorResult(error, result);
return done();
}
}).callback(function(error, result) {
testErrorResult(error, result);
return changeVehicle(vehicle, cb);
});
}, done);
});
});
}).call(this);
//# sourceMappingURL=NodePushSDK_test.js.map