UNPKG

nitrogen

Version:

Nitrogen is a platform for building connected devices. Nitrogen provides the authentication, authorization, and real time message passing framework so that you can focus on your device and application. All with a consistent development platform that lev

93 lines (72 loc) 2.76 kB
var assert = require('assert') , config = require('../config') , fixtures = require('../fixtures') , nitrogen = require('../../lib'); describe('service object', function() { var service = new nitrogen.Service(config); it('should be able to connect device', function(done) { service.connect(fixtures.models.camera, function(err, session, camera) { assert(!err); assert(session); session.log.info("i can successfully log too"); done(); }); }); it('should be able to authenticate user', function(done) { service.authenticate(fixtures.models.user, function(err, session, user) { assert(!err); assert(session); assert(user); done(); }); }); it('camera should be able to impersonate itself', function(done) { service.connect(fixtures.models.camera, function(err, session, camera) { assert(!err); assert(session); session.impersonate(camera.id, function(err, impersonationSession) { assert(!err); assert(impersonationSession); done(); }); }); }); it('thermometer should be not be able to impersonate the camera', function(done) { var thermometer = new nitrogen.Device({ nickname: "thermometer", api_key: fixtures.models.userApiKey.key }); service.connect(thermometer, function(err, session, thermometer) { assert(!err); assert(session); session.impersonate(fixtures.models.camera.id, function(err, impersonationSession) { assert.equal(err.statusCode, 403); assert(err.message); done(); }); }); }); it('should be able to resume device session with valid accessToken', function(done) { var thermometer = new nitrogen.Device({ nickname: "thermometer2", api_key: fixtures.models.userApiKey.key }); service.connect(thermometer, function(err, session, thermometer) { assert(!err); assert(session); var resumedThermometer = new nitrogen.Principal({ accessToken: { token: session.accessToken.token }, id: thermometer.id, nickname: thermometer.nickname }); service.resume(resumedThermometer, function(err, resumedSession) { assert(!err); assert(resumedSession); assert.equal(resumedSession.principal.id, thermometer.id); done(); }); }); }); });