more tests, added ability to remove clients from a channel

This commit is contained in:
Josh Burman 2019-03-14 14:17:08 -04:00
parent 21f77fa4c3
commit 40691d9815
17 changed files with 316 additions and 5 deletions

View File

@ -55,6 +55,24 @@ class ChannelManager {
return new channelBase_1.default(data.channel); return new channelBase_1.default(data.channel);
} }
} }
removeClientFromChannel(client_id, channel_id) {
var index = 0;
for (let channel of this.channels) {
if (channel.id == channel_id) {
this.channels.splice(index, 1);
if (channel.removeClient(client_id)) {
logger.accessLog.info(`client removed from channel - channel: ${channel_id}, client: ${client_id}`);
return true;
}
else {
logger.errorLog.info(`client not removed from channel, or doesn't exist in channel - channel: ${channel_id}, client: ${client_id}`);
return false;
}
}
index++;
}
return false;
}
} }
; ;
exports.default = ChannelManager; exports.default = ChannelManager;

View File

@ -1 +1 @@
{"version":3,"file":"channelManager.js","sourceRoot":"","sources":["../../src/channelManager.ts"],"names":[],"mappings":";;AAAA,wDAAiD;AAKjD,IAAI,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEjC,MAAM,cAAc;IAGlB;QAFA,aAAQ,GAA+B,EAAE,CAAC;QAGxC,4BAA4B;QAC5B,IAAI,OAAO,GAAgB,IAAI,qBAAW,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,aAAa,CAAC,IAAS;QACrB,IAAI,aAAa,GAAgC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClF,IAAI,OAA+B,CAAC;QAEpC,IAAI,aAAa,EAAE;YACjB,OAAO,GAAG,aAAa,CAAC;YACxB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;SAChE;aAAM;YACL,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,qCAAqC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;SAC1E;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,aAAa,CAAC,UAAkB;QAC9B,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,OAAO,CAAC,EAAE,IAAI,UAAU,EAAE;gBAC5B,OAAO,OAAO,CAAC;aAChB;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,MAA4B,EAAE,UAAkB;QACjE,IAAI,OAAO,GAAgC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAE1E,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC1B,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,CAAC;SAC9B;aAAM;YACL,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,UAAU,kBAAkB,CAAC,CAAC;YACvE,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,UAAU,kBAAkB,EAAC,CAAC;SACzF;IACH,CAAC;IAED,mBAAmB,CAAC,IAAS;QAC3B,IAAI;YACF,IAAI,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;YAC/E,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,MAAM,iBAAiB,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;YAC7G,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAClC;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,OAAO,IAAI,qBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACtC;IACH,CAAC;CACF;AAAA,CAAC;AAEF,kBAAe,cAAc,CAAC;AAE9B,8GAA8G"} {"version":3,"file":"channelManager.js","sourceRoot":"","sources":["../../src/channelManager.ts"],"names":[],"mappings":"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"}

View File

