arnaucube
arnaucube/comunicationLeapPublic Self-hosted repository
comunicationLeap/node_modules/ws/test/Receiver.hixie.test.js
node_modules/ws/test/Receiver.hixie.test.jsRaw
  1var assert = require('assert')
  2  , expect = require('expect.js')
  3  , Receiver = require('../lib/Receiver.hixie');
  4require('./hybi-common');
  5
  6describe('Receiver', function() {
  7  it('can parse text message', function() {
  8    var p = new Receiver();
  9    var packet = '00 48 65 6c 6c 6f ff';
 10
 11    var gotData = false;
 12    p.ontext = function(data) {
 13      gotData = true;
 14      assert.equal('Hello', data);
 15    };
 16
 17    p.add(getBufferFromHexString(packet));
 18    expect(gotData).to.equal(true);
 19  });
 20
 21  it('can parse multiple text messages', function() {
 22    var p = new Receiver();
 23    var packet = '00 48 65 6c 6c 6f ff 00 48 65 6c 6c 6f ff';
 24
 25    var gotData = false;
 26    var messages = [];
 27    p.ontext = function(data) {
 28      gotData = true;
 29      messages.push(data);
 30    };
 31
 32    p.add(getBufferFromHexString(packet));
 33    expect(gotData).to.equal(true);
 34    for (var i = 0; i < 2; ++i) {
 35      expect(messages[i]).to.equal('Hello');
 36    }
 37  });
 38
 39  it('can parse empty message', function() {
 40    var p = new Receiver();
 41    var packet = '00 ff';
 42
 43    var gotData = false;
 44    p.ontext = function(data) {
 45      gotData = true;
 46      assert.equal('', data);
 47    };
 48
 49    p.add(getBufferFromHexString(packet));
 50    expect(gotData).to.equal(true);
 51  });
 52
 53  it('can parse text messages delivered over multiple frames', function() {
 54    var p = new Receiver();
 55    var packets = [
 56      '00 48',
 57      '65 6c 6c',
 58      '6f ff 00 48',
 59      '65',
 60      '6c 6c 6f',
 61      'ff'
 62    ];
 63
 64    var gotData = false;
 65    var messages = [];
 66    p.ontext = function(data) {
 67      gotData = true;
 68      messages.push(data);
 69    };
 70
 71    for (var i = 0; i < packets.length; ++i) {
 72      p.add(getBufferFromHexString(packets[i]));
 73    }
 74    expect(gotData).to.equal(true);
 75    for (var i = 0; i < 2; ++i) {
 76      expect(messages[i]).to.equal('Hello');
 77    }
 78  });
 79
 80  it('emits an error if a payload doesnt start with 0x00', function() {
 81    var p = new Receiver();
 82    var packets = [
 83      '00 6c ff',
 84      '00 6c ff ff',
 85      'ff 00 6c ff 00 6c ff',
 86      '00',
 87      '6c 6c 6f',
 88      'ff'
 89    ];
 90
 91    var gotData = false;
 92    var gotError = false;
 93    var messages = [];
 94    p.ontext = function(data) {
 95      gotData = true;
 96      messages.push(data);
 97    };
 98    p.onerror = function(reason, code) {
 99      gotError = code == true;
100    };
101
102    for (var i = 0; i < packets.length && !gotError; ++i) {
103      p.add(getBufferFromHexString(packets[i]));
104    }
105    expect(gotError).to.equal(true);
106    expect(messages[0]).to.equal('l');
107    expect(messages[1]).to.equal('l');
108    expect(messages.length).to.equal(2);
109  });
110
111  it('can parse close messages', function() {
112    var p = new Receiver();
113    var packets = [
114      'ff 00'
115    ];
116
117    var gotClose = false;
118    var gotError = false;
119    p.onclose = function() {
120      gotClose = true;
121    };
122    p.onerror = function(reason, code) {
123      gotError = code == true;
124    };
125
126    for (var i = 0; i < packets.length && !gotError; ++i) {
127      p.add(getBufferFromHexString(packets[i]));
128    }
129    expect(gotClose).to.equal(true);
130    expect(gotError).to.equal(false);
131  });
132
133  it('can parse binary messages delivered over multiple frames', function() {
134    var p = new Receiver();
135    var packets = [
136      '80 05 48',
137      '65 6c 6c',
138      '6f 80 80 05 48',
139      '65',
140      '6c 6c 6f'
141    ];
142
143    var gotData = false;
144    var messages = [];
145    p.ontext = function(data) {
146      gotData = true;
147      messages.push(data);
148    };
149
150    for (var i = 0; i < packets.length; ++i) {
151      p.add(getBufferFromHexString(packets[i]));
152    }
153    expect(gotData).to.equal(true);
154    for (var i = 0; i < 2; ++i) {
155      expect(messages[i]).to.equal('Hello');
156    }
157  });
158});