summaryrefslogtreecommitdiff
path: root/node_modules/ws/test/Sender.hixie.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/ws/test/Sender.hixie.test.js')
-rw-r--r--node_modules/ws/test/Sender.hixie.test.js134
1 files changed, 134 insertions, 0 deletions
diff --git a/node_modules/ws/test/Sender.hixie.test.js b/node_modules/ws/test/Sender.hixie.test.js
new file mode 100644
index 0000000..783f892
--- /dev/null
+++ b/node_modules/ws/test/Sender.hixie.test.js
@@ -0,0 +1,134 @@
+var assert = require('assert')
+ , Sender = require('../lib/Sender.hixie');
+require('should');
+require('./hybi-common');
+
+describe('Sender', function() {
+ describe('#send', function() {
+ it('frames and sends a text message', function(done) {
+ var message = 'Hello world';
+ var received;
+ var socket = {
+ write: function(data, encoding, cb) {
+ received = data;
+ process.nextTick(cb);
+ }
+ };
+ var sender = new Sender(socket, {});
+ sender.send(message, {}, function() {
+ received.toString('utf8').should.eql('\u0000' + message + '\ufffd');
+ done();
+ });
+ });
+
+ it('frames and sends an empty message', function(done) {
+ var socket = {
+ write: function(data, encoding, cb) {
+ done();
+ }
+ };
+ var sender = new Sender(socket, {});
+ sender.send('', {}, function() {});
+ });
+
+ it('frames and sends a buffer', function(done) {
+ var received;
+ var socket = {
+ write: function(data, encoding, cb) {
+ received = data;
+ process.nextTick(cb);
+ }
+ };
+ var sender = new Sender(socket, {});
+ sender.send(new Buffer('foobar'), {}, function() {
+ received.toString('utf8').should.eql('\u0000foobar\ufffd');
+ done();
+ });
+ });
+
+ it('frames and sends a binary message', function(done) {
+ var message = 'Hello world';
+ var received;
+ var socket = {
+ write: function(data, encoding, cb) {
+ received = data;
+ process.nextTick(cb);
+ }
+ };
+ var sender = new Sender(socket, {});
+ sender.send(message, {binary: true}, function() {
+ received.toString('hex').should.eql(
+ // 0x80 0x0b H e l l o <sp> w o r l d
+ '800b48656c6c6f20776f726c64');
+ done();
+ });
+ });
+/*
+ it('throws an exception for binary data', function(done) {
+ var socket = {
+ write: function(data, encoding, cb) {
+ process.nextTick(cb);
+ }
+ };
+ var sender = new Sender(socket, {});
+ sender.on('error', function() {
+ done();
+ });
+ sender.send(new Buffer(100), {binary: true}, function() {});
+ });
+*/
+ it('can fauxe stream data', function(done) {
+ var received = [];
+ var socket = {
+ write: function(data, encoding, cb) {
+ received.push(data);
+ process.nextTick(cb);
+ }
+ };
+ var sender = new Sender(socket, {});
+ sender.send(new Buffer('foobar'), { fin: false }, function() {});
+ sender.send('bazbar', { fin: false }, function() {});
+ sender.send(new Buffer('end'), { fin: true }, function() {
+ received[0].toString('utf8').should.eql('\u0000foobar');
+ received[1].toString('utf8').should.eql('bazbar');
+ received[2].toString('utf8').should.eql('end\ufffd');
+ done();
+ });
+ });
+ });
+
+ describe('#close', function() {
+ it('sends a hixie close frame', function(done) {
+ var received;
+ var socket = {
+ write: function(data, encoding, cb) {
+ received = data;
+ process.nextTick(cb);
+ }
+ };
+ var sender = new Sender(socket, {});
+ sender.close(null, null, null, function() {
+ received.toString('utf8').should.eql('\ufffd\u0000');
+ done();
+ });
+ });
+
+ it('sends a message end marker if fauxe streaming has started, before hixie close frame', function(done) {
+ var received = [];
+ var socket = {
+ write: function(data, encoding, cb) {
+ received.push(data);
+ if (cb) process.nextTick(cb);
+ }
+ };
+ var sender = new Sender(socket, {});
+ sender.send(new Buffer('foobar'), { fin: false }, function() {});
+ sender.close(null, null, null, function() {
+ received[0].toString('utf8').should.eql('\u0000foobar');
+ received[1].toString('utf8').should.eql('\ufffd');
+ received[2].toString('utf8').should.eql('\ufffd\u0000');
+ done();
+ });
+ });
+ });
+});