From 40691d9815664d89b5c6bb7c5970cb6cd0878e29 Mon Sep 17 00:00:00 2001 From: Josh Burman Date: Thu, 14 Mar 2019 14:17:08 -0400 Subject: [PATCH] more tests, added ability to remove clients from a channel --- dist/server/channelManager.js | 18 +++ dist/server/channelManager.js.map | 2 +- dist/server/channels/channelBase.js | 11 ++ dist/server/channels/channelBase.js.map | 2 +- dist/server/test/channelBase.spec.js | 8 ++ dist/server/test/channelBase.spec.js.map | 2 +- dist/server/test/channelManager.spec.js | 12 ++ dist/server/test/channelManager.spec.js.map | 2 +- dist/server/test/clientBase.spec.js | 24 ++++ dist/server/test/clientBase.spec.js.map | 2 +- logs/access.log | 127 ++++++++++++++++++++ logs/errors.log | 21 ++++ src/channelManager.ts | 21 ++++ src/channels/channelBase.ts | 15 +++ src/test/channelBase.spec.ts | 10 ++ src/test/channelManager.spec.ts | 15 +++ src/test/clientBase.spec.ts | 29 +++++ 17 files changed, 316 insertions(+), 5 deletions(-) diff --git a/dist/server/channelManager.js b/dist/server/channelManager.js index 286e32f..8cbc892 100644 --- a/dist/server/channelManager.js +++ b/dist/server/channelManager.js @@ -55,6 +55,24 @@ class ChannelManager { 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; diff --git a/dist/server/channelManager.js.map b/dist/server/channelManager.js.map index 0ed03cb..14792e0 100644 --- a/dist/server/channelManager.js.map +++ b/dist/server/channelManager.js.map @@ -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"} \ No newline at end of file +{"version":3,"file":"channelManager.js","sourceRoot":"","sources":["../../src/channelManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/server/channels/channelBase.js b/dist/server/channels/channelBase.js index ec0ce5c..264d442 100644 --- a/dist/server/channels/channelBase.js +++ b/dist/server/channels/channelBase.js @@ -26,6 +26,17 @@ class ChannelBase { } 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) { for (let client of this.clients) { if (client != from) { diff --git a/dist/server/channels/channelBase.js.map b/dist/server/channels/channelBase.js.map index bc4e4e6..cd75307 100644 --- a/dist/server/channels/channelBase.js.map +++ b/dist/server/channels/channelBase.js.map @@ -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"} \ No newline at end of file +{"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"} \ No newline at end of file diff --git a/dist/server/test/channelBase.spec.js b/dist/server/test/channelBase.spec.js index 5919f3d..256b61c 100644 --- a/dist/server/test/channelBase.spec.js +++ b/dist/server/test/channelBase.spec.js @@ -34,5 +34,13 @@ describe('ChannelBase', function () { var result = channel.broadcastMessage(client, 'test message'); 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 \ No newline at end of file diff --git a/dist/server/test/channelBase.spec.js.map b/dist/server/test/channelBase.spec.js.map index 7892bd8..58baa7c 100644 --- a/dist/server/test/channelBase.spec.js.map +++ b/dist/server/test/channelBase.spec.js.map @@ -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"} \ No newline at end of file +{"version":3,"file":"channelBase.spec.js","sourceRoot":"","sources":["../../../src/test/channelBase.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/server/test/channelManager.spec.js b/dist/server/test/channelManager.spec.js index 1345c61..ec48a01 100644 --- a/dist/server/test/channelManager.spec.js +++ b/dist/server/test/channelManager.spec.js @@ -43,5 +43,17 @@ describe('ChannelManager', function () { var result = channelManager.createByChannelType(data2); 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 \ No newline at end of file diff --git a/dist/server/test/channelManager.spec.js.map b/dist/server/test/channelManager.spec.js.map index 1070986..9dad994 100644 --- a/dist/server/test/channelManager.spec.js.map +++ b/dist/server/test/channelManager.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"channelManager.spec.js","sourceRoot":"","sources":["../../../src/test/channelManager.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"channelManager.spec.js","sourceRoot":"","sources":["../../../src/test/channelManager.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/server/test/clientBase.spec.js b/dist/server/test/clientBase.spec.js index d3e174e..bfc8eca 100644 --- a/dist/server/test/clientBase.spec.js +++ b/dist/server/test/clientBase.spec.js @@ -1,2 +1,26 @@ "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 \ No newline at end of file diff --git a/dist/server/test/clientBase.spec.js.map b/dist/server/test/clientBase.spec.js.map index 5dba6e2..3272813 100644 --- a/dist/server/test/clientBase.spec.js.map +++ b/dist/server/test/clientBase.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"clientBase.spec.js","sourceRoot":"","sources":["../../../src/test/clientBase.spec.ts"],"names":[],"mappings":""} \ No newline at end of file +{"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"} \ No newline at end of file diff --git a/logs/access.log b/logs/access.log index a2baf5a..0f37b37 100644 --- a/logs/access.log +++ b/logs/access.log @@ -38,3 +38,130 @@ {"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"} {"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"} diff --git a/logs/errors.log b/logs/errors.log index 38e6544..480e512 100644 --- a/logs/errors.log +++ b/logs/errors.log @@ -4,3 +4,24 @@ {"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.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"} diff --git a/src/channelManager.ts b/src/channelManager.ts index edcea89..365e8ef 100644 --- a/src/channelManager.ts +++ b/src/channelManager.ts @@ -64,6 +64,27 @@ class ChannelManager { 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; diff --git a/src/channels/channelBase.ts b/src/channels/channelBase.ts index a9580c9..14d0455 100644 --- a/src/channels/channelBase.ts +++ b/src/channels/channelBase.ts @@ -33,6 +33,21 @@ class ChannelBase { 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) { for (let client of this.clients) { if (client != from) { diff --git a/src/test/channelBase.spec.ts b/src/test/channelBase.spec.ts index 1ba4a21..0149664 100644 --- a/src/test/channelBase.spec.ts +++ b/src/test/channelBase.spec.ts @@ -39,4 +39,14 @@ describe('ChannelBase', function () { var result = channel.broadcastMessage(client, 'test message'); 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); + }); }); diff --git a/src/test/channelManager.spec.ts b/src/test/channelManager.spec.ts index 97fa9f1..e54898f 100644 --- a/src/test/channelManager.spec.ts +++ b/src/test/channelManager.spec.ts @@ -55,4 +55,19 @@ describe('ChannelManager', function () { var result = channelManager.createByChannelType(data2); 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); + }); }); diff --git a/src/test/clientBase.spec.ts b/src/test/clientBase.spec.ts index e69de29..e74a8dc 100644 --- a/src/test/clientBase.spec.ts +++ b/src/test/clientBase.spec.ts @@ -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'); + }); +});