@webex/plugin-meetings 3.0.0-beta.31 → 3.0.0-beta.310
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -8
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +342 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +94 -15
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +709 -35
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/utils.js +45 -1
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/errors/no-meeting-info.js +51 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/reclaim-host-role-errors.js +158 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/webex-errors.js +48 -7
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +5 -1
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +24 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +5 -11
- package/dist/config.js.map +1 -1
- package/dist/constants.js +233 -29
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +14 -2
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +109 -15
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +309 -18
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +112 -1
- package/dist/index.js.map +1 -1
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +366 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +91 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +383 -62
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +7 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +57 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +249 -72
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +89 -14
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +61 -116
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +73 -124
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +82 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +3777 -2929
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +292 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +230 -124
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +260 -196
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +601 -417
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +73 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +192 -51
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/util.js +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +36 -36
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +39 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +415 -115
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +2 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +72 -6
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +58 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +25 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +132 -25
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +10 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +102 -6
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +106 -38
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +326 -232
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +13 -5
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +1 -468
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +238 -49
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +29 -16
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +39 -36
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +44 -18
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +60 -3
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +209 -59
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +233 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/reachability/index.js +225 -59
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +17 -8
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +201 -156
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/index.js +21 -2
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +9 -8
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js +62 -32
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +112 -97
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +95 -36
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +12 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +117 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/index.js +86 -78
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +11 -10
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +42 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +117 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +8 -0
- package/dist/types/breakouts/utils.d.ts +14 -0
- package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/types/common/errors/webex-errors.d.ts +25 -1
- package/dist/types/common/logs/request.d.ts +2 -0
- package/dist/types/common/queue.d.ts +9 -7
- package/dist/types/config.d.ts +1 -7
- package/dist/types/constants.d.ts +194 -24
- package/dist/types/controls-options-manager/enums.d.ts +11 -1
- package/dist/types/controls-options-manager/index.d.ts +17 -1
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -7
- package/dist/types/index.d.ts +6 -4
- package/dist/types/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -0
- package/dist/types/locus-info/index.d.ts +57 -4
- package/dist/types/locus-info/parser.d.ts +67 -6
- package/dist/types/media/index.d.ts +2 -0
- package/dist/types/media/properties.d.ts +34 -48
- package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
- package/dist/types/meeting/index.d.ts +463 -510
- package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/types/meeting/muteState.d.ts +99 -23
- package/dist/types/meeting/request.d.ts +72 -43
- package/dist/types/meeting/util.d.ts +101 -1
- package/dist/types/meeting-info/index.d.ts +13 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
- package/dist/types/meetings/collection.d.ts +17 -0
- package/dist/types/meetings/index.d.ts +98 -20
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/member/index.d.ts +14 -0
- package/dist/types/member/types.d.ts +32 -0
- package/dist/types/members/collection.d.ts +5 -0
- package/dist/types/members/index.d.ts +35 -2
- package/dist/types/members/request.d.ts +73 -9
- package/dist/types/members/types.d.ts +25 -0
- package/dist/types/members/util.d.ts +214 -1
- package/dist/types/metrics/constants.d.ts +12 -4
- package/dist/types/metrics/index.d.ts +4 -119
- package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
- package/dist/types/multistream/receiveSlot.d.ts +13 -11
- package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
- package/dist/types/multistream/remoteMedia.d.ts +8 -29
- package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
- package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
- package/dist/types/multistream/sendSlotManager.d.ts +61 -0
- package/dist/types/reachability/index.d.ts +61 -7
- package/dist/types/reachability/request.d.ts +7 -3
- package/dist/types/reconnection-manager/index.d.ts +9 -0
- package/dist/types/recording-controller/index.d.ts +15 -1
- package/dist/types/recording-controller/util.d.ts +5 -4
- package/dist/types/roap/index.d.ts +2 -1
- package/dist/types/roap/request.d.ts +15 -11
- package/dist/types/roap/turnDiscovery.d.ts +21 -3
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +47 -0
- package/dist/types/statsAnalyzer/index.d.ts +7 -1
- package/dist/types/webinar/collection.d.ts +16 -0
- package/dist/types/webinar/index.d.ts +5 -0
- package/dist/webinar/collection.js +44 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.js +69 -0
- package/dist/webinar/index.js.map +1 -0
- package/package.json +23 -20
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -0
- package/src/breakouts/README.md +42 -12
- package/src/breakouts/breakout.ts +67 -9
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +592 -20
- package/src/breakouts/utils.ts +42 -0
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/webex-errors.ts +44 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +5 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +4 -10
- package/src/constants.ts +221 -19
- package/src/controls-options-manager/enums.ts +12 -0
- package/src/controls-options-manager/index.ts +116 -21
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +294 -14
- package/src/index.ts +40 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +332 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +413 -59
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +64 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +102 -122
- package/src/media/properties.ts +87 -110
- package/src/meeting/in-meeting-actions.ts +163 -3
- package/src/meeting/index.ts +3132 -2541
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +229 -131
- package/src/meeting/request.ts +177 -121
- package/src/meeting/util.ts +588 -394
- package/src/meeting-info/index.ts +81 -8
- package/src/meeting-info/meeting-info-v2.ts +170 -14
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +23 -23
- package/src/meetings/collection.ts +33 -0
- package/src/meetings/index.ts +445 -123
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +80 -11
- package/src/member/index.ts +58 -0
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +141 -25
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +134 -8
- package/src/members/request.ts +97 -17
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +333 -240
- package/src/metrics/constants.ts +12 -4
- package/src/metrics/index.ts +1 -490
- package/src/multistream/mediaRequestManager.ts +289 -79
- package/src/multistream/receiveSlot.ts +31 -17
- package/src/multistream/receiveSlotManager.ts +34 -24
- package/src/multistream/remoteMedia.ts +27 -2
- package/src/multistream/remoteMediaGroup.ts +59 -0
- package/src/multistream/remoteMediaManager.ts +148 -30
- package/src/multistream/sendSlotManager.ts +170 -0
- package/src/reachability/index.ts +228 -37
- package/src/reachability/request.ts +17 -8
- package/src/reconnection-manager/index.ts +83 -56
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +63 -32
- package/src/roap/request.ts +100 -104
- package/src/roap/turnDiscovery.ts +48 -26
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +100 -0
- package/src/statsAnalyzer/index.ts +105 -91
- package/src/statsAnalyzer/mqaUtil.ts +13 -14
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +60 -3
- package/test/integration/spec/journey.js +320 -261
- package/test/integration/spec/space-meeting.js +76 -3
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +118 -28
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1395 -69
- package/test/unit/spec/breakouts/utils.js +52 -1
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +163 -0
- package/test/unit/spec/controls-options-manager/util.js +576 -60
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +589 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +316 -43
- package/test/unit/spec/locus-info/index.js +1304 -33
- package/test/unit/spec/locus-info/infoUtils.js +37 -15
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
- package/test/unit/spec/locus-info/parser.js +116 -35
- package/test/unit/spec/locus-info/selfConstant.js +27 -4
- package/test/unit/spec/locus-info/selfUtils.js +208 -17
- package/test/unit/spec/media/index.ts +104 -37
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
- package/test/unit/spec/meeting/index.js +5216 -1956
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +408 -208
- package/test/unit/spec/meeting/request.js +483 -49
- package/test/unit/spec/meeting/utils.js +679 -64
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +26 -0
- package/test/unit/spec/meetings/index.js +1011 -205
- package/test/unit/spec/meetings/utils.js +202 -2
- package/test/unit/spec/member/index.js +61 -6
- package/test/unit/spec/member/util.js +510 -34
- package/test/unit/spec/members/index.js +432 -1
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +210 -0
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
- package/test/unit/spec/multistream/receiveSlot.ts +28 -20
- package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
- package/test/unit/spec/multistream/remoteMedia.ts +30 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
- package/test/unit/spec/reachability/index.ts +549 -9
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reconnection-manager/index.js +85 -9
- package/test/unit/spec/recording-controller/index.js +294 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +178 -64
- package/test/unit/spec/roap/request.ts +203 -85
- package/test/unit/spec/roap/turnDiscovery.ts +82 -36
- package/test/unit/spec/rtcMetrics/index.ts +73 -0
- package/test/unit/spec/stats-analyzer/index.js +136 -2
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -52
- package/dist/meeting/effectsState.js +0 -262
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -299
- package/dist/metrics/config.js.map +0 -1
- package/dist/types/meeting/effectsState.d.ts +0 -42
- package/dist/types/metrics/config.d.ts +0 -178
- package/src/index.js +0 -16
- package/src/meeting/effectsState.ts +0 -211
- package/src/metrics/config.ts +0 -495
- package/test/unit/spec/meeting/effectsState.js +0 -285
|
@@ -14,6 +14,15 @@ import ParameterError from '@webex/plugin-meetings/src/common/errors/parameter';
|
|
|
14
14
|
import Meetings from '@webex/plugin-meetings';
|
|
15
15
|
import Members from '@webex/plugin-meetings/src/members';
|
|
16
16
|
import MembersUtil from '@webex/plugin-meetings/src/members/util';
|
|
17
|
+
import * as MembersRequestImport from '@webex/plugin-meetings/src/members/request';
|
|
18
|
+
import Trigger from '@webex/plugin-meetings/src/common/events/trigger-proxy';
|
|
19
|
+
import {EVENT_TRIGGERS} from '@webex/plugin-meetings/src/constants';
|
|
20
|
+
import {
|
|
21
|
+
ReclaimHostEmptyWrongKeyError,
|
|
22
|
+
ReclaimHostIsHostAlreadyError,
|
|
23
|
+
ReclaimHostNotAllowedError,
|
|
24
|
+
ReclaimHostNotSupportedError,
|
|
25
|
+
} from '../../../../src/common/errors/reclaim-host-role-errors';
|
|
17
26
|
|
|
18
27
|
const {assert} = chai;
|
|
19
28
|
|
|
@@ -79,6 +88,8 @@ describe('plugin-meetings', () => {
|
|
|
79
88
|
describe('members', () => {
|
|
80
89
|
const sandbox = sinon.createSandbox();
|
|
81
90
|
let createMembers;
|
|
91
|
+
let meeting;
|
|
92
|
+
let membersRequestSpy;
|
|
82
93
|
|
|
83
94
|
beforeEach(() => {
|
|
84
95
|
webex = new MockWebex({
|
|
@@ -104,13 +115,31 @@ describe('plugin-meetings', () => {
|
|
|
104
115
|
|
|
105
116
|
url1 = `https://example.com/${uuid.v4()}`;
|
|
106
117
|
|
|
107
|
-
|
|
118
|
+
membersRequestSpy = sinon.spy(MembersRequestImport, 'default');
|
|
119
|
+
|
|
120
|
+
meeting = {
|
|
121
|
+
request: sinon.mock().returns(Promise.resolve()),
|
|
122
|
+
locusInfo: {
|
|
123
|
+
sequence: {}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
createMembers = (options) => new Members({locusUrl: options.url, meeting}, {parent: webex});
|
|
108
128
|
});
|
|
109
129
|
|
|
110
130
|
afterEach(() => {
|
|
131
|
+
membersRequestSpy.restore();
|
|
111
132
|
sandbox.restore();
|
|
112
133
|
});
|
|
113
134
|
|
|
135
|
+
describe('constructor', () => {
|
|
136
|
+
it('passes the meeting to the MembersRequest', () => {
|
|
137
|
+
createMembers({});
|
|
138
|
+
|
|
139
|
+
assert.calledOnceWithExactly(membersRequestSpy, {meeting}, {parent: webex});
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
|
|
114
143
|
describe('#addMembers', () => {
|
|
115
144
|
it('should invoke isInvalidInvitee and generateAddMemberOptions from MembersUtil when addMember is called with valid params', async () => {
|
|
116
145
|
sandbox.spy(MembersUtil, 'isInvalidInvitee');
|
|
@@ -130,6 +159,128 @@ describe('plugin-meetings', () => {
|
|
|
130
159
|
});
|
|
131
160
|
});
|
|
132
161
|
|
|
162
|
+
describe('#admitMembers', () => {
|
|
163
|
+
let members;
|
|
164
|
+
beforeEach(() => {
|
|
165
|
+
members = createMembers({url: url1});
|
|
166
|
+
members.membersRequest.admitMember = sinon.stub().returns(Promise.resolve(true));
|
|
167
|
+
});
|
|
168
|
+
it('should return error if param memberIds is not provided', async () => {
|
|
169
|
+
let error;
|
|
170
|
+
await members.admitMembers().catch((e) => {
|
|
171
|
+
error = e;
|
|
172
|
+
});
|
|
173
|
+
assert.deepEqual(error, new ParameterError('No member ids provided to admit.'));
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
it('should call membersRequest.admitMember as expected', async () => {
|
|
177
|
+
await members.admitMembers(['uuid']);
|
|
178
|
+
const arg1 = members.membersRequest.admitMember.getCall(0).args[0];
|
|
179
|
+
assert.equal(arg1.sessionLocusUrls, undefined);
|
|
180
|
+
assert.equal(arg1.locusUrl.includes('https://example.com/'), true);
|
|
181
|
+
assert.deepEqual(arg1.memberIds, ['uuid']);
|
|
182
|
+
|
|
183
|
+
const sessionLocusUrls = {
|
|
184
|
+
authorizingLocusUrl: 'authorizingLocusUrl',
|
|
185
|
+
mainLocusUrl: 'mainLocusUrl',
|
|
186
|
+
};
|
|
187
|
+
await members.admitMembers(['uuid'], sessionLocusUrls);
|
|
188
|
+
const arg2 = members.membersRequest.admitMember.getCall(1).args[0];
|
|
189
|
+
assert.equal(arg2.sessionLocusUrls, sessionLocusUrls);
|
|
190
|
+
assert.equal(arg1.locusUrl.includes('https://example.com/'), true);
|
|
191
|
+
assert.deepEqual(arg1.memberIds, ['uuid']);
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
describe('#muteMember', () => {
|
|
196
|
+
const testMuteMember = async (mute, isAudio) => {
|
|
197
|
+
sandbox.spy(MembersUtil, 'generateMuteMemberOptions');
|
|
198
|
+
|
|
199
|
+
const locusUrl = 'locus-url';
|
|
200
|
+
const members = createMembers({url: locusUrl});
|
|
201
|
+
const {membersRequest} = members;
|
|
202
|
+
sandbox.spy(membersRequest, 'muteMember');
|
|
203
|
+
|
|
204
|
+
const memberId = 'bob';
|
|
205
|
+
|
|
206
|
+
await members.muteMember(memberId, mute, isAudio);
|
|
207
|
+
assert.calledOnce(MembersUtil.generateMuteMemberOptions);
|
|
208
|
+
assert.calledWith(
|
|
209
|
+
MembersUtil.generateMuteMemberOptions,
|
|
210
|
+
memberId,
|
|
211
|
+
mute,
|
|
212
|
+
members.locusUrl,
|
|
213
|
+
isAudio
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
assert.calledOnce(membersRequest.muteMember);
|
|
217
|
+
assert.calledWith(membersRequest.muteMember, {memberId, muted: mute, locusUrl, isAudio});
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
it('invokes expected functions when muteMember is called for mute=true, isAudio=true', async () => {
|
|
221
|
+
testMuteMember(true, true);
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
it('invokes expected functions when muteMember is called for mute=true, isAudio=false', async () => {
|
|
225
|
+
testMuteMember(true, false);
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
it('invokes expected functions when muteMember is called for mute=false, isAudio=true', async () => {
|
|
229
|
+
testMuteMember(false, true);
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
it('invokes expected functions when muteMember is called for mute=false, isAudio=false', async () => {
|
|
233
|
+
testMuteMember(false, false);
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
describe('#clearMembers', () => {
|
|
238
|
+
it('should send clear event if clear members', () => {
|
|
239
|
+
const members = createMembers({url: url1});
|
|
240
|
+
members.membersCollection.setAll(fakeMembersCollection);
|
|
241
|
+
sinon.stub(Trigger, 'trigger');
|
|
242
|
+
members.clearMembers();
|
|
243
|
+
assert.deepEqual(members.membersCollection.members, {});
|
|
244
|
+
assert.calledWith(
|
|
245
|
+
Trigger.trigger,
|
|
246
|
+
members,
|
|
247
|
+
{
|
|
248
|
+
file: 'members',
|
|
249
|
+
function: 'clearMembers',
|
|
250
|
+
},
|
|
251
|
+
EVENT_TRIGGERS.MEMBERS_CLEAR,
|
|
252
|
+
{}
|
|
253
|
+
);
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
describe('#locusParticipantsUpdate', () => {
|
|
257
|
+
it('should send member update event with session info', () => {
|
|
258
|
+
const members = createMembers({url: url1});
|
|
259
|
+
const fakePayload = {
|
|
260
|
+
participants: {
|
|
261
|
+
forEach: sinon.stub(),
|
|
262
|
+
},
|
|
263
|
+
isReplace: true,
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
members.locusParticipantsUpdate(fakePayload);
|
|
267
|
+
|
|
268
|
+
assert.calledWith(
|
|
269
|
+
Trigger.trigger,
|
|
270
|
+
members,
|
|
271
|
+
{
|
|
272
|
+
file: 'members',
|
|
273
|
+
function: 'locusParticipantsUpdate',
|
|
274
|
+
},
|
|
275
|
+
EVENT_TRIGGERS.MEMBERS_UPDATE,
|
|
276
|
+
{
|
|
277
|
+
delta: {added: [], updated: []},
|
|
278
|
+
full: {},
|
|
279
|
+
isReplace: true,
|
|
280
|
+
}
|
|
281
|
+
);
|
|
282
|
+
});
|
|
283
|
+
});
|
|
133
284
|
describe('#sendDialPadKey', () => {
|
|
134
285
|
it('should throw a rejection when calling sendDialPadKey with no tones', async () => {
|
|
135
286
|
const members = createMembers({url: url1});
|
|
@@ -191,6 +342,204 @@ describe('plugin-meetings', () => {
|
|
|
191
342
|
});
|
|
192
343
|
});
|
|
193
344
|
|
|
345
|
+
describe('#assignRoles', () => {
|
|
346
|
+
const fakeRoles = [
|
|
347
|
+
{type: 'PRESENTER', hasRole: true},
|
|
348
|
+
{type: 'MODERATOR', hasRole: false},
|
|
349
|
+
{type: 'COHOST', hasRole: true},
|
|
350
|
+
];
|
|
351
|
+
|
|
352
|
+
const resolvedValue = "it worked";
|
|
353
|
+
|
|
354
|
+
const genericMessage = 'Generic error from the API';
|
|
355
|
+
|
|
356
|
+
const setup = (locusUrl, errorCode) => {
|
|
357
|
+
const members = createMembers({url: locusUrl});
|
|
358
|
+
|
|
359
|
+
const spies = {
|
|
360
|
+
generateRoleAssignmentMemberOptions: sandbox.spy(
|
|
361
|
+
MembersUtil,
|
|
362
|
+
'generateRoleAssignmentMemberOptions'
|
|
363
|
+
),
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
if (errorCode) {
|
|
367
|
+
spies.assignRolesMember = sandbox.stub(members.membersRequest, 'assignRolesMember').rejects({body: {errorCode}, message: genericMessage});
|
|
368
|
+
} else {
|
|
369
|
+
spies.assignRolesMember = sandbox.stub(members.membersRequest, 'assignRolesMember').resolves(resolvedValue);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
return {members, spies};
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
const checkInvalid = async (resultPromise, expectedMessage, spies) => {
|
|
376
|
+
await assert.isRejected(resultPromise, ParameterError, expectedMessage);
|
|
377
|
+
assert.notCalled(spies.generateRoleAssignmentMemberOptions);
|
|
378
|
+
assert.notCalled(spies.assignRolesMember);
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
const checkError = async (error, expectedMemberId, expectedRoles, expectedLocusUrl, resultPromise, expectedMessage, spies) => {
|
|
382
|
+
await assert.isRejected(resultPromise, error, expectedMessage);
|
|
383
|
+
assert.calledOnceWithExactly(
|
|
384
|
+
spies.generateRoleAssignmentMemberOptions,
|
|
385
|
+
expectedMemberId,
|
|
386
|
+
expectedRoles,
|
|
387
|
+
expectedLocusUrl
|
|
388
|
+
);
|
|
389
|
+
assert.calledOnceWithExactly(spies.assignRolesMember, {
|
|
390
|
+
memberId: expectedMemberId,
|
|
391
|
+
roles: expectedRoles,
|
|
392
|
+
locusUrl: expectedLocusUrl,
|
|
393
|
+
});
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
const checkValid = async (
|
|
397
|
+
resultPromise,
|
|
398
|
+
spies,
|
|
399
|
+
expectedMemberId,
|
|
400
|
+
expectedRoles,
|
|
401
|
+
expectedLocusUrl
|
|
402
|
+
) => {
|
|
403
|
+
const resolvedValue = await assert.isFulfilled(resultPromise);
|
|
404
|
+
assert.calledOnceWithExactly(
|
|
405
|
+
spies.generateRoleAssignmentMemberOptions,
|
|
406
|
+
expectedMemberId,
|
|
407
|
+
expectedRoles,
|
|
408
|
+
expectedLocusUrl
|
|
409
|
+
);
|
|
410
|
+
assert.calledOnceWithExactly(spies.assignRolesMember, {
|
|
411
|
+
memberId: expectedMemberId,
|
|
412
|
+
roles: expectedRoles,
|
|
413
|
+
locusUrl: expectedLocusUrl,
|
|
414
|
+
});
|
|
415
|
+
assert.strictEqual(resolvedValue, resolvedValue);
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
it('should not make a request if there is no member id', async () => {
|
|
419
|
+
const {members, spies} = setup(url1);
|
|
420
|
+
|
|
421
|
+
const resultPromise = members.assignRoles();
|
|
422
|
+
|
|
423
|
+
await checkInvalid(
|
|
424
|
+
resultPromise,
|
|
425
|
+
'The member id must be defined to assign the roles to a member.',
|
|
426
|
+
spies,
|
|
427
|
+
);
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
it('should not make a request if there is no locus url', async () => {
|
|
431
|
+
const {members, spies} = setup();
|
|
432
|
+
|
|
433
|
+
const resultPromise = members.assignRoles(uuid.v4());
|
|
434
|
+
|
|
435
|
+
await checkInvalid(
|
|
436
|
+
resultPromise,
|
|
437
|
+
'The associated locus url for this meetings members object must be defined.',
|
|
438
|
+
spies,
|
|
439
|
+
);
|
|
440
|
+
});
|
|
441
|
+
|
|
442
|
+
it('should not make a request if locus throws ReclaimHostNotSupportedError', async () => {
|
|
443
|
+
const memberId = uuid.v4();
|
|
444
|
+
const {members, spies} = setup(url1, 2400127);
|
|
445
|
+
|
|
446
|
+
const resultPromise = members.assignRoles(memberId, fakeRoles);
|
|
447
|
+
|
|
448
|
+
await checkError(
|
|
449
|
+
ReclaimHostNotSupportedError,
|
|
450
|
+
memberId,
|
|
451
|
+
fakeRoles,
|
|
452
|
+
url1,
|
|
453
|
+
resultPromise,
|
|
454
|
+
'Non converged meetings, PSTN or SIP users in converged meetings are not supported currently.',
|
|
455
|
+
spies,
|
|
456
|
+
);
|
|
457
|
+
});
|
|
458
|
+
|
|
459
|
+
it('should not make a request if locus throws ReclaimHostNotAllowedError', async () => {
|
|
460
|
+
const memberId = uuid.v4();
|
|
461
|
+
const {members, spies} = setup(url1, 2403135);
|
|
462
|
+
|
|
463
|
+
const resultPromise = members.assignRoles(memberId, fakeRoles);
|
|
464
|
+
|
|
465
|
+
await checkError(
|
|
466
|
+
ReclaimHostNotAllowedError,
|
|
467
|
+
memberId,
|
|
468
|
+
fakeRoles,
|
|
469
|
+
url1,
|
|
470
|
+
resultPromise,
|
|
471
|
+
'Reclaim Host Role Not Allowed For Other Participants. Participants cannot claim host role in PMR meeting, space instant meeting or escalated instant meeting. However, the original host still can reclaim host role when it manually makes another participant to be the host.',
|
|
472
|
+
spies,
|
|
473
|
+
);
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
it('should not make a request if locus throws ReclaimHostEmptyWrongKeyError', async () => {
|
|
477
|
+
const memberId = uuid.v4();
|
|
478
|
+
const {members, spies} = setup(url1, 2403136);
|
|
479
|
+
|
|
480
|
+
const resultPromise = members.assignRoles(memberId, fakeRoles);
|
|
481
|
+
|
|
482
|
+
await checkError(
|
|
483
|
+
ReclaimHostEmptyWrongKeyError,
|
|
484
|
+
memberId,
|
|
485
|
+
fakeRoles,
|
|
486
|
+
url1,
|
|
487
|
+
resultPromise,
|
|
488
|
+
'Host Key Not Specified Or Matched. The original host can reclaim the host role without entering the host key. However, any other person who claims the host role must enter the host key to get it.',
|
|
489
|
+
spies,
|
|
490
|
+
);
|
|
491
|
+
});
|
|
492
|
+
|
|
493
|
+
it('should not make a request if locus throws ReclaimHostIsHostAlreadyError', async () => {
|
|
494
|
+
const memberId = uuid.v4();
|
|
495
|
+
const {members, spies} = setup(url1, 2409150);
|
|
496
|
+
|
|
497
|
+
const resultPromise = members.assignRoles(memberId, fakeRoles);
|
|
498
|
+
|
|
499
|
+
await checkError(
|
|
500
|
+
ReclaimHostIsHostAlreadyError,
|
|
501
|
+
memberId,
|
|
502
|
+
fakeRoles,
|
|
503
|
+
url1,
|
|
504
|
+
resultPromise,
|
|
505
|
+
'Participant Having Host Role Already. Participant who sends request to reclaim host role has already a host role.',
|
|
506
|
+
spies,
|
|
507
|
+
);
|
|
508
|
+
});
|
|
509
|
+
|
|
510
|
+
it('should not make a request if locus throws a different error', async () => {
|
|
511
|
+
const memberId = uuid.v4();
|
|
512
|
+
const {members, spies} = setup(url1, 1234);
|
|
513
|
+
|
|
514
|
+
const resultPromise = members.assignRoles(memberId, fakeRoles);
|
|
515
|
+
|
|
516
|
+
await checkError(
|
|
517
|
+
{body: {errorCode: 1234}, message: genericMessage},
|
|
518
|
+
memberId,
|
|
519
|
+
fakeRoles,
|
|
520
|
+
url1,
|
|
521
|
+
resultPromise,
|
|
522
|
+
genericMessage,
|
|
523
|
+
spies,
|
|
524
|
+
);
|
|
525
|
+
});
|
|
526
|
+
|
|
527
|
+
it('should make the correct request when called with roles', async () => {
|
|
528
|
+
const memberId = uuid.v4();
|
|
529
|
+
const {members, spies} = setup(url1);
|
|
530
|
+
|
|
531
|
+
const resultPromise = members.assignRoles(memberId, fakeRoles);
|
|
532
|
+
|
|
533
|
+
await checkValid(
|
|
534
|
+
resultPromise,
|
|
535
|
+
spies,
|
|
536
|
+
memberId,
|
|
537
|
+
fakeRoles,
|
|
538
|
+
url1,
|
|
539
|
+
);
|
|
540
|
+
});
|
|
541
|
+
});
|
|
542
|
+
|
|
194
543
|
describe('#raiseOrLowerHand', () => {
|
|
195
544
|
const setup = (locusUrl) => {
|
|
196
545
|
const members = createMembers({url: locusUrl});
|
|
@@ -360,6 +709,88 @@ describe('plugin-meetings', () => {
|
|
|
360
709
|
});
|
|
361
710
|
});
|
|
362
711
|
|
|
712
|
+
describe('#editDisplayName', () => {
|
|
713
|
+
const setup = (locusUrl) => {
|
|
714
|
+
const members = createMembers({url: locusUrl});
|
|
715
|
+
|
|
716
|
+
const spies = {
|
|
717
|
+
generateEditDisplayNameMemberOptions: sandbox.spy(
|
|
718
|
+
MembersUtil,
|
|
719
|
+
'generateEditDisplayNameMemberOptions'
|
|
720
|
+
),
|
|
721
|
+
editDisplayNameMember: sandbox.spy(members.membersRequest, 'editDisplayNameMember'),
|
|
722
|
+
};
|
|
723
|
+
|
|
724
|
+
return {members, spies};
|
|
725
|
+
};
|
|
726
|
+
|
|
727
|
+
const checkInvalid = async (resultPromise, expectedMessage, spies) => {
|
|
728
|
+
await assert.isRejected(resultPromise, ParameterError, expectedMessage);
|
|
729
|
+
assert.notCalled(spies.generateEditDisplayNameMemberOptions);
|
|
730
|
+
assert.notCalled(spies.editDisplayNameMember);
|
|
731
|
+
};
|
|
732
|
+
|
|
733
|
+
const checkValid = async (
|
|
734
|
+
resultPromise,
|
|
735
|
+
spies,
|
|
736
|
+
expectedMemberId,
|
|
737
|
+
expectedRequestingParticipantId,
|
|
738
|
+
expectedAlias,
|
|
739
|
+
expectedLocusUrl
|
|
740
|
+
) => {
|
|
741
|
+
await assert.isFulfilled(resultPromise);
|
|
742
|
+
assert.calledOnceWithExactly(
|
|
743
|
+
spies.generateEditDisplayNameMemberOptions,
|
|
744
|
+
expectedMemberId,
|
|
745
|
+
expectedRequestingParticipantId,
|
|
746
|
+
expectedAlias,
|
|
747
|
+
expectedLocusUrl
|
|
748
|
+
);
|
|
749
|
+
assert.calledOnceWithExactly(spies.editDisplayNameMember, {
|
|
750
|
+
memberId: expectedMemberId,
|
|
751
|
+
requestingParticipantId: expectedRequestingParticipantId,
|
|
752
|
+
alias: expectedAlias,
|
|
753
|
+
locusUrl: expectedLocusUrl,
|
|
754
|
+
});
|
|
755
|
+
assert.strictEqual(resultPromise, spies.editDisplayNameMember.getCall(0).returnValue);
|
|
756
|
+
};
|
|
757
|
+
|
|
758
|
+
it('should not make a request if there is no memberId', async () => {
|
|
759
|
+
const {members, spies} = setup(url1);
|
|
760
|
+
|
|
761
|
+
const resultPromise = members.editDisplayName();
|
|
762
|
+
|
|
763
|
+
await checkInvalid(
|
|
764
|
+
resultPromise,
|
|
765
|
+
'The member id must be defined to edit display name of the member.',
|
|
766
|
+
spies
|
|
767
|
+
);
|
|
768
|
+
});
|
|
769
|
+
|
|
770
|
+
it('should not make a request if there is no locus url', async () => {
|
|
771
|
+
const {members, spies} = setup();
|
|
772
|
+
|
|
773
|
+
const resultPromise = members.editDisplayName(uuid.v4());
|
|
774
|
+
|
|
775
|
+
await checkInvalid(
|
|
776
|
+
resultPromise,
|
|
777
|
+
'The associated locus url for this meetings members object must be defined.',
|
|
778
|
+
spies
|
|
779
|
+
);
|
|
780
|
+
});
|
|
781
|
+
|
|
782
|
+
it('should make the correct request when called with respective parameters', async () => {
|
|
783
|
+
const requestingParticipantId = uuid.v4();
|
|
784
|
+
const memberId = uuid.v4();
|
|
785
|
+
const alias = 'aliasName';
|
|
786
|
+
const {members, spies} = setup(url1);
|
|
787
|
+
|
|
788
|
+
const resultPromise = members.editDisplayName(memberId, requestingParticipantId, alias);
|
|
789
|
+
|
|
790
|
+
await checkValid(resultPromise, spies, memberId, requestingParticipantId, alias, url1);
|
|
791
|
+
});
|
|
792
|
+
});
|
|
793
|
+
|
|
363
794
|
describe('findMemberByCsi()', () => {
|
|
364
795
|
let members;
|
|
365
796
|
|