UNPKG

mulocal-socket

Version:
131 lines 5.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var test = require("tape"); var __1 = require("../"); var server_socket_1 = require("../server-socket"); var socket_1 = require("mudb/socket"); function noop() { } function id() { return Math.random().toString(36).substr(2); } test('server initial state', function (t) { var server = __1.createLocalSocketServer(); t.equals(server.state, socket_1.MuSocketServerState.INIT, 'should be INIT'); t.end(); }); test('server.start() - when INIT', function (t) { t.plan(4); var server = __1.createLocalSocketServer(); server.start({ ready: function () { t.equals(server.state, socket_1.MuSocketServerState.RUNNING, 'should change server state to RUNNING'); t.equals(server.clients.length, 1, 'should handle pending connections'); server.close(); }, connection: function (socket) { return t.true(socket instanceof server_socket_1.MuLocalSocket, 'should set message handler'); }, close: function (error) { return t.equals(error, undefined, 'should set close handler'); }, }); __1.createLocalSocket({ sessionId: id(), server: server, }); }); test('server.start() - when RUNNING', function (t) { t.plan(1); var server = __1.createLocalSocketServer(); server.start({ ready: function () { server.start({ ready: noop, connection: noop, close: function () { return t.fail('should not call spec.close()'); }, }); }, connection: noop, close: function (error) { return t.equals(typeof error, 'string', 'should invoke close handler with error message'); }, }); }); test('server.start() - when SHUTDOWN', function (t) { t.plan(2); var server = __1.createLocalSocketServer(); server.start({ ready: function () { server.close(); server.start({ ready: noop, connection: noop, close: function () { return t.fail('should not call spec.close()'); }, }); }, connection: noop, close: function (error) { if (error) { t.equals(typeof error, 'string', 'should invoke close handler with error message'); t.equals(server.state, socket_1.MuSocketServerState.SHUTDOWN, 'should not change server state'); } }, }); }); test('server.close() - when RUNNING', function (t) { t.plan(5); var server = __1.createLocalSocketServer(); server.start({ ready: noop, connection: function (socket) { return socket.open({ ready: function () { return server.close(); }, message: noop, close: noop, }); }, close: function (error) { t.equals(error, undefined, 'should invoke close handler without error message'); t.equals(server.state, socket_1.MuSocketServerState.SHUTDOWN, 'should change server state to SHUTDOWN'); t.equals(server.clients.length, 0, 'should remove connection from server'); t.equals(clientSocket.state, socket_1.MuSocketState.CLOSED, 'should close client socket'); t.equals(clientSocket._duplex.state, socket_1.MuSocketState.CLOSED, 'should close server socket'); }, }); var clientSocket = __1.createLocalSocket({ sessionId: id(), server: server, }); }); test('server.close() - when RUNNING, with sockets not OPEN', function (t) { t.plan(5); var server = __1.createLocalSocketServer(); server.start({ ready: function () { return server.close(); }, connection: noop, close: function (error) { t.equals(error, undefined, 'should invoke close handler without error message'); t.equals(server.state, socket_1.MuSocketServerState.SHUTDOWN, 'should change server state to SHUTDOWN'); t.equals(server.clients.length, 0, 'should remove connection from server'); t.equals(clientSocket.state, socket_1.MuSocketState.CLOSED, 'should close client socket'); t.equals(clientSocket._duplex.state, socket_1.MuSocketState.CLOSED, 'should close server socket'); }, }); var clientSocket = __1.createLocalSocket({ sessionId: id(), server: server, }); }); test('server.close() - when INIT', function (t) { var server = __1.createLocalSocketServer(); server.close(); t.equals(server.state, socket_1.MuSocketServerState.SHUTDOWN, 'should change server state to SHUTDOWN'); t.end(); }); test('server.close() - when SHUTDOWN', function (t) { t.plan(1); var callsToOnClose = 0; var server = __1.createLocalSocketServer(); server.start({ ready: function () { server.close(); server.close(); t.equals(callsToOnClose, 1, 'should not invoke close handler'); }, connection: noop, close: function () { return ++callsToOnClose; }, }); }); //# sourceMappingURL=server.js.map