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

80 lines (63 loc) 2.92 kB
var assert = require('assert') , config = require('../config') , fixtures = require('../fixtures') , nitrogen = require('../../lib'); describe('message', function() { it('should send a message and receive it over a subscription', function(done) { var service = new nitrogen.Service(config); var subscriptionPassed = false; var restPassed = false; service.connect(fixtures.models.camera, function(err, session) { assert.equal(err, null); var message = new nitrogen.Message({ type: 'image', body: { url: 'http://localhost:3030/blobs/237849732497982' } }); var subId = session.onMessage(function(message) { if (message.body.url !== 'http://localhost:3030/blobs/237849732497982') return; subscriptionPassed = true; session.disconnectSubscription(subId); if (subscriptionPassed && restPassed) done(); }); setTimeout(function() { message.send(session, function(err, messages) { assert.equal(err, null); messages.forEach(function(message) { assert.equal(message.body.url, 'http://localhost:3030/blobs/237849732497982'); assert.notEqual(message.id, undefined); assert.equal(message.type, 'image'); assert.notEqual(message.ts, undefined); assert.equal(typeof message.ts, 'object'); // this should fail since session is not admin. just test making the request successfully // since service itself has tests to cover functionality. message.remove(session, function(err) { assert.equal(!err, false); restPassed = true; if (subscriptionPassed && restPassed) done(); }); }); }); }, 200); }); }); it('has a default constructor', function(done) { var service = new nitrogen.Service(config); service.connect(fixtures.models.camera, function(err, session) { var message = new nitrogen.Message(); assert.notEqual(message.ts, null); done(); }); }); it('find with no query returns all messages', function(done) { var service = new nitrogen.Service(config); service.connect(fixtures.models.camera, function(err, session) { nitrogen.Message.find(session, {}, { skip: 0, sort: { ts: 1 } }, function(err, messages) { assert(!err); assert.equal(messages.length > 0, true); done(); }); }); }); });