mudb
Version:
Real-time database for multiplayer games
124 lines • 3.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tape = require("tape");
const http = require("http");
const port_1 = require("../../../util/port");
const server_1 = require("../server");
const client_1 = require("../client");
const socket_1 = require("../../socket");
function noop() { }
function sessionId() {
return Math.random().toString(36).substring(2);
}
tape('session id', async (t) => {
const server = http.createServer();
const socketServer = new server_1.MuWebSocketServer({ server });
const sid = 'abc`1234567890-=~!@#$%^&*()_+[]\;\',./{}|:"<>?xyz';
const port = await port_1.findPortAsync();
const socket = new client_1.MuWebSocket({
sessionId: sid,
url: `ws://127.0.0.1:${port}`,
});
socketServer.start({
ready: () => {
socket.open({
ready: noop,
message: noop,
close: noop,
});
},
connection: (sock) => {
t.equal(sock.sessionId, sid, `should be escaped`);
t.end();
},
close: () => { },
});
server.listen(port);
});
port_1.findPort((port) => {
const server = http.createServer();
const socketServer = new server_1.MuWebSocketServer({ server });
socketServer.start({
ready: noop,
connection: noop,
close: noop,
});
server.listen(port);
const url = `ws://127.0.0.1:${port}`;
tape('socket.open() - when INIT', (t) => {
t.plan(2);
let callsToReady = 0;
const socket = new client_1.MuWebSocket({
sessionId: sessionId(),
url,
});
t.equal(socket.state(), socket_1.MuSocketState.INIT, 'initial state should be INIT');
socket.open({
ready: () => {
++callsToReady;
if (callsToReady > 1) {
t.fail('should not call ready handler more than once');
}
t.equal(socket.state(), socket_1.MuSocketState.OPEN, 'should change socket state to OPEN');
},
message: noop,
close: noop,
});
});
tape('socket.open() - when OPEN', (t) => {
t.plan(1);
const socket = new client_1.MuWebSocket({
sessionId: sessionId(),
url,
});
socket.open({
ready: () => {
t.throws(() => socket.open({
ready: noop,
message: noop,
close: noop,
}));
},
message: noop,
close: noop,
});
});
tape('socket.open() - when CLOSED', (t) => {
t.plan(1);
const socket = new client_1.MuWebSocket({
sessionId: sessionId(),
url,
});
socket.open({
ready: () => socket.close(),
message: noop,
close: () => t.throws(() => socket.open({
ready: noop,
message: noop,
close: noop,
})),
});
});
tape('socket.close() - when OPEN', (t) => {
t.plan(1);
const socket = new client_1.MuWebSocket({
sessionId: sessionId(),
url,
});
socket.open({
ready: () => socket.close(),
message: noop,
close: () => t.equal(socket.state(), socket_1.MuSocketState.CLOSED, 'should change socket state to CLOSED'),
});
});
tape('socket.close() - when INIT', (t) => {
const socket = new client_1.MuWebSocket({
sessionId: sessionId(),
url,
});
socket.close();
t.equal(socket.state(), socket_1.MuSocketState.CLOSED, 'should change socket state to CLOSED');
t.end();
});
});
//# sourceMappingURL=client.js.map