unit tests, and some cleaning up

This commit is contained in:
Josh Burman
2019-03-14 10:14:42 -04:00
parent 501a14d713
commit 21f77fa4c3
134 changed files with 16787 additions and 359 deletions

View File

@ -2,7 +2,7 @@ module.exports = {
version : '0.7.1',
whitelist : (process.env.WHITELIST || "http://admin.localhost").split(','),
secret : process.env.SECRET || "test",
devToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoidGVzdCBkYXRhIiwiYXVkIjoiaW50ZXJuYWwiLCJpc3MiOiJZYXJkc3RpY2sgU29mdHdhcmUiLCJzdWIiOiJCcmFpZCBKV1QifQ.t6LFXWPEVz3aLXwtrucarggqTkGY_2NnZB8ZTMaJ2oI',
devToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7ImNsaWVudCI6InRlc3QiLCJjbGllbnRfdHlwZSI6InNpdGUiLCJ1c2VyX3R5cGUiOiJ1c2VyIiwidXNlcl9pZCI6MjAwLCJjaGFubmVsIjoidGVzdF9jaGFubmVsIn0sImF1ZCI6ImludGVybmFsIiwiaXNzIjoiWWFyZHN0aWNrIFNvZnR3YXJlIiwic3ViIjoiQnJhaWQgSldUIn0.5KNCov_EW1cycT4Ay0oSvk4Z4PHFedd3bWOyqkHHTBQ',
port: process.env.PORT || 8443,
hostname: process.env.HOSTNAME || 'ysbraid.localhost',
environment: process.env.ENVIRONMENT || 'development',

View File

@ -29,67 +29,76 @@ application.use('', routes);
let clientManager = new ClientManager();
let channelManager = new ChannelManager();
wss.on('connection', (ws: WebSocket, request: object, args: string) => {
var data = JSON.parse(args).data
logger.accessLog.info(`Client Connected: ${data.user_id}`);
function startServer() {
wss.on('connection', (ws: WebSocket, request: object, args: string) => {
var data = JSON.parse(args).data
logger.accessLog.info(`Client Connected: ${data.user_id}`);
if (!channelManager.channelExists(data.channel)) {
channelManager.createChannel(data);
}
if (!channelManager.channelExists(data.channel)) {
channelManager.createChannel(data);
}
if (clientManager.clientExists(data.user_id)) {
var client: ClientBase|MHSClient|null = clientManager.getClient(data.user_id);
if (clientManager.clientExists(data.user_id)) {
var client: ClientBase|MHSClient|null = clientManager.getClient(data.user_id);
if (client != null) {
client.replaceWebSocket(ws);
}
} else {
var client: ClientBase|MHSClient|null = clientManager.addClient(data, ws);
}
if (client != null) {
client.replaceWebSocket(ws);
channelManager.addClientToChannel(client, data.channel);
}
} else {
var client: ClientBase|MHSClient|null = clientManager.addClient(data, ws);
}
if (client != null) {
channelManager.addClientToChannel(client, data.channel);
}
ws.send('Hi there, welcome to braid, Measures Web Socket server.\nConnecting all our services!');
});
server.on('upgrade', async function upgrade(request, socket, head) {
let args: {};
try {
args = await verifyConnection()
} catch (e) {
socket.destroy();
logger.accessLog.info('Connection Terminated');
return;
}
function verifyConnection() {
return new Promise((resolve, reject) => {
var data = url.parse(request.url, true).query;
var token = data.token || (app.environment == 'development' ? app.devToken : '');
var accepted = true;
var result: string;
jwt.verify(token, app.secret, app.signOptions, function(err, decoded) {
if (err) {
console.log(err);
accepted = false;
}
result = JSON.stringify(decoded)
accepted ? resolve(result) : reject('rejected');
});
});
}
wss.handleUpgrade(request, socket, head, function done(ws) {
wss.emit('connection', ws, request, args);
ws.send('Hi there, welcome to braid, Measures Web Socket server.\nConnecting all our services!');
});
});
server.listen(app.port, () => {
console.log(`Braid v${app.version} is running!\n`);
logger.accessLog.info(`Braid v${app.version} is running!\n`);
});
server.on('upgrade', async function upgrade(request, socket, head) {
let args: {};
try {
args = await verifyConnection()
} catch (e) {
socket.destroy();
logger.accessLog.info('Connection Terminated');
return;
}
function verifyConnection() {
return new Promise((resolve, reject) => {
var data = url.parse(request.url, true).query;
var token = data.token || (app.environment == 'development' ? app.devToken : '');
var accepted = true;
var result: string;
jwt.verify(token, app.secret, app.signOptions, function(err, decoded) {
if (err) {
console.log(err);
accepted = false;
}
result = JSON.stringify(decoded)
accepted ? resolve(result) : reject('rejected');
});
});
}
wss.handleUpgrade(request, socket, head, function done(ws) {
wss.emit('connection', ws, request, args);
});
});
server.listen(app.port, () => {
console.log(`Braid v${app.version} is running!\n`);
logger.accessLog.info(`Braid v${app.version} is running!\n`);
});
}
startServer();
module.exports = {
clientManager: clientManager,
channelManager: channelManager
}

View File

@ -1,15 +1,15 @@
import ChannelBase from '../channels/channelBase';
import ClientBase from '../clients/clientBase';
var exec = require('child_process').exec;
var expect = require('chai').expect;
var sinon = require('sinon');
var WebSocketClient = require('websocket').client;
var app = require('../config/app');
var name: string = 'test channel';
var channel: ChannelBase;
var wsLink: string = `wss://${app.hostname}:${app.port}`;
var wsClient = new WebSocketClient();
var channel: ChannelBase;
var data: any = { 'client': 'test', 'client_type':'site', 'user_id': 125, 'user_type': 'user', 'channel': name }
var client: ClientBase = new ClientBase(data, wsClient);
@ -35,12 +35,7 @@ describe('ChannelBase', function () {
expect(result).to.be.equal(true);
});
it('should not broadcase a message to self', function () {
// var wstClient = new WebSocketClient(wsLink);
// var teacher_data: any = { 'client': 'test', 'client_type':'site', 'user_id': 126, 'user_type': 'teacher', 'channel': name }
// var teacher: ClientBase = new ClientBase(teacher_data, wstClient);
// channel.addClient(client);
// channel.addClient(teacher);
it('should not broadcast a message to self', function () {
var result = channel.broadcastMessage(client, 'test message');
expect(result.status).to.be.equal('success');
});

View File

@ -55,9 +55,4 @@ describe('ClientManager', function () {
var result = clientManager.getClientType(data, wsClient);
expect(result.clientType()).to.be.equal('mhs');
});
// it('should remove a client', function () {
// clientManager.removeClient(data.user_id);
// expect(clientManager.clients.length).to.be.equal(0);
// });
});