websocket-relay
Version:
Easily set up communication channels between browser clients
71 lines (58 loc) • 1.77 kB
JavaScript
;
let testing = require('testing');
let rewire = require('rewire');
let unitTests = [
test_validateParametersMissing,
test_validateParametersMissingProperty,
test_RelayChannelOnMessageCallbacks
];
module.exports = unitTests;
let server = rewire("../src/WebSocketRelay");
let validateParameters = server.__get__("validateParameters");
let RelayChannel = server.__get__("RelayChannel");
function test_validateParametersMissing(callback) {
try {
validateParameters();
testing.failure(callback);
}
catch (ex) {
if (ex.message === 'first parameter is required') {
testing.success(callback);
}
else {
testing.failure(callback);
}
}
}
function test_validateParametersMissingProperty(callback) {
try {
validateParameters('ws://example.com', { clientId: 4 });
testing.failure(callback);
}
catch (ex) {
if (ex.message === 'token property is required in authentication object') {
testing.success(callback);
}
else {
testing.failure(callback);
}
}
}
function test_RelayChannelOnMessageCallbacks(callback) {
let onMessageCallbacks = [];
let channel1 = new RelayChannel(null, {}, 1, onMessageCallbacks);
let channel2 = new RelayChannel(null, {}, 2, onMessageCallbacks);
channel1.on('message', (message) => {
testing.assertEquals(message, 'test from client 1')
});
channel2.on('message', (message) => {
testing.assertEquals(message, 'test from client 2')
});
onMessageCallbacks.forEach((onMessageCallback) => {
onMessageCallback({ senderId: 2, message: 'test from client 2'});
});
onMessageCallbacks.forEach((onMessageCallback) => {
onMessageCallback({ senderId: 1, message: 'test from client 1'});
});
testing.success(callback);
}