1 | var EventStreamParser = require('zetta-events-stream-protocol').Parser;
|
2 | var assert = require('assert');
|
3 |
|
4 | describe('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 | });
|