UNPKG

3.9 kBJavaScriptView Raw
1var EventStreamParser = require('zetta-events-stream-protocol').Parser;
2var assert = require('assert');
3
4describe('Event Stream Parser', function() {
5 it('validates subscribe messages correctly', function() {
6 var message = { type: 'subscribe', topic: 'Detroit/led/1234/state' };
7 var parser = new EventStreamParser();
8 assert(parser.validate(message) === true);
9 });
10
11 it('invalidates subscribe messages correctly', function() {
12 var message = { type: 'subscribe'};
13 var parser = new EventStreamParser();
14 assert(parser.validate(message) !== true);
15 });
16
17 it('validates unsubscribe messages correctly', function() {
18 var message = { type: 'unsubscribe', subscriptionId: 1 };
19 var parser = new EventStreamParser();
20 assert(parser.validate(message) === true);
21 });
22
23 it('invalidates unsubscribe messages correctly', function() {
24 var message = { type: 'unsubscribe' };
25 var parser = new EventStreamParser();
26 assert(parser.validate(message) !== true);
27 });
28
29 it('validates unsubscribe-ack messages correctly', function() {
30 var message = { type: 'unsubscribe-ack', subscriptionId: 1, timestamp: 1 };
31 var parser = new EventStreamParser();
32 assert(parser.validate(message) === true);
33 });
34
35 it('invalidates unsubscribe-ack messages correctly no subscriptionId', function() {
36 var message = { type: 'unsubscribe-ack', timestamp: 1 };
37 var parser = new EventStreamParser();
38 assert(parser.validate(message) !== true);
39 });
40
41 it('invalidates unsubscribe-ack messages correctly no timestamp no subscriptionId', function() {
42 var message = { type: 'unsubscribe-ack' };
43 var parser = new EventStreamParser();
44 assert(parser.validate(message) !== true);
45 });
46
47 it('invalidates unsubscribe-ack messages correctly no timestamp', function() {
48 var message = { type: 'unsubscribe-ack', timestamp: 1 };
49 var parser = new EventStreamParser();
50 assert(parser.validate(message) !== true);
51 });
52
53 it('validates subscribe-ack messages correctly', function() {
54 var message = { type: 'unsubscribe-ack', timestamp: 1, topic: 'Detroit/led/1234/state', subscriptionId: 1};
55 var parser = new EventStreamParser();
56 assert(parser.validate(message) === true);
57 });
58
59 it('validates error messages correctly', function() {
60 var message = { type: 'error', code: 1, timestamp: 1, topic: 'Detroit/led/1234/state' };
61 var parser = new EventStreamParser();
62 assert(parser.validate(message) === true);
63 });
64
65 it('validates event messages correctly', function() {
66 var message = { type: 'event', timestamp: 1, topic: 'Detroit/led/1234/state', subscriptionId: 1 };
67 var parser = new EventStreamParser();
68 assert(parser.validate(message) === true);
69 });
70
71 it('should emit event for message type when parsing buffer', function(done) {
72 var parser = new EventStreamParser();
73 var message = { type: 'event', timestamp: 1, topic: 'Detroit/led/1234/state', subscriptionId: 1 };
74 parser.on('event', function(msg) {
75 assert.equal(msg.type, message.type);
76 assert.equal(msg.timestamp, message.timestamp);
77 assert.equal(msg.topic, message.topic);
78 assert.equal(msg.subscriptionId, message.subscriptionId);
79 done();
80 });
81
82 parser.add(new Buffer(JSON.stringify(message)));
83 })
84
85 it('should emit error for invalid message type when parsing buffer', function(done) {
86 var parser = new EventStreamParser();
87 var message = { type: 'not-a-message', timestamp: 1, topic: 'Detroit/led/1234/state', subscriptionId: 1 };
88 parser.on('error', function(msg) {
89 done();
90 });
91
92 parser.add(new Buffer(JSON.stringify(message)));
93 })
94
95 it('should emit error for invalid JSON when parsing buffer', function(done) {
96 var parser = new EventStreamParser();
97 parser.on('error', function(msg) {
98 done();
99 });
100
101 parser.add(new Buffer('some text'));
102 })
103
104});