raspberryGPIOhtmlserver/node_modules/ws/test/Sender.hixie.test.js
node_modules/ws/test/Sender.hixie.test.jsRaw
1var assert = require('assert')
2 , Sender = require('../lib/Sender.hixie');
3require('should');
4require('./hybi-common');
5
6describe('Sender', function() {
7 describe('#send', function() {
8 it('frames and sends a text message', function(done) {
9 var message = 'Hello world';
10 var received;
11 var socket = {
12 write: function(data, encoding, cb) {
13 received = data;
14 process.nextTick(cb);
15 }
16 };
17 var sender = new Sender(socket, {});
18 sender.send(message, {}, function() {
19 received.toString('utf8').should.eql('\u0000' + message + '\ufffd');
20 done();
21 });
22 });
23
24 it('frames and sends an empty message', function(done) {
25 var socket = {
26 write: function(data, encoding, cb) {
27 done();
28 }
29 };
30 var sender = new Sender(socket, {});
31 sender.send('', {}, function() {});
32 });
33
34 it('frames and sends a buffer', function(done) {
35 var received;
36 var socket = {
37 write: function(data, encoding, cb) {
38 received = data;
39 process.nextTick(cb);
40 }
41 };
42 var sender = new Sender(socket, {});
43 sender.send(new Buffer('foobar'), {}, function() {
44 received.toString('utf8').should.eql('\u0000foobar\ufffd');
45 done();
46 });
47 });
48
49 it('frames and sends a binary message', function(done) {
50 var message = 'Hello world';
51 var received;
52 var socket = {
53 write: function(data, encoding, cb) {
54 received = data;
55 process.nextTick(cb);
56 }
57 };
58 var sender = new Sender(socket, {});
59 sender.send(message, {binary: true}, function() {
60 received.toString('hex').should.eql(
61 // 0x80 0x0b H e l l o <sp> w o r l d
62 '800b48656c6c6f20776f726c64');
63 done();
64 });
65 });
66/*
67 it('throws an exception for binary data', function(done) {
68 var socket = {
69 write: function(data, encoding, cb) {
70 process.nextTick(cb);
71 }
72 };
73 var sender = new Sender(socket, {});
74 sender.on('error', function() {
75 done();
76 });
77 sender.send(new Buffer(100), {binary: true}, function() {});
78 });
79*/
80 it('can fauxe stream data', function(done) {
81 var received = [];
82 var socket = {
83 write: function(data, encoding, cb) {
84 received.push(data);
85 process.nextTick(cb);
86 }
87 };
88 var sender = new Sender(socket, {});
89 sender.send(new Buffer('foobar'), { fin: false }, function() {});
90 sender.send('bazbar', { fin: false }, function() {});
91 sender.send(new Buffer('end'), { fin: true }, function() {
92 received[0].toString('utf8').should.eql('\u0000foobar');
93 received[1].toString('utf8').should.eql('bazbar');
94 received[2].toString('utf8').should.eql('end\ufffd');
95 done();
96 });
97 });
98 });
99
100 describe('#close', function() {
101 it('sends a hixie close frame', function(done) {
102 var received;
103 var socket = {
104 write: function(data, encoding, cb) {
105 received = data;
106 process.nextTick(cb);
107 }
108 };
109 var sender = new Sender(socket, {});
110 sender.close(null, null, null, function() {
111 received.toString('utf8').should.eql('\ufffd\u0000');
112 done();
113 });
114 });
115
116 it('sends a message end marker if fauxe streaming has started, before hixie close frame', function(done) {
117 var received = [];
118 var socket = {
119 write: function(data, encoding, cb) {
120 received.push(data);
121 if (cb) process.nextTick(cb);
122 }
123 };
124 var sender = new Sender(socket, {});
125 sender.send(new Buffer('foobar'), { fin: false }, function() {});
126 sender.close(null, null, null, function() {
127 received[0].toString('utf8').should.eql('\u0000foobar');
128 received[1].toString('utf8').should.eql('\ufffd');
129 received[2].toString('utf8').should.eql('\ufffd\u0000');
130 done();
131 });
132 });
133 });
134});