Update failing WebChannel tests, 6 RFB tests still failing

This commit is contained in:
Ryan Castner 2020-04-09 08:51:09 -04:00
parent fc8518c057
commit 5837888fca
2 changed files with 30 additions and 3 deletions

View File

@ -1,7 +1,7 @@
import Base64 from '../core/base64.js';
// PhantomJS can't create Event objects directly, so we need to use this
function make_event(name, props) {
export function make_event(name, props) {
const evt = document.createEvent('Event');
evt.initEvent(name, true, true);
if (props) {
@ -30,6 +30,7 @@ export default class FakeWebSocket {
this.bufferedAmount = 0;
this.__is_fake = true;
this.__listeners = [];
}
close(code, reason) {
@ -49,6 +50,19 @@ export default class FakeWebSocket {
this.bufferedAmount += data.length;
}
addEventListener(type, listener, options) {
this.__listeners.push({type, handler: listener, options});
}
dispatchEvent(evt) {
for (let i = 0; i < this.__listeners.length; i++) {
let listener = this.__listeners[i];
if (evt.type === listener.type) {
listener.handler(evt);
}
}
}
_get_sent_data() {
const res = new Uint8Array(this._send_queue.buffer, 0, this.bufferedAmount);
this.bufferedAmount = 0;

View File

@ -1,7 +1,7 @@
const expect = chai.expect;
import WebChannel from '../core/websock.js';
import FakeWebSocket from './fake.websocket.js';
import FakeWebSocket, { make_event } from './fake.websocket.js';
describe('WebChannel', function () {
"use strict";
@ -259,6 +259,19 @@ describe('WebChannel', function () {
WebSocket.CONNECTING = old_WS.CONNECTING;
WebSocket.CLOSING = old_WS.CLOSING;
WebSocket.CLOSED = old_WS.CLOSED;
WebSocket.__listeners = [];
WebSocket.prototype.addEventListener = (type, listener, options) => {
WebSocket.__listeners.push({type, handler: listener, options});
};
WebSocket.prototype.dispatchEvent = (evt) => {
for (let i = 0; i < WebSocket.__listeners.length; i++) {
let listener = WebSocket.__listeners[i];
if (evt.type === listener.type) {
listener.handler(evt);
}
}
};
WebSocket.prototype.binaryType = 'arraybuffer';
});
@ -338,7 +351,7 @@ describe('WebChannel', function () {
});
it('should call the close event handler on closing', function () {
sock._rawChannel.onclose();
sock._rawChannel.dispatchEvent(make_event('close'));
expect(sock._eventHandlers.close).to.have.been.calledOnce;
});