Fix tests after changing auth negotiation
PhantomJS has a very basic implementation of Uint8Array, so we need to help it out a bit.
This commit is contained in:
parent
95533c579e
commit
0ee5ca6ebe
19
core/rfb.js
19
core/rfb.js
|
@ -795,15 +795,26 @@
|
||||||
var types = this._sock.rQshiftBytes(num_types);
|
var types = this._sock.rQshiftBytes(num_types);
|
||||||
Util.Debug("Server security types: " + types);
|
Util.Debug("Server security types: " + types);
|
||||||
|
|
||||||
|
// Polyfill since IE and PhantomJS doesn't have
|
||||||
|
// TypedArray.includes()
|
||||||
|
function includes(item, array) {
|
||||||
|
for (var i = 0; i < array.length; i++) {
|
||||||
|
if (array[i] === item) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Look for each auth in preferred order
|
// Look for each auth in preferred order
|
||||||
this._rfb_auth_scheme = 0;
|
this._rfb_auth_scheme = 0;
|
||||||
if (types.indexOf(1) !== -1) {
|
if (includes(1, types)) {
|
||||||
this._rfb_auth_scheme = 1; // None
|
this._rfb_auth_scheme = 1; // None
|
||||||
} else if (types.indexOf(22) !== -1) {
|
} else if (includes(22, types)) {
|
||||||
this._rfb_auth_scheme = 22; // XVP
|
this._rfb_auth_scheme = 22; // XVP
|
||||||
} else if (types.indexOf(16) !== -1) {
|
} else if (includes(16, types)) {
|
||||||
this._rfb_auth_scheme = 16; // Tight
|
this._rfb_auth_scheme = 16; // Tight
|
||||||
} else if (types.indexOf(2) !== -1) {
|
} else if (includes(2, types)) {
|
||||||
this._rfb_auth_scheme = 2; // VNC Auth
|
this._rfb_auth_scheme = 2; // VNC Auth
|
||||||
} else {
|
} else {
|
||||||
return this._fail("Unsupported server",
|
return this._fail("Unsupported server",
|
||||||
|
|
|
@ -712,12 +712,20 @@ describe('Remote Frame Buffer Protocol Client', function() {
|
||||||
expect(client._rfb_auth_scheme).to.equal(auth_scheme);
|
expect(client._rfb_auth_scheme).to.equal(auth_scheme);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should prefer no authentication is possible', function () {
|
||||||
|
client._rfb_version = 3.7;
|
||||||
|
var auth_schemes = [2, 1, 3];
|
||||||
|
client._sock._websocket._receive_data(auth_schemes);
|
||||||
|
expect(client._rfb_auth_scheme).to.equal(1);
|
||||||
|
expect(client._sock).to.have.sent(new Uint8Array([1, 1]));
|
||||||
|
});
|
||||||
|
|
||||||
it('should choose for the most prefered scheme possible for versions >= 3.7', function () {
|
it('should choose for the most prefered scheme possible for versions >= 3.7', function () {
|
||||||
client._rfb_version = 3.7;
|
client._rfb_version = 3.7;
|
||||||
var auth_schemes = [2, 1, 2];
|
var auth_schemes = [2, 22, 16];
|
||||||
client._sock._websocket._receive_data(auth_schemes);
|
client._sock._websocket._receive_data(auth_schemes);
|
||||||
expect(client._rfb_auth_scheme).to.equal(2);
|
expect(client._rfb_auth_scheme).to.equal(22);
|
||||||
expect(client._sock).to.have.sent(new Uint8Array([2]));
|
expect(client._sock).to.have.sent(new Uint8Array([22]));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should fail if there are no supported schemes for versions >= 3.7', function () {
|
it('should fail if there are no supported schemes for versions >= 3.7', function () {
|
||||||
|
|
Loading…
Reference in New Issue