summaryrefslogtreecommitdiff
path: root/node_modules/ws/test/Receiver.hixie.test.js
diff options
context:
space:
mode:
authoryo mama <pepper@scannerjammer.com>2015-03-20 17:33:43 -0700
committeryo mama <pepper@scannerjammer.com>2015-03-20 17:33:43 -0700
commit2afbcf4e7d000d99fdbc582d7113684ee00e80cc (patch)
tree6ba3313b78625735fb295e3d375e59054c31e558 /node_modules/ws/test/Receiver.hixie.test.js
first
Diffstat (limited to 'node_modules/ws/test/Receiver.hixie.test.js')
-rw-r--r--node_modules/ws/test/Receiver.hixie.test.js158
1 files changed, 158 insertions, 0 deletions
diff --git a/node_modules/ws/test/Receiver.hixie.test.js b/node_modules/ws/test/Receiver.hixie.test.js
new file mode 100644
index 0000000..043d3bc
--- /dev/null
+++ b/node_modules/ws/test/Receiver.hixie.test.js
@@ -0,0 +1,158 @@
+var assert = require('assert')
+ , expect = require('expect.js')
+ , Receiver = require('../lib/Receiver.hixie');
+require('./hybi-common');
+
+describe('Receiver', function() {
+ it('can parse text message', function() {
+ var p = new Receiver();
+ var packet = '00 48 65 6c 6c 6f ff';
+
+ var gotData = false;
+ p.ontext = function(data) {
+ gotData = true;
+ assert.equal('Hello', data);
+ };
+
+ p.add(getBufferFromHexString(packet));
+ expect(gotData).to.equal(true);
+ });
+
+ it('can parse multiple text messages', function() {
+ var p = new Receiver();
+ var packet = '00 48 65 6c 6c 6f ff 00 48 65 6c 6c 6f ff';
+
+ var gotData = false;
+ var messages = [];
+ p.ontext = function(data) {
+ gotData = true;
+ messages.push(data);
+ };
+
+ p.add(getBufferFromHexString(packet));
+ expect(gotData).to.equal(true);
+ for (var i = 0; i < 2; ++i) {
+ expect(messages[i]).to.equal('Hello');
+ }
+ });
+
+ it('can parse empty message', function() {
+ var p = new Receiver();
+ var packet = '00 ff';
+
+ var gotData = false;
+ p.ontext = function(data) {
+ gotData = true;
+ assert.equal('', data);
+ };
+
+ p.add(getBufferFromHexString(packet));
+ expect(gotData).to.equal(true);
+ });
+
+ it('can parse text messages delivered over multiple frames', function() {
+ var p = new Receiver();
+ var packets = [
+ '00 48',
+ '65 6c 6c',
+ '6f ff 00 48',
+ '65',
+ '6c 6c 6f',
+ 'ff'
+ ];
+
+ var gotData = false;
+ var messages = [];
+ p.ontext = function(data) {
+ gotData = true;
+ messages.push(data);
+ };
+
+ for (var i = 0; i < packets.length; ++i) {
+ p.add(getBufferFromHexString(packets[i]));
+ }
+ expect(gotData).to.equal(true);
+ for (var i = 0; i < 2; ++i) {
+ expect(messages[i]).to.equal('Hello');
+ }
+ });
+
+ it('emits an error if a payload doesnt start with 0x00', function() {
+ var p = new Receiver();
+ var packets = [
+ '00 6c ff',
+ '00 6c ff ff',
+ 'ff 00 6c ff 00 6c ff',
+ '00',
+ '6c 6c 6f',
+ 'ff'
+ ];
+
+ var gotData = false;
+ var gotError = false;
+ var messages = [];
+ p.ontext = function(data) {
+ gotData = true;
+ messages.push(data);
+ };
+ p.onerror = function(reason, code) {
+ gotError = code == true;
+ };
+
+ for (var i = 0; i < packets.length && !gotError; ++i) {
+ p.add(getBufferFromHexString(packets[i]));
+ }
+ expect(gotError).to.equal(true);
+ expect(messages[0]).to.equal('l');
+ expect(messages[1]).to.equal('l');
+ expect(messages.length).to.equal(2);
+ });
+
+ it('can parse close messages', function() {
+ var p = new Receiver();
+ var packets = [
+ 'ff 00'
+ ];
+
+ var gotClose = false;
+ var gotError = false;
+ p.onclose = function() {
+ gotClose = true;
+ };
+ p.onerror = function(reason, code) {
+ gotError = code == true;
+ };
+
+ for (var i = 0; i < packets.length && !gotError; ++i) {
+ p.add(getBufferFromHexString(packets[i]));
+ }
+ expect(gotClose).to.equal(true);
+ expect(gotError).to.equal(false);
+ });
+
+ it('can parse binary messages delivered over multiple frames', function() {
+ var p = new Receiver();
+ var packets = [
+ '80 05 48',
+ '65 6c 6c',
+ '6f 80 80 05 48',
+ '65',
+ '6c 6c 6f'
+ ];
+
+ var gotData = false;
+ var messages = [];
+ p.ontext = function(data) {
+ gotData = true;
+ messages.push(data);
+ };
+
+ for (var i = 0; i < packets.length; ++i) {
+ p.add(getBufferFromHexString(packets[i]));
+ }
+ expect(gotData).to.equal(true);
+ for (var i = 0; i < 2; ++i) {
+ expect(messages[i]).to.equal('Hello');
+ }
+ });
+});