@ -26,6 +26,17 @@ class ChannelBase {
} }
return null; return null;
} }
removeClient(id) {
var index = 0;
for (let client of this.clients) {
if (client.id == id) {
this.clients.splice(index, 1);
return true;
}
index++;
}
return false;
}
broadcastMessage(from, message) { broadcastMessage(from, message) {
for (let client of this.clients) { for (let client of this.clients) {
if (client != from) { if (client != from) {

View File

@ -1 +1 @@
{"version":3,"file":"channelBase.js","sourceRoot":"","sources":["../../../src/channels/channelBase.ts"],"names":[],"mappings":";;AAGA,IAAI,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAElC,MAAM,WAAW;IAIf,YAAY,EAAU;QAFtB,YAAO,GAA6B,EAAE,CAAC;QAGrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAC,SAAS,EAAE,EAAE,EAAC,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,MAA4B;QACpC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAC,CAAC,CAAC;YACnG,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,iCAAiC,EAAC,CAAC;SAC3E;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAC,CAAC,CAAC;YAC5F,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAC,CAAC;SACzD;IACH,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;gBACnB,OAAO,MAAM,CAAC;aACf;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,IAA+B,EAAE,OAAe;QAC/D,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;aACrE;iBAAM;gBACL,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,EAAE,KAAK,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;aACxF;SACF;QAED,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,4BAA4B,EAAC,CAAC;IACxE,CAAC;CACF;AAAA,CAAC;AAEF,kBAAe,WAAW,CAAC"} {"version":3,"file":"channelBase.js","sourceRoot":"","sources":["../../../src/channels/channelBase.ts"],"names":[],"mappings":";;AAGA,IAAI,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAElC,MAAM,WAAW;IAIf,YAAY,EAAU;QAFtB,YAAO,GAA6B,EAAE,CAAC;QAGrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAC,SAAS,EAAE,EAAE,EAAC,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,MAA4B;QACpC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAC,CAAC,CAAC;YACnG,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,iCAAiC,EAAC,CAAC;SAC3E;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAC,CAAC,CAAC;YAC5F,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAC,CAAC;SACzD;IACH,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;gBACnB,OAAO,MAAM,CAAC;aACf;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,IAAI,KAAK,GAAW,CAAC,CAAC;QAEtB,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;gBACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC9B,OAAO,IAAI,CAAC;aACb;YAED,KAAK,EAAE,CAAC;SACT;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,IAA+B,EAAE,OAAe;QAC/D,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;aACrE;iBAAM;gBACL,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,EAAE,KAAK,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;aACxF;SACF;QAED,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,4BAA4B,EAAC,CAAC;IACxE,CAAC;CACF;AAAA,CAAC;AAEF,kBAAe,WAAW,CAAC"}

View File

@ -34,5 +34,13 @@ describe('ChannelBase', function () {
var result = channel.broadcastMessage(client, 'test message'); var result = channel.broadcastMessage(client, 'test message');
expect(result.status).to.be.equal('success'); expect(result.status).to.be.equal('success');
}); });
it('should be able to remove client from channel', function () {
var result = channel.removeClient(client.id);
expect(result).to.be.equal(true);
});
it('should not be able to remove client that doesnn\'t exist from channel', function () {
var result = channel.removeClient(126);
expect(result).to.be.equal(false);
});
}); });
//# sourceMappingURL=channelBase.spec.js.map //# sourceMappingURL=channelBase.spec.js.map

View File

@ -1 +1 @@
{"version":3,"file":"channelBase.spec.js","sourceRoot":"","sources":["../../../src/test/channelBase.spec.ts"],"names":[],"mappings":";;AAAA,yDAAkD;AAClD,sDAA+C;AAE/C,IAAI,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC;AACzC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACpC,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC7B,IAAI,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;AAClD,IAAI,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAEnC,IAAI,IAAI,GAAW,cAAc,CAAC;AAClC,IAAI,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;AACrC,IAAI,OAAoB,CAAC;AACzB,IAAI,IAAI,GAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;AAChH,IAAI,MAAM,GAAe,IAAI,oBAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAExD,QAAQ,CAAC,aAAa,EAAE;IACtB,EAAE,CAAC,sCAAsC,EAAE;QACzC,OAAO,GAAG,IAAI,qBAAW,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE;QACnC,IAAI,MAAM,GAAQ,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE;QACnE,IAAI,MAAM,GAAQ,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE;QACzB,IAAI,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE;QAC3C,IAAI,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} {"version":3,"file":"channelBase.spec.js","sourceRoot":"","sources":["../../../src/test/channelBase.spec.ts"],"names":[],"mappings":"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"}

View File

@ -43,5 +43,17 @@ describe('ChannelManager', function () {
var result = channelManager.createByChannelType(data2); var result = channelManager.createByChannelType(data2);
expect(result.id).to.be.equal('test channel 2'); expect(result.id).to.be.equal('test channel 2');
}); });
it('should remove client from channel', function () {
var result = channelManager.removeClientFromChannel(client.id, 'test channel');
expect(result).to.be.equal(true);
});
it('should be unable to remove a client that doesn\'t exit from channel', function () {
var result = channelManager.removeClientFromChannel(126, 'test channel');
expect(result).to.be.equal(false);
});
it('should be unable to remove a client from a channel that doesn\'t exist', function () {
var result = channelManager.removeClientFromChannel(client.id, 'test channel 3');
expect(result).to.be.equal(false);
});
}); });
//# sourceMappingURL=channelManager.spec.js.map //# sourceMappingURL=channelManager.spec.js.map

