add tests for base64 websocket protocol
This commit is contained in:
parent
082223fdca
commit
ad8615ba35
|
|
@ -358,20 +358,30 @@ describe('Websock', function () {
|
||||||
let sock;
|
let sock;
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
sock = new Websock();
|
sock = new Websock();
|
||||||
|
sock._websocket = {
|
||||||
|
protocol: 'binary'
|
||||||
|
};
|
||||||
sock._allocate_buffers();
|
sock._allocate_buffers();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should support adding binary Uint8Array data to the receive queue', function () {
|
it('should support adding binary Uint8Array data to the receive queue', function () {
|
||||||
const msg = { data: new Uint8Array([1, 2, 3]) };
|
const msg = { data: new Uint8Array([1, 2, 3]) };
|
||||||
sock._mode = 'binary';
|
|
||||||
sock._recv_message(msg);
|
sock._recv_message(msg);
|
||||||
expect(sock.rQshiftStr(3)).to.equal('\x01\x02\x03');
|
expect(sock.rQshiftStr(3)).to.equal('\x01\x02\x03');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should support adding base64 data to the receive queue', function () {
|
||||||
|
const msg = { data: 'MTIz' };
|
||||||
|
sock._websocket = {
|
||||||
|
protocol: 'base64'
|
||||||
|
};
|
||||||
|
sock._recv_message(msg);
|
||||||
|
expect(sock.rQshiftStr(3)).to.equal('123');
|
||||||
|
});
|
||||||
|
|
||||||
it('should call the message event handler if present', function () {
|
it('should call the message event handler if present', function () {
|
||||||
sock._eventHandlers.message = sinon.spy();
|
sock._eventHandlers.message = sinon.spy();
|
||||||
const msg = { data: new Uint8Array([1, 2, 3]).buffer };
|
const msg = { data: new Uint8Array([1, 2, 3]).buffer };
|
||||||
sock._mode = 'binary';
|
|
||||||
sock._recv_message(msg);
|
sock._recv_message(msg);
|
||||||
expect(sock._eventHandlers.message).to.have.been.calledOnce;
|
expect(sock._eventHandlers.message).to.have.been.calledOnce;
|
||||||
});
|
});
|
||||||
|
|
@ -379,7 +389,6 @@ describe('Websock', function () {
|
||||||
it('should not call the message event handler if there is nothing in the receive queue', function () {
|
it('should not call the message event handler if there is nothing in the receive queue', function () {
|
||||||
sock._eventHandlers.message = sinon.spy();
|
sock._eventHandlers.message = sinon.spy();
|
||||||
const msg = { data: new Uint8Array([]).buffer };
|
const msg = { data: new Uint8Array([]).buffer };
|
||||||
sock._mode = 'binary';
|
|
||||||
sock._recv_message(msg);
|
sock._recv_message(msg);
|
||||||
expect(sock._eventHandlers.message).not.to.have.been.called;
|
expect(sock._eventHandlers.message).not.to.have.been.called;
|
||||||
});
|
});
|
||||||
|
|
@ -392,7 +401,6 @@ describe('Websock', function () {
|
||||||
sock.rQi = 6;
|
sock.rQi = 6;
|
||||||
sock._rQmax = 3;
|
sock._rQmax = 3;
|
||||||
const msg = { data: new Uint8Array([1, 2, 3]).buffer };
|
const msg = { data: new Uint8Array([1, 2, 3]).buffer };
|
||||||
sock._mode = 'binary';
|
|
||||||
sock._recv_message(msg);
|
sock._recv_message(msg);
|
||||||
expect(sock._rQlen).to.equal(3);
|
expect(sock._rQlen).to.equal(3);
|
||||||
expect(sock.rQi).to.equal(0);
|
expect(sock.rQi).to.equal(0);
|
||||||
|
|
@ -405,7 +413,6 @@ describe('Websock', function () {
|
||||||
sock._rQbufferSize = 20;
|
sock._rQbufferSize = 20;
|
||||||
sock._rQmax = 2;
|
sock._rQmax = 2;
|
||||||
const msg = { data: new Uint8Array(30).buffer };
|
const msg = { data: new Uint8Array(30).buffer };
|
||||||
sock._mode = 'binary';
|
|
||||||
sock._recv_message(msg);
|
sock._recv_message(msg);
|
||||||
expect(sock._rQlen).to.equal(30);
|
expect(sock._rQlen).to.equal(30);
|
||||||
expect(sock.rQi).to.equal(0);
|
expect(sock.rQi).to.equal(0);
|
||||||
|
|
@ -437,5 +444,26 @@ describe('Websock', function () {
|
||||||
expect(sock._websocket._get_sent_data()).to.array.equal(new Uint8Array([1, 2, 3]));
|
expect(sock._websocket._get_sent_data()).to.array.equal(new Uint8Array([1, 2, 3]));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('as base64 data', function () {
|
||||||
|
let sock;
|
||||||
|
beforeEach(function () {
|
||||||
|
sock = new Websock();
|
||||||
|
sock.open('ws://', 'base64');
|
||||||
|
sock._websocket._open();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should only send the send queue up to the send queue length', function () {
|
||||||
|
sock._sQ = new Uint8Array([1, 2, 3, 4, 5]);
|
||||||
|
sock._sQlen = 3;
|
||||||
|
const res = sock._encode_message();
|
||||||
|
expect(res).to.array.equal('AQID');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should properly pass the encoded data off to the actual WebSocket', function () {
|
||||||
|
sock.send([1, 2, 3]);
|
||||||
|
expect(sock._websocket._get_sent_data()).to.array.equal(new Uint8Array([1, 2, 3]));
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue