69 lines
2 KiB
JavaScript
69 lines
2 KiB
JavaScript
// Copyright 2015-2020 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
/* global TextSecureWebSocket */
|
|
|
|
describe('TextSecureWebSocket', () => {
|
|
const RealWebSocket = window.WebSocket;
|
|
before(() => {
|
|
window.WebSocket = MockSocket;
|
|
});
|
|
after(() => {
|
|
window.WebSocket = RealWebSocket;
|
|
});
|
|
it('connects and disconnects', done => {
|
|
const mockServer = new MockServer('ws://localhost:8080');
|
|
mockServer.on('connection', server => {
|
|
socket.close();
|
|
server.close();
|
|
done();
|
|
});
|
|
const socket = new TextSecureWebSocket('ws://localhost:8080');
|
|
});
|
|
|
|
it('sends and receives', done => {
|
|
const mockServer = new MockServer('ws://localhost:8080');
|
|
mockServer.on('connection', server => {
|
|
server.on('message', () => {
|
|
server.send('ack');
|
|
server.close();
|
|
});
|
|
});
|
|
const socket = new TextSecureWebSocket('ws://localhost:8080');
|
|
socket.onmessage = response => {
|
|
assert.strictEqual(response.data, 'ack');
|
|
socket.close();
|
|
done();
|
|
};
|
|
socket.send('syn');
|
|
});
|
|
|
|
it('exposes the socket status', done => {
|
|
const mockServer = new MockServer('ws://localhost:8082');
|
|
mockServer.on('connection', server => {
|
|
assert.strictEqual(socket.getStatus(), WebSocket.OPEN);
|
|
server.close();
|
|
socket.close();
|
|
});
|
|
const socket = new TextSecureWebSocket('ws://localhost:8082');
|
|
socket.onclose = () => {
|
|
assert.strictEqual(socket.getStatus(), WebSocket.CLOSING);
|
|
done();
|
|
};
|
|
});
|
|
|
|
it('reconnects', function thisNeeded(done) {
|
|
this.timeout(60000);
|
|
const mockServer = new MockServer('ws://localhost:8082');
|
|
const socket = new TextSecureWebSocket('ws://localhost:8082');
|
|
socket.onclose = () => {
|
|
const secondServer = new MockServer('ws://localhost:8082');
|
|
secondServer.on('connection', server => {
|
|
socket.close();
|
|
server.close();
|
|
done();
|
|
});
|
|
};
|
|
mockServer.close();
|
|
});
|
|
});
|