View File

@ -1 +1 @@
{"version":3,"file":"channelManager.spec.js","sourceRoot":"","sources":["../../../src/test/channelManager.spec.ts"],"names":[],"mappings":"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"} {"version":3,"file":"channelManager.spec.js","sourceRoot":"","sources":["../../../src/test/channelManager.spec.ts"],"names":[],"mappings":"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"}

View File

@ -1,2 +1,26 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const clientBase_1 = require("../clients/clientBase");
var expect = require('chai').expect;
var assert = require('chai').assert;
var sinon = require('sinon');
var name = 'test channel';
var data = { 'client': 'test', 'client_type': 'site', 'user_id': 125, 'user_type': 'user', 'channel': name };
var WebSocketClient = require('websocket').client;
var wsClient = new WebSocketClient();
var client = new clientBase_1.default(data, wsClient);
describe('ClientBase', function () {
it('should get client data', function () {
var result = client.getData();
expect(result.user_id).to.be.equal(125);
});
it('should get client type', function () {
var result = client.clientType();
expect(result).to.be.equal('test');
});
it('should get client object type', function () {
var result = client.type();
expect(result).to.be.equal('site');
});
});
//# sourceMappingURL=clientBase.spec.js.map //# sourceMappingURL=clientBase.spec.js.map

View File

