mulocal-socket
Version:
Local socket emulation for mudb
131 lines • 5.13 kB
JavaScript
;
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