UNPKG

brokowski

Version:

RESTful publish/subscribe toolkit including broker, publisher and subscriber

229 lines (189 loc) 6.34 kB
var assert = require('assert') , should = require('should') , http = require('http') , jsonBody = require('body/json') , connect = require('connect') , request = require('request') , Sub = require('../lib/subscriber.js'); describe('[testSubscriber.js] Subscriber', function() { it('should fail when no name provided', function(done) { try { var subscriber = new Sub({ port: 6000, broker: 'http://127.0.0.1:5999' }) } catch(e) { done(); } }); it('should fail when no name provided', function(done) { try { var subscriber = new Sub({ port: 6000, name: 'myservice' }) } catch(e) { done(); } }); it('should subscribe at broker', function(done) { var broker = connect().use(function(req, res) { req.url.should.equal('/subscribe/myevent'); done(); }); http.createServer(broker).listen(5999); var subscriber = new Sub({ port: 6000, name: 'myservice', broker: 'http://127.0.0.1:5999' }).start() subscriber.subscribe({ event: 'myevent', method: 'GET' }); }); it('should subscribe to GET event', function(done) { var broker = connect().use(function(req, res) { jsonBody(req, res, function(err, body) { assert.equal(body.method, 'GET'); assert.ok(req.url.indexOf('resubscribe') != -1); done(); }); }); http.createServer(broker).listen(6001); var subscriber = new Sub({ port: 6002, name: 'myservice', broker: 'http://127.0.0.1:6001' }).start() subscriber.get('myevent', function() { /*empty handler*/ }); }); it('should subscribe to POST event', function(done) { var broker = connect().use(function(req, res) { jsonBody(req, res, function(err, body) { assert.equal(body.method, 'POST'); assert.ok(req.url.indexOf('resubscribe') != -1); done(); }); }); http.createServer(broker).listen(6003); var subscriber = new Sub({ port: 6004, name: 'myservice', broker: 'http://127.0.0.1:6003' }).start() subscriber.post('myevent', function() { /*empty handler*/ }); }); it('should subscribe to PUT event', function(done) { var broker = connect().use(function(req, res) { jsonBody(req, res, function(err, body) { assert.equal(body.method, 'PUT'); assert.ok(req.url.indexOf('resubscribe') != -1); done(); }); }); http.createServer(broker).listen(6005); var subscriber = new Sub({ port: 6006, name: 'myservice', broker: 'http://127.0.0.1:6005' }).start() subscriber.put('myevent', function() { /*empty handler*/ }); }); it('should subscribe to DELETE event', function(done) { var broker = connect().use(function(req, res) { jsonBody(req, res, function(err, body) { assert.equal(body.method, 'DELETE'); assert.ok(req.url.indexOf('resubscribe') != -1); done(); }); }); http.createServer(broker).listen(6007); var subscriber = new Sub({ port: 6008, name: 'myservice', broker: 'http://127.0.0.1:6007' }).start() subscriber.delete('myevent', function() { /*empty handler*/ }); }); it('should handle GET event and response 200', function(done) { var broker = connect().use(function(req, res) {}); http.createServer(broker).listen(6009); var subscriber = new Sub({ port: 6010, name: 'myservice', broker: 'http://127.0.0.1:6009' }).start() subscriber.get('myevent', function(data) { assert.ok(data.stuff); done(); }); request.get({url: 'http://127.0.0.1:6010/myservice/myevent', json: {stuff: true}}, function (err, res, body) { assert.equal(res.statusCode, 200); }); }); it('should handle POST event and response 200', function(done) { var broker = connect().use(function(req, res) {}); http.createServer(broker).listen(6011); var subscriber = new Sub({ port: 6012, name: 'myservice', broker: 'http://127.0.0.1:6011' }).start() subscriber.post('myevent', function(data) { assert.ok(data.stuff); done(); }); request.post({url: 'http://127.0.0.1:6012/myservice/myevent', json: {stuff: true}}, function (err, res, body) { assert.equal(res.statusCode, 200); }); }); it('should handle PUT event and response 200', function(done) { var broker = connect().use(function(req, res) {}); http.createServer(broker).listen(6013); var subscriber = new Sub({ port: 6014, name: 'myservice', broker: 'http://127.0.0.1:6013' }).start() subscriber.put('myevent', function(data) { assert.ok(data.stuff); done(); }); request.put({url: 'http://127.0.0.1:6014/myservice/myevent', json: {stuff: true}}, function (err, res, body) { assert.equal(res.statusCode, 200); }); }); it('should handle DELETE event and response 200', function(done) { http.createServer(connect().use(function(req, res) {})).listen(6015); var subscriber = new Sub({ port: 6016, name: 'myservice', broker: 'http://127.0.0.1:6015' }).start() subscriber.delete('myevent', function(data) { assert.ok(data.stuff); done(); }); request.del({url: 'http://127.0.0.1:6016/myservice/myevent', json: {stuff: true}}, function (err, res, body) { assert.equal(res.statusCode, 200); }); }); it('should subscribe with default options', function(done) { var broker = connect().use(function(req, res) { jsonBody(req, res, function(err, body) { assert.equal(body.hostname, 'localhost'); assert.equal(body.port, 6018); assert.equal(body.path, '/myservice/myevent'); done(); }); }); http.createServer(broker).listen(6017); var subscriber = new Sub({ port: 6018, name: 'myservice', broker: 'http://127.0.0.1:6017' }).start() subscriber.delete('myevent', function() { /*empty handler*/ }); }); });