|
|
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(); }); }); }); });
|