@ -1 +1 @@
{"version":3,"file":"clientBase.spec.js","sourceRoot":"","sources":["../../../src/test/clientBase.spec.ts"],"names":[],"mappings":""} {"version":3,"file":"clientBase.spec.js","sourceRoot":"","sources":["../../../src/test/clientBase.spec.ts"],"names":[],"mappings":";;AACA,sDAA+C;AAE/C,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACpC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACpC,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7B,IAAI,IAAI,GAAW,cAAc,CAAC;AAClC,IAAI,IAAI,GAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;AAChH,IAAI,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;AAClD,IAAI,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;AACrC,IAAI,MAAM,GAAe,IAAI,oBAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAExD,QAAQ,CAAC,YAAY,EAAE;IACrB,EAAE,CAAC,wBAAwB,EAAE;QAC3B,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE;QAC3B,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE;QAClC,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}

View File

@ -38,3 +38,130 @@
{"message":"client added to client manager: 125","level":"info","timestamp":"2019-03-14T14:13:06.741Z"} {"message":"client added to client manager: 125","level":"info","timestamp":"2019-03-14T14:13:06.741Z"}
{"message":"attempting to create client of type mhs, client id: 125...","level":"info","timestamp":"2019-03-14T14:13:06.743Z"} {"message":"attempting to create client of type mhs, client id: 125...","level":"info","timestamp":"2019-03-14T14:13:06.743Z"}
{"data":{"client":"mhs","client_type":"site","user_id":125,"user_type":"user","channel":"test channel"},"level":"info","message":"MHS Client Created","timestamp":"2019-03-14T14:13:06.743Z"} {"data":{"client":"mhs","client_type":"site","user_id":125,"user_type":"user","channel":"test channel"},"level":"info","message":"MHS Client Created","timestamp":"2019-03-14T14:13:06.743Z"}
{"channelId":"default","level":"info","message":"Channel Created","timestamp":"2019-03-14T14:28:29.773Z"}
{"message":"Braid v0.7.1 is running!\n","level":"info","timestamp":"2019-03-14T14:28:29.783Z"}
{"message":"Client Connected: 125","level":"info","timestamp":"2019-03-14T14:29:18.433Z"}
{"message":"attempting to create channel of type mhs, channel id: mhs_1239...","level":"info","timestamp":"2019-03-14T14:29:18.445Z"}
{"channelId":"mhs_1239","level":"info","message":"Channel Created","timestamp":"2019-03-14T14:29:18.446Z"}
{"message":"Added channel to channel manager: mhs_1239","level":"info","timestamp":"2019-03-14T14:29:18.446Z"}
{"message":"attempting to create client of type mhs, client id: 125...","level":"info","timestamp":"2019-03-14T14:29:18.448Z"}
{"data":{"client":"mhs","client_type":"site","user_type":"user","user_id":125,"channel":"mhs_1239"},"level":"info","message":"MHS Client Created","timestamp":"2019-03-14T14:29:18.449Z"}
{"message":"client added to client manager: 125","level":"info","timestamp":"2019-03-14T14:29:18.449Z"}
{"channelId":"mhs_1239","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T14:29:18.449Z"}
{"message":"starting broadcast on channel mhs_1239: this is s1","level":"info","timestamp":"2019-03-14T14:29:29.556Z"}
{"message":"client is same as sender: 125 - this is s1","level":"info","timestamp":"2019-03-14T14:29:29.557Z"}
{"message":"broadcast complete on channel mhs_1239: this is s1","level":"info","timestamp":"2019-03-14T14:29:29.557Z"}
{"channelId":"default","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:52:15.013Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:52:15.028Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T17:52:15.030Z"}
{"message":"client is same as sender: 125 - test message","level":"info","timestamp":"2019-03-14T17:52:15.031Z"}
{"message":"creating base channel: test channel","level":"info","timestamp":"2019-03-14T17:52:15.032Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:52:15.032Z"}
{"message":"Added channel to channel manager: test channel","level":"info","timestamp":"2019-03-14T17:52:15.032Z"}
{"message":"Channel already exists: test channel","level":"info","timestamp":"2019-03-14T17:52:15.033Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T17:52:15.034Z"}
{"message":"channel with id no channel does not exist.","level":"info","timestamp":"2019-03-14T17:52:15.034Z"}
{"message":"attempting to create channel of type mhs, channel id: test channel 2...","level":"info","timestamp":"2019-03-14T17:52:15.035Z"}
{"channelId":"test channel 2","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:52:15.035Z"}
{"message":"creating base client: 125","level":"info","timestamp":"2019-03-14T17:52:15.037Z"}
{"message":"client added to client manager: 125","level":"info","timestamp":"2019-03-14T17:52:15.038Z"}
{"message":"attempting to create client of type mhs, client id: 125...","level":"info","timestamp":"2019-03-14T17:52:15.039Z"}
{"data":{"client":"mhs","client_type":"site","user_id":125,"user_type":"user","channel":"test channel"},"level":"info","message":"MHS Client Created","timestamp":"2019-03-14T17:52:15.039Z"}
{"channelId":"default","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:54:44.292Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:54:44.303Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T17:54:44.305Z"}
{"message":"client is same as sender: 125 - test message","level":"info","timestamp":"2019-03-14T17:54:44.306Z"}
{"message":"creating base channel: test channel","level":"info","timestamp":"2019-03-14T17:54:44.307Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:54:44.307Z"}
{"message":"Added channel to channel manager: test channel","level":"info","timestamp":"2019-03-14T17:54:44.307Z"}
{"message":"Channel already exists: test channel","level":"info","timestamp":"2019-03-14T17:54:44.308Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T17:54:44.309Z"}
{"message":"channel with id no channel does not exist.","level":"info","timestamp":"2019-03-14T17:54:44.309Z"}
{"message":"attempting to create channel of type mhs, channel id: test channel 2...","level":"info","timestamp":"2019-03-14T17:54:44.310Z"}
{"channelId":"test channel 2","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:54:44.310Z"}
{"message":"creating base client: 125","level":"info","timestamp":"2019-03-14T17:54:44.314Z"}
{"message":"client added to client manager: 125","level":"info","timestamp":"2019-03-14T17:54:44.315Z"}
{"message":"attempting to create client of type mhs, client id: 125...","level":"info","timestamp":"2019-03-14T17:54:44.318Z"}
{"data":{"client":"mhs","client_type":"site","user_id":125,"user_type":"user","channel":"test channel"},"level":"info","message":"MHS Client Created","timestamp":"2019-03-14T17:54:44.318Z"}
{"channelId":"default","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:55:07.632Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:55:07.645Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T17:55:07.647Z"}
{"message":"client is same as sender: 125 - test message","level":"info","timestamp":"2019-03-14T17:55:07.649Z"}
{"message":"creating base channel: test channel","level":"info","timestamp":"2019-03-14T17:55:07.650Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:55:07.650Z"}
{"message":"Added channel to channel manager: test channel","level":"info","timestamp":"2019-03-14T17:55:07.650Z"}
{"message":"Channel already exists: test channel","level":"info","timestamp":"2019-03-14T17:55:07.651Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T17:55:07.651Z"}
{"message":"channel with id no channel does not exist.","level":"info","timestamp":"2019-03-14T17:55:07.652Z"}
{"message":"attempting to create channel of type mhs, channel id: test channel 2...","level":"info","timestamp":"2019-03-14T17:55:07.652Z"}
{"channelId":"test channel 2","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:55:07.652Z"}
{"message":"creating base client: 125","level":"info","timestamp":"2019-03-14T17:55:07.654Z"}
{"message":"client added to client manager: 125","level":"info","timestamp":"2019-03-14T17:55:07.654Z"}
{"message":"attempting to create client of type mhs, client id: 125...","level":"info","timestamp":"2019-03-14T17:55:07.656Z"}
{"data":{"client":"mhs","client_type":"site","user_id":125,"user_type":"user","channel":"test channel"},"level":"info","message":"MHS Client Created","timestamp":"2019-03-14T17:55:07.656Z"}
{"channelId":"default","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:57:28.441Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:57:28.452Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T17:57:28.454Z"}
{"message":"client is same as sender: 125 - test message","level":"info","timestamp":"2019-03-14T17:57:28.455Z"}
{"message":"creating base channel: test channel","level":"info","timestamp":"2019-03-14T17:57:28.456Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:57:28.456Z"}
{"message":"Added channel to channel manager: test channel","level":"info","timestamp":"2019-03-14T17:57:28.456Z"}
{"message":"Channel already exists: test channel","level":"info","timestamp":"2019-03-14T17:57:28.457Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T17:57:28.458Z"}
{"message":"channel with id no channel does not exist.","level":"info","timestamp":"2019-03-14T17:57:28.458Z"}
{"message":"attempting to create channel of type mhs, channel id: test channel 2...","level":"info","timestamp":"2019-03-14T17:57:28.459Z"}
{"channelId":"test channel 2","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:57:28.459Z"}
{"message":"creating base client: 125","level":"info","timestamp":"2019-03-14T17:57:28.460Z"}
{"message":"client added to client manager: 125","level":"info","timestamp":"2019-03-14T17:57:28.460Z"}
{"message":"attempting to create client of type mhs, client id: 125...","level":"info","timestamp":"2019-03-14T17:57:28.462Z"}
{"data":{"client":"mhs","client_type":"site","user_id":125,"user_type":"user","channel":"test channel"},"level":"info","message":"MHS Client Created","timestamp":"2019-03-14T17:57:28.462Z"}
{"channelId":"default","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:57:39.305Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:57:39.316Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T17:57:39.318Z"}
{"message":"client is same as sender: 125 - test message","level":"info","timestamp":"2019-03-14T17:57:39.319Z"}
{"message":"creating base channel: test channel","level":"info","timestamp":"2019-03-14T17:57:39.320Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:57:39.320Z"}
{"message":"Added channel to channel manager: test channel","level":"info","timestamp":"2019-03-14T17:57:39.320Z"}
{"message":"Channel already exists: test channel","level":"info","timestamp":"2019-03-14T17:57:39.321Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T17:57:39.322Z"}
{"message":"channel with id no channel does not exist.","level":"info","timestamp":"2019-03-14T17:57:39.322Z"}
{"message":"attempting to create channel of type mhs, channel id: test channel 2...","level":"info","timestamp":"2019-03-14T17:57:39.323Z"}
{"channelId":"test channel 2","level":"info","message":"Channel Created","timestamp":"2019-03-14T17:57:39.323Z"}
{"message":"creating base client: 125","level":"info","timestamp":"2019-03-14T17:57:39.324Z"}
{"message":"client added to client manager: 125","level":"info","timestamp":"2019-03-14T17:57:39.324Z"}
{"message":"attempting to create client of type mhs, client id: 125...","level":"info","timestamp":"2019-03-14T17:57:39.326Z"}
{"data":{"client":"mhs","client_type":"site","user_id":125,"user_type":"user","channel":"test channel"},"level":"info","message":"MHS Client Created","timestamp":"2019-03-14T17:57:39.327Z"}
{"channelId":"default","level":"info","message":"Channel Created","timestamp":"2019-03-14T18:12:48.664Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T18:12:48.677Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T18:12:48.679Z"}
{"message":"client is same as sender: 125 - test message","level":"info","timestamp":"2019-03-14T18:12:48.680Z"}
{"message":"creating base channel: test channel","level":"info","timestamp":"2019-03-14T18:12:48.682Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T18:12:48.682Z"}
{"message":"Added channel to channel manager: test channel","level":"info","timestamp":"2019-03-14T18:12:48.682Z"}
{"message":"Channel already exists: test channel","level":"info","timestamp":"2019-03-14T18:12:48.682Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T18:12:48.683Z"}
{"message":"channel with id no channel does not exist.","level":"info","timestamp":"2019-03-14T18:12:48.683Z"}
{"message":"attempting to create channel of type mhs, channel id: test channel 2...","level":"info","timestamp":"2019-03-14T18:12:48.684Z"}
{"channelId":"test channel 2","level":"info","message":"Channel Created","timestamp":"2019-03-14T18:12:48.684Z"}
{"message":"client removed from channel - channel: test channel, client: 125","level":"info","timestamp":"2019-03-14T18:12:48.685Z"}
{"message":"creating base client: 125","level":"info","timestamp":"2019-03-14T18:12:48.687Z"}
{"message":"client added to client manager: 125","level":"info","timestamp":"2019-03-14T18:12:48.687Z"}
{"message":"attempting to create client of type mhs, client id: 125...","level":"info","timestamp":"2019-03-14T18:12:48.688Z"}
{"data":{"client":"mhs","client_type":"site","user_id":125,"user_type":"user","channel":"test channel"},"level":"info","message":"MHS Client Created","timestamp":"2019-03-14T18:12:48.689Z"}
{"channelId":"default","level":"info","message":"Channel Created","timestamp":"2019-03-14T18:16:35.694Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T18:16:35.705Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T18:16:35.707Z"}
{"message":"client is same as sender: 125 - test message","level":"info","timestamp":"2019-03-14T18:16:35.708Z"}
{"message":"creating base channel: test channel","level":"info","timestamp":"2019-03-14T18:16:35.710Z"}
{"channelId":"test channel","level":"info","message":"Channel Created","timestamp":"2019-03-14T18:16:35.710Z"}
{"message":"Added channel to channel manager: test channel","level":"info","timestamp":"2019-03-14T18:16:35.710Z"}
{"message":"Channel already exists: test channel","level":"info","timestamp":"2019-03-14T18:16:35.711Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Added client to channel","timestamp":"2019-03-14T18:16:35.711Z"}
{"message":"channel with id no channel does not exist.","level":"info","timestamp":"2019-03-14T18:16:35.712Z"}
{"message":"attempting to create channel of type mhs, channel id: test channel 2...","level":"info","timestamp":"2019-03-14T18:16:35.712Z"}
{"channelId":"test channel 2","level":"info","message":"Channel Created","timestamp":"2019-03-14T18:16:35.712Z"}
{"message":"client removed from channel - channel: test channel, client: 125","level":"info","timestamp":"2019-03-14T18:16:35.713Z"}
{"message":"creating base client: 125","level":"info","timestamp":"2019-03-14T18:16:35.714Z"}
{"message":"client added to client manager: 125","level":"info","timestamp":"2019-03-14T18:16:35.715Z"}
{"message":"attempting to create client of type mhs, client id: 125...","level":"info","timestamp":"2019-03-14T18:16:35.716Z"}
{"data":{"client":"mhs","client_type":"site","user_id":125,"user_type":"user","channel":"test channel"},"level":"info","message":"MHS Client Created","timestamp":"2019-03-14T18:16:35.716Z"}

View File

@ -4,3 +4,24 @@
{"channelId":"test channel","clientId":125,"level":"info","message":"Client already exits in channel","timestamp":"2019-03-14T14:13:06.734Z"} {"channelId":"test channel","clientId":125,"level":"info","message":"Client already exits in channel","timestamp":"2019-03-14T14:13:06.734Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T14:13:06.736Z"} {"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T14:13:06.736Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T14:13:06.741Z"} {"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T14:13:06.741Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Client already exits in channel","timestamp":"2019-03-14T17:52:15.030Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T17:52:15.032Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T17:52:15.037Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Client already exits in channel","timestamp":"2019-03-14T17:54:44.305Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T17:54:44.307Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T17:54:44.314Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Client already exits in channel","timestamp":"2019-03-14T17:55:07.648Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T17:55:07.650Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T17:55:07.654Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Client already exits in channel","timestamp":"2019-03-14T17:57:28.454Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T17:57:28.456Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T17:57:28.460Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Client already exits in channel","timestamp":"2019-03-14T17:57:39.318Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T17:57:39.320Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T17:57:39.324Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Client already exits in channel","timestamp":"2019-03-14T18:12:48.680Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T18:12:48.681Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T18:12:48.686Z"}
{"channelId":"test channel","clientId":125,"level":"info","message":"Client already exits in channel","timestamp":"2019-03-14T18:16:35.707Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T18:16:35.710Z"}
{"code":"MODULE_NOT_FOUND","level":"info","timestamp":"2019-03-14T18:16:35.714Z"}

View File

@ -64,6 +64,27 @@ class ChannelManager {
return new ChannelBase(data.channel); return new ChannelBase(data.channel);
} }
} }
removeClientFromChannel(client_id: number, channel_id: string) {
var index: number = 0;
for (let channel of this.channels) {
if (channel.id == channel_id) {
this.channels.splice(index, 1);
if (channel.removeClient(client_id)) {
logger.accessLog.info(`client removed from channel - channel: ${channel_id}, client: ${client_id}`);
return true;
} else {
logger.errorLog.info(`client not removed from channel, or doesn't exist in channel - channel: ${channel_id}, client: ${client_id}`);
return false
}
}
index++;
}
return false;
}
}; };
export default ChannelManager; export default ChannelManager;

View File

@ -33,6 +33,21 @@ class ChannelBase {
return null; return null;
} }
removeClient(id: number) {
var index: number = 0;
for (let client of this.clients) {
if (client.id == id) {
this.clients.splice(index, 1);
return true;
}
index++;
}
return false;
}
broadcastMessage(from: ClientBase|MHSClient|null, message: string) { broadcastMessage(from: ClientBase|MHSClient|null, message: string) {
for (let client of this.clients) { for (let client of this.clients) {
if (client != from) { if (client != from) {

View File

@ -39,4 +39,14 @@ describe('ChannelBase', function () {
var result = channel.broadcastMessage(client, 'test message'); var result = channel.broadcastMessage(client, 'test message');
expect(result.status).to.be.equal('success'); expect(result.status).to.be.equal('success');
}); });
it('should be able to remove client from channel', function () {
var result = channel.removeClient(client.id);
expect(result).to.be.equal(true);
});
it('should not be able to remove client that doesnn\'t exist from channel', function () {
var result = channel.removeClient(126);
expect(result).to.be.equal(false);
});
}); });

View File

@ -55,4 +55,19 @@ describe('ChannelManager', function () {
var result = channelManager.createByChannelType(data2); var result = channelManager.createByChannelType(data2);
expect(result.id).to.be.equal('test channel 2'); expect(result.id).to.be.equal('test channel 2');
}); });
it('should remove client from channel', function () {
var result = channelManager.removeClientFromChannel(client.id , 'test channel');
expect(result).to.be.equal(true);
});
it('should be unable to remove a client that doesn\'t exit from channel', function () {
var result = channelManager.removeClientFromChannel(126 , 'test channel');
expect(result).to.be.equal(false);
});
it('should be unable to remove a client from a channel that doesn\'t exist', function () {
var result = channelManager.removeClientFromChannel(client.id , 'test channel 3');
expect(result).to.be.equal(false);
});
}); });

View File

@ -0,0 +1,29 @@
import * as WebSocket from 'ws';
import ClientBase from '../clients/clientBase';
var expect = require('chai').expect;
var assert = require('chai').assert;
var sinon = require('sinon');
var name: string = 'test channel';
var data: any = { 'client': 'test', 'client_type':'site', 'user_id': 125, 'user_type': 'user', 'channel': name }
var WebSocketClient = require('websocket').client;
var wsClient = new WebSocketClient();
var client: ClientBase = new ClientBase(data, wsClient);
describe('ClientBase', function () {
it('should get client data', function () {
var result = client.getData();
expect(result.user_id).to.be.equal(125);
});
it('should get client type', function () {
var result = client.clientType();
expect(result).to.be.equal('test');
});
it('should get client object type', function () {
var result = client.type();
expect(result).to.be.equal('site');
});
});