Make RSA-AES tests more asynchronous
The code tested here makes heavy use of promises, so it is easier to test things also using promise centric code.
This commit is contained in:
parent
afbb1da4d5
commit
42bc251eb4
|
@ -1605,48 +1605,72 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
||||||
0x91, 0x38,
|
0x91, 0x38,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
it('should fire the serververification event', function (done) {
|
it('should fire the serververification event', async function () {
|
||||||
client.addEventListener("serververification", (e) => {
|
let verification = new Promise((resolve, reject) => {
|
||||||
expect(e.detail.publickey).to.eql(receiveData.slice(0, 516));
|
client.addEventListener("serververification", (e) => {
|
||||||
done();
|
resolve(e.detail.publickey);
|
||||||
});
|
|
||||||
client._sock._websocket._receiveData(receiveData);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should handle approveServer and fire the credentialsrequired event', function (done) {
|
|
||||||
client.addEventListener("serververification", (e) => {
|
|
||||||
client.approveServer();
|
|
||||||
});
|
|
||||||
client.addEventListener("credentialsrequired", (e) => {
|
|
||||||
expect(e.detail.types).to.eql(["password"]);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
client._sock._websocket._receiveData(receiveData);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should match sendData after sending credentials', function (done) {
|
|
||||||
client.addEventListener("serververification", (e) => {
|
|
||||||
client.approveServer();
|
|
||||||
});
|
|
||||||
client.addEventListener("credentialsrequired", (e) => {
|
|
||||||
client.sendCredentials({ "password": "123456" });
|
|
||||||
clock.tick();
|
|
||||||
// FIXME: We don't have a good way to know when
|
|
||||||
// the async stuff is done, so we hook in
|
|
||||||
// to this internal function that is
|
|
||||||
// called at the end
|
|
||||||
new Promise((resolve, reject) => {
|
|
||||||
sinon.stub(client._sock._websocket, "send")
|
|
||||||
.callsFake((data) => {
|
|
||||||
FakeWebSocket.prototype.send.call(client._sock._websocket, data);
|
|
||||||
resolve();
|
|
||||||
});
|
|
||||||
}).then(() => {
|
|
||||||
expect(client._sock).to.have.sent(sendData);
|
|
||||||
done();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
client._sock._websocket._receiveData(receiveData);
|
client._sock._websocket._receiveData(receiveData);
|
||||||
|
|
||||||
|
expect(await verification).to.deep.equal(receiveData.slice(0, 516));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle approveServer and fire the credentialsrequired event', async function () {
|
||||||
|
let verification = new Promise((resolve, reject) => {
|
||||||
|
client.addEventListener("serververification", (e) => {
|
||||||
|
resolve(e.detail.publickey);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
let credentials = new Promise((resolve, reject) => {
|
||||||
|
client.addEventListener("credentialsrequired", (e) => {
|
||||||
|
resolve(e.detail.types);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
client._sock._websocket._receiveData(receiveData);
|
||||||
|
|
||||||
|
await verification;
|
||||||
|
client.approveServer();
|
||||||
|
|
||||||
|
expect(await credentials).to.have.members(["password"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should send credentials to server', async function () {
|
||||||
|
let verification = new Promise((resolve, reject) => {
|
||||||
|
client.addEventListener("serververification", (e) => {
|
||||||
|
resolve(e.detail.publickey);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
let credentials = new Promise((resolve, reject) => {
|
||||||
|
client.addEventListener("credentialsrequired", (e) => {
|
||||||
|
resolve(e.detail.types);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
client._sock._websocket._receiveData(receiveData);
|
||||||
|
|
||||||
|
await verification;
|
||||||
|
client.approveServer();
|
||||||
|
|
||||||
|
await credentials;
|
||||||
|
client.sendCredentials({ "password": "123456" });
|
||||||
|
clock.tick();
|
||||||
|
|
||||||
|
// FIXME: We don't have a good way to know when
|
||||||
|
// the async stuff is done, so we hook in
|
||||||
|
// to this internal function that is
|
||||||
|
// called at the end
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
sinon.stub(client._sock._websocket, "send")
|
||||||
|
.callsFake((data) => {
|
||||||
|
FakeWebSocket.prototype.send.call(client._sock._websocket, data);
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(client._sock).to.have.sent(sendData);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue