@webex/plugin-meetings 2.59.2 → 2.59.3-next.1
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/.eslintrc.js +6 -6
- package/LICENSE +1 -1
- package/README.md +1204 -1204
- package/UPGRADING.md +287 -287
- package/babel.config.js +3 -3
- package/browsers.js +108 -108
- package/dist/common/browser-detection.d.ts +9 -9
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.d.ts +48 -48
- package/dist/common/collection.js +43 -43
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.d.ts +2 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.d.ts +15 -15
- package/dist/common/errors/captcha-error.js +7 -7
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.d.ts +16 -16
- package/dist/common/errors/intent-to-join.js +7 -7
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.d.ts +17 -17
- package/dist/common/errors/join-meeting.js +8 -8
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.d.ts +15 -15
- package/dist/common/errors/media.js +7 -7
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.d.ts +15 -15
- package/dist/common/errors/parameter.js +7 -7
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.d.ts +15 -15
- package/dist/common/errors/password-error.js +7 -7
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.d.ts +14 -14
- package/dist/common/errors/permission.js +6 -6
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.d.ts +9 -9
- package/dist/common/errors/reconnection-in-progress.js +6 -6
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.d.ts +15 -15
- package/dist/common/errors/reconnection.js +7 -7
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.d.ts +15 -15
- package/dist/common/errors/stats.js +7 -7
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.d.ts +81 -81
- package/dist/common/errors/webex-errors.js +42 -42
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.d.ts +20 -20
- package/dist/common/errors/webex-meetings-error.js +12 -12
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.d.ts +17 -17
- package/dist/common/events/events-scope.js +10 -10
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.d.ts +12 -12
- package/dist/common/events/events.js +4 -4
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.d.ts +2 -2
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.d.ts +2 -2
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.d.ts +2 -2
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.d.ts +2 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.d.ts +34 -34
- package/dist/common/logs/request.js +18 -18
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.d.ts +32 -32
- package/dist/common/queue.js +18 -18
- package/dist/common/queue.js.map +1 -1
- package/dist/config.d.ts +73 -73
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +924 -924
- package/dist/constants.js +9 -9
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.d.ts +4 -4
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.d.ts +5 -5
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.d.ts +120 -120
- package/dist/controls-options-manager/index.js +81 -81
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.d.ts +7 -7
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.d.ts +2 -2
- package/dist/locus-info/controlsUtils.js +21 -21
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.d.ts +2 -2
- package/dist/locus-info/embeddedAppsUtils.js +14 -14
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.d.ts +2 -2
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.d.ts +2 -2
- package/dist/locus-info/hostUtils.js +19 -19
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.d.ts +269 -269
- package/dist/locus-info/index.js +180 -180
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.d.ts +2 -2
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.d.ts +2 -2
- package/dist/locus-info/mediaSharesUtils.js +50 -50
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.d.ts +212 -212
- package/dist/locus-info/parser.js +136 -136
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.d.ts +2 -2
- package/dist/locus-info/selfUtils.js +52 -52
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.d.ts +32 -32
- package/dist/media/index.js +145 -145
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.d.ts +108 -108
- package/dist/media/properties.js +49 -49
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.d.ts +2 -2
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +233 -233
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.d.ts +42 -42
- package/dist/meeting/effectsState.js +24 -24
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.d.ts +79 -79
- package/dist/meeting/in-meeting-actions.js +11 -11
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +1621 -1621
- package/dist/meeting/index.js +1502 -1505
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.d.ts +116 -116
- package/dist/meeting/muteState.js +85 -85
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.d.ts +255 -255
- package/dist/meeting/request.js +141 -141
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.d.ts +9 -9
- package/dist/meeting/state.js +30 -30
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.d.ts +2 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.d.ts +20 -20
- package/dist/meeting-info/collection.js +11 -11
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.d.ts +57 -57
- package/dist/meeting-info/index.js +50 -50
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.d.ts +93 -93
- package/dist/meeting-info/meeting-info-v2.js +52 -52
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.d.ts +22 -22
- package/dist/meeting-info/request.js +14 -14
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.d.ts +2 -2
- package/dist/meeting-info/util.js +9 -9
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.d.ts +2 -2
- package/dist/meeting-info/utilv2.js +20 -20
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.d.ts +23 -23
- package/dist/meetings/collection.js +14 -14
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.d.ts +296 -296
- package/dist/meetings/index.js +259 -259
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.d.ts +27 -27
- package/dist/meetings/request.js +15 -15
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.d.ts +18 -18
- package/dist/meetings/util.js +29 -29
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.d.ts +147 -147
- package/dist/member/index.js +214 -214
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.d.ts +11 -11
- package/dist/member/member.types.js.map +1 -1
- package/dist/member/util.d.ts +2 -2
- package/dist/member/util.js +60 -60
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.d.ts +24 -24
- package/dist/members/collection.js +11 -11
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.d.ts +298 -298
- package/dist/members/index.js +275 -275
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.d.ts +50 -50
- package/dist/members/request.js +27 -27
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.d.ts +2 -2
- package/dist/members/util.js +21 -21
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.d.ts +169 -169
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.d.ts +57 -57
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +152 -152
- package/dist/metrics/index.js +90 -90
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.d.ts +70 -70
- package/dist/networkQualityMonitor/index.js +65 -65
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.d.ts +6 -6
- package/dist/peer-connection-manager/index.js +87 -87
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/dist/peer-connection-manager/util.d.ts +6 -6
- package/dist/peer-connection-manager/util.js +9 -9
- package/dist/peer-connection-manager/util.js.map +1 -1
- package/dist/personal-meeting-room/index.d.ts +47 -47
- package/dist/personal-meeting-room/index.js +67 -67
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.d.ts +14 -14
- package/dist/personal-meeting-room/request.js +7 -7
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.d.ts +2 -2
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.d.ts +139 -139
- package/dist/reachability/index.js +110 -110
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.d.ts +35 -35
- package/dist/reachability/request.js +15 -15
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.d.ts +4 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.d.ts +32 -32
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.d.ts +112 -112
- package/dist/reconnection-manager/index.js +112 -112
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.d.ts +7 -7
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.d.ts +193 -193
- package/dist/recording-controller/index.js +127 -127
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.d.ts +13 -13
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/collection.d.ts +10 -10
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.d.ts +47 -47
- package/dist/roap/handler.js +27 -27
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.d.ts +116 -116
- package/dist/roap/index.js +111 -111
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.d.ts +35 -35
- package/dist/roap/request.js +17 -17
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.d.ts +9 -9
- package/dist/roap/state.js +14 -14
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/turnDiscovery.d.ts +67 -67
- package/dist/roap/turnDiscovery.js +46 -46
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.d.ts +2 -2
- package/dist/roap/util.js.map +1 -1
- package/dist/statsAnalyzer/global.d.ts +126 -116
- package/dist/statsAnalyzer/global.js +10 -0
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.d.ts +190 -191
- package/dist/statsAnalyzer/index.js +137 -139
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +22 -22
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.d.ts +64 -64
- package/dist/transcription/index.js +42 -42
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +172 -172
- package/jest.config.js +3 -3
- package/package.json +22 -21
- package/process +1 -1
- package/src/common/browser-detection.ts +39 -39
- package/src/common/collection.ts +94 -94
- package/src/common/config.ts +9 -9
- package/src/common/errors/captcha-error.ts +25 -25
- package/src/common/errors/intent-to-join.ts +27 -27
- package/src/common/errors/join-meeting.ts +32 -32
- package/src/common/errors/media.ts +25 -25
- package/src/common/errors/parameter.ts +33 -33
- package/src/common/errors/password-error.ts +25 -25
- package/src/common/errors/permission.ts +24 -24
- package/src/common/errors/reconnection-in-progress.ts +8 -8
- package/src/common/errors/reconnection.ts +25 -25
- package/src/common/errors/stats.ts +25 -25
- package/src/common/errors/webex-errors.ts +140 -140
- package/src/common/errors/webex-meetings-error.ts +35 -35
- package/src/common/events/events-scope.ts +30 -30
- package/src/common/events/events.ts +25 -25
- package/src/common/events/trigger-proxy.ts +25 -25
- package/src/common/events/util.ts +39 -39
- package/src/common/logs/logger-config.ts +8 -8
- package/src/common/logs/logger-proxy.ts +44 -44
- package/src/common/logs/request.ts +65 -65
- package/src/common/queue.ts +50 -50
- package/src/config.ts +96 -96
- package/src/constants.ts +1121 -1121
- package/src/controls-options-manager/constants.ts +5 -5
- package/src/controls-options-manager/enums.ts +6 -6
- package/src/controls-options-manager/index.ts +183 -183
- package/src/controls-options-manager/util.ts +20 -20
- package/src/index.js +15 -15
- package/src/locus-info/controlsUtils.ts +112 -112
- package/src/locus-info/embeddedAppsUtils.ts +57 -57
- package/src/locus-info/fullState.ts +69 -69
- package/src/locus-info/hostUtils.ts +60 -60
- package/src/locus-info/index.ts +1303 -1303
- package/src/locus-info/infoUtils.ts +101 -101
- package/src/locus-info/mediaSharesUtils.ts +173 -173
- package/src/locus-info/parser.ts +680 -680
- package/src/locus-info/selfUtils.ts +428 -428
- package/src/media/index.ts +675 -675
- package/src/media/properties.ts +313 -313
- package/src/media/util.ts +37 -37
- package/src/mediaQualityMetrics/config.ts +382 -382
- package/src/meeting/effectsState.ts +209 -209
- package/src/meeting/in-meeting-actions.ts +153 -153
- package/src/meeting/index.ts +6537 -6543
- package/src/meeting/muteState.ts +365 -365
- package/src/meeting/request.ts +810 -810
- package/src/meeting/state.ts +194 -194
- package/src/meeting/util.ts +530 -530
- package/src/meeting-info/collection.ts +41 -41
- package/src/meeting-info/index.ts +137 -137
- package/src/meeting-info/meeting-info-v2.ts +273 -273
- package/src/meeting-info/request.ts +46 -46
- package/src/meeting-info/util.ts +314 -314
- package/src/meeting-info/utilv2.ts +324 -324
- package/src/meetings/collection.ts +43 -43
- package/src/meetings/index.ts +1128 -1128
- package/src/meetings/request.ts +81 -81
- package/src/meetings/util.ts +181 -181
- package/src/member/index.ts +446 -446
- package/src/member/member.types.ts +13 -13
- package/src/member/util.ts +286 -286
- package/src/members/collection.ts +40 -40
- package/src/members/index.ts +900 -900
- package/src/members/request.ts +175 -175
- package/src/members/util.ts +260 -260
- package/src/metrics/config.ts +485 -485
- package/src/metrics/constants.ts +61 -61
- package/src/metrics/index.ts +543 -543
- package/src/networkQualityMonitor/index.ts +211 -211
- package/src/peer-connection-manager/index.ts +847 -847
- package/src/peer-connection-manager/util.ts +119 -119
- package/src/personal-meeting-room/index.ts +157 -157
- package/src/personal-meeting-room/request.ts +48 -48
- package/src/personal-meeting-room/util.ts +49 -49
- package/src/reachability/index.ts +478 -478
- package/src/reachability/request.ts +81 -81
- package/src/reactions/reactions.ts +104 -104
- package/src/reactions/reactions.type.ts +36 -36
- package/src/reconnection-manager/index.ts +622 -622
- package/src/recording-controller/enums.ts +8 -8
- package/src/recording-controller/index.ts +315 -315
- package/src/recording-controller/util.ts +58 -58
- package/src/roap/collection.ts +62 -62
- package/src/roap/handler.ts +294 -294
- package/src/roap/index.ts +413 -413
- package/src/roap/request.ts +229 -229
- package/src/roap/state.ts +156 -156
- package/src/roap/turnDiscovery.ts +283 -283
- package/src/roap/util.ts +100 -100
- package/src/statsAnalyzer/global.ts +128 -118
- package/src/statsAnalyzer/index.ts +1266 -1265
- package/src/statsAnalyzer/mqaUtil.ts +290 -290
- package/src/transcription/index.ts +154 -154
- package/test/integration/spec/journey.js +941 -941
- package/test/integration/spec/space-meeting.js +457 -457
- package/test/integration/spec/transcription.js +55 -55
- package/test/unit/spec/common/browser-detection.js +119 -119
- package/test/unit/spec/common/queue.js +69 -69
- package/test/unit/spec/controls-options-manager/index.js +123 -123
- package/test/unit/spec/controls-options-manager/util.js +65 -65
- package/test/unit/spec/fixture/locus.js +406 -406
- package/test/unit/spec/locus-info/controlsUtils.js +82 -82
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +104 -104
- package/test/unit/spec/locus-info/index.js +1272 -1272
- package/test/unit/spec/locus-info/infoUtils.js +138 -138
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +975 -975
- package/test/unit/spec/locus-info/lib/SeqCmp.json +522 -522
- package/test/unit/spec/locus-info/lib/selfConstant.js +286 -286
- package/test/unit/spec/locus-info/parser.js +298 -298
- package/test/unit/spec/locus-info/selfUtils.js +185 -185
- package/test/unit/spec/media/properties.ts +305 -305
- package/test/unit/spec/meeting/effectsState.js +281 -281
- package/test/unit/spec/meeting/in-meeting-actions.ts +90 -90
- package/test/unit/spec/meeting/index.js +5227 -5227
- package/test/unit/spec/meeting/muteState.js +430 -430
- package/test/unit/spec/meeting/request.js +317 -317
- package/test/unit/spec/meeting/utils.js +319 -319
- package/test/unit/spec/meeting-info/meetinginfov2.js +376 -376
- package/test/unit/spec/meeting-info/request.js +64 -64
- package/test/unit/spec/meeting-info/util.js +37 -37
- package/test/unit/spec/meeting-info/utilv2.js +330 -330
- package/test/unit/spec/meetings/collection.js +52 -52
- package/test/unit/spec/meetings/index.js +1375 -1375
- package/test/unit/spec/meetings/utils.js +66 -66
- package/test/unit/spec/member/index.js +47 -47
- package/test/unit/spec/member/util.js +80 -80
- package/test/unit/spec/members/index.js +364 -364
- package/test/unit/spec/members/request.js +200 -200
- package/test/unit/spec/members/utils.js +42 -42
- package/test/unit/spec/metrics/index.js +111 -111
- package/test/unit/spec/networkQualityMonitor/index.js +99 -99
- package/test/unit/spec/peerconnection-manager/index.js +218 -218
- package/test/unit/spec/peerconnection-manager/utils.js +49 -49
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -388
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +29 -29
- package/test/unit/spec/reachability/index.ts +50 -50
- package/test/unit/spec/reconnection-manager/index.js +206 -206
- package/test/unit/spec/recording-controller/index.js +230 -230
- package/test/unit/spec/recording-controller/util.js +101 -101
- package/test/unit/spec/roap/index.ts +128 -128
- package/test/unit/spec/roap/turnDiscovery.ts +372 -372
- package/test/unit/spec/roap/util.js +30 -30
- package/test/unit/spec/stats-analyzer/index.js +287 -355
- package/test/utils/cmr.js +104 -104
- package/test/utils/testUtils.js +287 -287
- package/test/utils/webex-config.js +77 -77
- package/test/utils/webex-test-users.js +82 -82
- package/tsconfig.json +5 -5
|
@@ -1,364 +1,364 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import 'jsdom-global/register';
|
|
6
|
-
import sinon from 'sinon';
|
|
7
|
-
import uuid from 'uuid';
|
|
8
|
-
import chai from 'chai';
|
|
9
|
-
import chaiAsPromised from 'chai-as-promised';
|
|
10
|
-
import {Credentials} from '@webex/webex-core';
|
|
11
|
-
import Support from '@webex/internal-plugin-support';
|
|
12
|
-
import MockWebex from '@webex/test-helper-mock-webex';
|
|
13
|
-
|
|
14
|
-
import Meetings from '@webex/plugin-meetings';
|
|
15
|
-
import ParameterError from '@webex/plugin-meetings/src/common/errors/parameter';
|
|
16
|
-
import Members from '@webex/plugin-meetings/src/members';
|
|
17
|
-
import MembersUtil from '@webex/plugin-meetings/src/members/util';
|
|
18
|
-
|
|
19
|
-
const {assert} = chai;
|
|
20
|
-
|
|
21
|
-
chai.use(chaiAsPromised);
|
|
22
|
-
sinon.assert.expose(chai.assert, {prefix: ''});
|
|
23
|
-
|
|
24
|
-
describe('plugin-meetings', () => {
|
|
25
|
-
let webex;
|
|
26
|
-
let url1;
|
|
27
|
-
const fakeMembersCollection = {
|
|
28
|
-
test1: {
|
|
29
|
-
namespace: 'Meetings',
|
|
30
|
-
participant: {
|
|
31
|
-
state: 'JOINED',
|
|
32
|
-
type: 'USER',
|
|
33
|
-
person: {
|
|
34
|
-
id: '6eb08f8b-bf69-3251-a126-b161bead2d21',
|
|
35
|
-
phoneNumber: '+18578675309',
|
|
36
|
-
isExternal: true,
|
|
37
|
-
primaryDisplayString: '+18578675309',
|
|
38
|
-
},
|
|
39
|
-
devices: [
|
|
40
|
-
{
|
|
41
|
-
url: 'https://fakeURL.com',
|
|
42
|
-
deviceType: 'SIP',
|
|
43
|
-
state: 'JOINED',
|
|
44
|
-
intents: [null],
|
|
45
|
-
correlationId: '1234',
|
|
46
|
-
provisionalUrl: 'dialout:///fake',
|
|
47
|
-
isSparkPstn: true,
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
url: 'dialout:///fakeagain',
|
|
51
|
-
deviceType: 'PROVISIONAL',
|
|
52
|
-
state: 'JOINED',
|
|
53
|
-
intents: [null],
|
|
54
|
-
correlationId: '4321',
|
|
55
|
-
isVideoCallback: false,
|
|
56
|
-
clientUrl: 'https://fakeURL',
|
|
57
|
-
provisionalType: 'DIAL_OUT_ONLY',
|
|
58
|
-
dialingStatus: 'SUCCESS',
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
status: {
|
|
62
|
-
audioStatus: 'SENDRECV',
|
|
63
|
-
videoStatus: 'INACTIVE',
|
|
64
|
-
},
|
|
65
|
-
id: 'abc-123-abc-123',
|
|
66
|
-
guest: true,
|
|
67
|
-
resourceGuest: false,
|
|
68
|
-
moderator: false,
|
|
69
|
-
panelist: false,
|
|
70
|
-
moveToLobbyNotAllowed: true,
|
|
71
|
-
deviceUrl: 'https://fakeDeviceurl',
|
|
72
|
-
},
|
|
73
|
-
id: 'abc-123-abc-123',
|
|
74
|
-
status: 'IN_MEETING',
|
|
75
|
-
type: 'MEETING',
|
|
76
|
-
isModerator: false,
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
describe('members', () => {
|
|
81
|
-
const sandbox = sinon.createSandbox();
|
|
82
|
-
let createMembers;
|
|
83
|
-
|
|
84
|
-
beforeEach(() => {
|
|
85
|
-
webex = new MockWebex({
|
|
86
|
-
children: {
|
|
87
|
-
meetings: Meetings,
|
|
88
|
-
credentials: Credentials,
|
|
89
|
-
support: Support,
|
|
90
|
-
},
|
|
91
|
-
config: {
|
|
92
|
-
credentials: {
|
|
93
|
-
client_id: 'mock-client-id',
|
|
94
|
-
},
|
|
95
|
-
meetings: {
|
|
96
|
-
reconnection: {
|
|
97
|
-
enabled: false,
|
|
98
|
-
},
|
|
99
|
-
mediaSettings: {},
|
|
100
|
-
metrics: {},
|
|
101
|
-
stats: {},
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
url1 = `https://example.com/${uuid.v4()}`;
|
|
107
|
-
|
|
108
|
-
createMembers = (options) => new Members({locusUrl: options.url}, {parent: webex});
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
afterEach(() => {
|
|
112
|
-
sandbox.restore();
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
describe('#addMembers', () => {
|
|
116
|
-
it('should invoke isInvalidInvitee and generateAddMemberOptions from MembersUtil when addMember is called with valid params', async () => {
|
|
117
|
-
sandbox.spy(MembersUtil, 'isInvalidInvitee');
|
|
118
|
-
sandbox.spy(MembersUtil, 'generateAddMemberOptions');
|
|
119
|
-
|
|
120
|
-
const members = createMembers({url: url1});
|
|
121
|
-
|
|
122
|
-
await members.addMember({phoneNumber: '+18578675309'});
|
|
123
|
-
assert.calledOnce(MembersUtil.isInvalidInvitee);
|
|
124
|
-
assert.calledOnce(MembersUtil.generateAddMemberOptions);
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
it('should throw a rejection if there is no locus url', async () => {
|
|
128
|
-
const members = createMembers({url: false});
|
|
129
|
-
|
|
130
|
-
assert.isRejected(members.addMember({email: 'test@cisco.com'}));
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
describe('#sendDialPadKey', () => {
|
|
135
|
-
it('should throw a rejection when calling sendDialPadKey with no tones', async () => {
|
|
136
|
-
const members = createMembers({url: url1});
|
|
137
|
-
|
|
138
|
-
assert.isRejected(members.sendDialPadKey());
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
it('should throw a rejection when calling sendDialPadKey with no member is found', async () => {
|
|
142
|
-
const members = createMembers({url: url1});
|
|
143
|
-
|
|
144
|
-
assert.isRejected(members.sendDialPadKey('1', '1234'));
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
it('should call genderateSendDTMFOptions with proper options on Members util if we the member is valid', async () => {
|
|
148
|
-
sandbox.spy(MembersUtil, 'genderateSendDTMFOptions');
|
|
149
|
-
const members = createMembers({url: url1});
|
|
150
|
-
|
|
151
|
-
members.membersCollection.setAll(fakeMembersCollection);
|
|
152
|
-
await members.sendDialPadKey('1', 'test1');
|
|
153
|
-
assert.calledWith(
|
|
154
|
-
MembersUtil.genderateSendDTMFOptions,
|
|
155
|
-
'https://fakeURL.com',
|
|
156
|
-
'1',
|
|
157
|
-
'test1',
|
|
158
|
-
url1
|
|
159
|
-
);
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
it('should call the sendDialPadKey method on membersRequest if the member is valid', async () => {
|
|
163
|
-
const members = createMembers({url: url1});
|
|
164
|
-
|
|
165
|
-
const {membersRequest} = members;
|
|
166
|
-
|
|
167
|
-
assert.exists(membersRequest);
|
|
168
|
-
const sendDialPadKeyspy = sandbox.spy(membersRequest, 'sendDialPadKey');
|
|
169
|
-
|
|
170
|
-
members.membersCollection.setAll(fakeMembersCollection);
|
|
171
|
-
await members.sendDialPadKey('1', 'test1');
|
|
172
|
-
assert.calledOnce(sendDialPadKeyspy);
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
describe('#cancelPhoneInvite', () => {
|
|
177
|
-
it('should invoke isInvalidInvitee and generateAddMemberOptions from MembersUtil when addMember is called with valid params', async () => {
|
|
178
|
-
sandbox.spy(MembersUtil, 'isInvalidInvitee');
|
|
179
|
-
sandbox.spy(MembersUtil, 'cancelPhoneInviteOptions');
|
|
180
|
-
|
|
181
|
-
const members = createMembers({url: url1});
|
|
182
|
-
|
|
183
|
-
await members.cancelPhoneInvite({phoneNumber: '+18578675309'});
|
|
184
|
-
assert.calledOnce(MembersUtil.isInvalidInvitee);
|
|
185
|
-
assert.calledOnce(MembersUtil.cancelPhoneInviteOptions);
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
it('should throw a rejection if there is no locus url', async () => {
|
|
189
|
-
const members = createMembers({url: false});
|
|
190
|
-
|
|
191
|
-
assert.isRejected(members.cancelPhoneInvite({phoneNumber: '+18578675309'}));
|
|
192
|
-
});
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
describe('#raiseOrLowerHand', () => {
|
|
196
|
-
const setup = (locusUrl) => {
|
|
197
|
-
const members = createMembers({url: locusUrl});
|
|
198
|
-
|
|
199
|
-
const spies = {
|
|
200
|
-
generateRaiseHandMemberOptions: sandbox.spy(
|
|
201
|
-
MembersUtil,
|
|
202
|
-
'generateRaiseHandMemberOptions'
|
|
203
|
-
),
|
|
204
|
-
raiseOrLowerHandMember: sandbox.spy(members.membersRequest, 'raiseOrLowerHandMember'),
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
return {members, spies};
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
const checkInvalid = async (resultPromise, expectedMessage, spies) => {
|
|
211
|
-
await assert.isRejected(resultPromise, ParameterError, expectedMessage);
|
|
212
|
-
assert.notCalled(spies.generateRaiseHandMemberOptions);
|
|
213
|
-
assert.notCalled(spies.raiseOrLowerHandMember);
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
const checkValid = async (
|
|
217
|
-
resultPromise,
|
|
218
|
-
spies,
|
|
219
|
-
expectedMemberId,
|
|
220
|
-
expectedRaise,
|
|
221
|
-
expectedLocusUrl
|
|
222
|
-
) => {
|
|
223
|
-
await assert.isFulfilled(resultPromise);
|
|
224
|
-
assert.calledOnceWithExactly(
|
|
225
|
-
spies.generateRaiseHandMemberOptions,
|
|
226
|
-
expectedMemberId,
|
|
227
|
-
expectedRaise,
|
|
228
|
-
expectedLocusUrl
|
|
229
|
-
);
|
|
230
|
-
assert.calledOnceWithExactly(spies.raiseOrLowerHandMember, {
|
|
231
|
-
memberId: expectedMemberId,
|
|
232
|
-
raised: expectedRaise,
|
|
233
|
-
locusUrl: expectedLocusUrl,
|
|
234
|
-
});
|
|
235
|
-
assert.strictEqual(resultPromise, spies.raiseOrLowerHandMember.getCall(0).returnValue);
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
it('should not make a request if there is no member id', async () => {
|
|
239
|
-
const {members, spies} = setup(url1);
|
|
240
|
-
|
|
241
|
-
const resultPromise = members.raiseOrLowerHand();
|
|
242
|
-
|
|
243
|
-
await checkInvalid(
|
|
244
|
-
resultPromise,
|
|
245
|
-
'The member id must be defined to raise/lower the hand of the member.',
|
|
246
|
-
spies
|
|
247
|
-
);
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
it('should not make a request if there is no locus url', async () => {
|
|
251
|
-
const {members, spies} = setup();
|
|
252
|
-
|
|
253
|
-
const resultPromise = members.raiseOrLowerHand(uuid.v4());
|
|
254
|
-
|
|
255
|
-
await checkInvalid(
|
|
256
|
-
resultPromise,
|
|
257
|
-
'The associated locus url for this meetings members object must be defined.',
|
|
258
|
-
spies
|
|
259
|
-
);
|
|
260
|
-
});
|
|
261
|
-
|
|
262
|
-
it('should make the correct request when called with raise as true', async () => {
|
|
263
|
-
const memberId = uuid.v4();
|
|
264
|
-
const {members, spies} = setup(url1);
|
|
265
|
-
|
|
266
|
-
const resultPromise = members.raiseOrLowerHand(memberId, true);
|
|
267
|
-
|
|
268
|
-
await checkValid(resultPromise, spies, memberId, true, url1);
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
it('should make the correct request when called with raise as false', async () => {
|
|
272
|
-
const memberId = uuid.v4();
|
|
273
|
-
const {members, spies} = setup(url1);
|
|
274
|
-
|
|
275
|
-
const resultPromise = members.raiseOrLowerHand(memberId, false);
|
|
276
|
-
|
|
277
|
-
await checkValid(resultPromise, spies, memberId, false, url1);
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
it('should make the correct request when called with raise as default', async () => {
|
|
281
|
-
const memberId = uuid.v4();
|
|
282
|
-
const {members, spies} = setup(url1);
|
|
283
|
-
|
|
284
|
-
const resultPromise = members.raiseOrLowerHand(memberId);
|
|
285
|
-
|
|
286
|
-
await checkValid(resultPromise, spies, memberId, true, url1);
|
|
287
|
-
});
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
describe('#lowerAllHands', () => {
|
|
291
|
-
const setup = (locusUrl) => {
|
|
292
|
-
const members = createMembers({url: locusUrl});
|
|
293
|
-
|
|
294
|
-
const spies = {
|
|
295
|
-
generateLowerAllHandsMemberOptions: sandbox.spy(
|
|
296
|
-
MembersUtil,
|
|
297
|
-
'generateLowerAllHandsMemberOptions'
|
|
298
|
-
),
|
|
299
|
-
lowerAllHandsMember: sandbox.spy(members.membersRequest, 'lowerAllHandsMember'),
|
|
300
|
-
};
|
|
301
|
-
|
|
302
|
-
return {members, spies};
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
const checkInvalid = async (resultPromise, expectedMessage, spies) => {
|
|
306
|
-
await assert.isRejected(resultPromise, ParameterError, expectedMessage);
|
|
307
|
-
assert.notCalled(spies.generateLowerAllHandsMemberOptions);
|
|
308
|
-
assert.notCalled(spies.lowerAllHandsMember);
|
|
309
|
-
};
|
|
310
|
-
|
|
311
|
-
const checkValid = async (
|
|
312
|
-
resultPromise,
|
|
313
|
-
spies,
|
|
314
|
-
expectedRequestingMemberId,
|
|
315
|
-
expectedLocusUrl
|
|
316
|
-
) => {
|
|
317
|
-
await assert.isFulfilled(resultPromise);
|
|
318
|
-
assert.calledOnceWithExactly(
|
|
319
|
-
spies.generateLowerAllHandsMemberOptions,
|
|
320
|
-
expectedRequestingMemberId,
|
|
321
|
-
expectedLocusUrl
|
|
322
|
-
);
|
|
323
|
-
assert.calledOnceWithExactly(spies.lowerAllHandsMember, {
|
|
324
|
-
requestingParticipantId: expectedRequestingMemberId,
|
|
325
|
-
locusUrl: expectedLocusUrl,
|
|
326
|
-
});
|
|
327
|
-
assert.strictEqual(resultPromise, spies.lowerAllHandsMember.getCall(0).returnValue);
|
|
328
|
-
};
|
|
329
|
-
|
|
330
|
-
it('should not make a request if there is no requestingMemberId', async () => {
|
|
331
|
-
const {members, spies} = setup(url1);
|
|
332
|
-
|
|
333
|
-
const resultPromise = members.lowerAllHands();
|
|
334
|
-
|
|
335
|
-
await checkInvalid(
|
|
336
|
-
resultPromise,
|
|
337
|
-
'The requestingMemberId must be defined to lower all hands in a meeting.',
|
|
338
|
-
spies
|
|
339
|
-
);
|
|
340
|
-
});
|
|
341
|
-
|
|
342
|
-
it('should not make a request if there is no locus url', async () => {
|
|
343
|
-
const {members, spies} = setup();
|
|
344
|
-
|
|
345
|
-
const resultPromise = members.lowerAllHands(uuid.v4());
|
|
346
|
-
|
|
347
|
-
await checkInvalid(
|
|
348
|
-
resultPromise,
|
|
349
|
-
'The associated locus url for this meetings members object must be defined.',
|
|
350
|
-
spies
|
|
351
|
-
);
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
it('should make the correct request when called with requestingMemberId', async () => {
|
|
355
|
-
const requestingMemberId = uuid.v4();
|
|
356
|
-
const {members, spies} = setup(url1);
|
|
357
|
-
|
|
358
|
-
const resultPromise = members.lowerAllHands(requestingMemberId);
|
|
359
|
-
|
|
360
|
-
await checkValid(resultPromise, spies, requestingMemberId, url1);
|
|
361
|
-
});
|
|
362
|
-
});
|
|
363
|
-
});
|
|
364
|
-
});
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import 'jsdom-global/register';
|
|
6
|
+
import sinon from 'sinon';
|
|
7
|
+
import uuid from 'uuid';
|
|
8
|
+
import chai from 'chai';
|
|
9
|
+
import chaiAsPromised from 'chai-as-promised';
|
|
10
|
+
import {Credentials} from '@webex/webex-core';
|
|
11
|
+
import Support from '@webex/internal-plugin-support';
|
|
12
|
+
import MockWebex from '@webex/test-helper-mock-webex';
|
|
13
|
+
|
|
14
|
+
import Meetings from '@webex/plugin-meetings';
|
|
15
|
+
import ParameterError from '@webex/plugin-meetings/src/common/errors/parameter';
|
|
16
|
+
import Members from '@webex/plugin-meetings/src/members';
|
|
17
|
+
import MembersUtil from '@webex/plugin-meetings/src/members/util';
|
|
18
|
+
|
|
19
|
+
const {assert} = chai;
|
|
20
|
+
|
|
21
|
+
chai.use(chaiAsPromised);
|
|
22
|
+
sinon.assert.expose(chai.assert, {prefix: ''});
|
|
23
|
+
|
|
24
|
+
describe('plugin-meetings', () => {
|
|
25
|
+
let webex;
|
|
26
|
+
let url1;
|
|
27
|
+
const fakeMembersCollection = {
|
|
28
|
+
test1: {
|
|
29
|
+
namespace: 'Meetings',
|
|
30
|
+
participant: {
|
|
31
|
+
state: 'JOINED',
|
|
32
|
+
type: 'USER',
|
|
33
|
+
person: {
|
|
34
|
+
id: '6eb08f8b-bf69-3251-a126-b161bead2d21',
|
|
35
|
+
phoneNumber: '+18578675309',
|
|
36
|
+
isExternal: true,
|
|
37
|
+
primaryDisplayString: '+18578675309',
|
|
38
|
+
},
|
|
39
|
+
devices: [
|
|
40
|
+
{
|
|
41
|
+
url: 'https://fakeURL.com',
|
|
42
|
+
deviceType: 'SIP',
|
|
43
|
+
state: 'JOINED',
|
|
44
|
+
intents: [null],
|
|
45
|
+
correlationId: '1234',
|
|
46
|
+
provisionalUrl: 'dialout:///fake',
|
|
47
|
+
isSparkPstn: true,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
url: 'dialout:///fakeagain',
|
|
51
|
+
deviceType: 'PROVISIONAL',
|
|
52
|
+
state: 'JOINED',
|
|
53
|
+
intents: [null],
|
|
54
|
+
correlationId: '4321',
|
|
55
|
+
isVideoCallback: false,
|
|
56
|
+
clientUrl: 'https://fakeURL',
|
|
57
|
+
provisionalType: 'DIAL_OUT_ONLY',
|
|
58
|
+
dialingStatus: 'SUCCESS',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
status: {
|
|
62
|
+
audioStatus: 'SENDRECV',
|
|
63
|
+
videoStatus: 'INACTIVE',
|
|
64
|
+
},
|
|
65
|
+
id: 'abc-123-abc-123',
|
|
66
|
+
guest: true,
|
|
67
|
+
resourceGuest: false,
|
|
68
|
+
moderator: false,
|
|
69
|
+
panelist: false,
|
|
70
|
+
moveToLobbyNotAllowed: true,
|
|
71
|
+
deviceUrl: 'https://fakeDeviceurl',
|
|
72
|
+
},
|
|
73
|
+
id: 'abc-123-abc-123',
|
|
74
|
+
status: 'IN_MEETING',
|
|
75
|
+
type: 'MEETING',
|
|
76
|
+
isModerator: false,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
describe('members', () => {
|
|
81
|
+
const sandbox = sinon.createSandbox();
|
|
82
|
+
let createMembers;
|
|
83
|
+
|
|
84
|
+
beforeEach(() => {
|
|
85
|
+
webex = new MockWebex({
|
|
86
|
+
children: {
|
|
87
|
+
meetings: Meetings,
|
|
88
|
+
credentials: Credentials,
|
|
89
|
+
support: Support,
|
|
90
|
+
},
|
|
91
|
+
config: {
|
|
92
|
+
credentials: {
|
|
93
|
+
client_id: 'mock-client-id',
|
|
94
|
+
},
|
|
95
|
+
meetings: {
|
|
96
|
+
reconnection: {
|
|
97
|
+
enabled: false,
|
|
98
|
+
},
|
|
99
|
+
mediaSettings: {},
|
|
100
|
+
metrics: {},
|
|
101
|
+
stats: {},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
url1 = `https://example.com/${uuid.v4()}`;
|
|
107
|
+
|
|
108
|
+
createMembers = (options) => new Members({locusUrl: options.url}, {parent: webex});
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
afterEach(() => {
|
|
112
|
+
sandbox.restore();
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
describe('#addMembers', () => {
|
|
116
|
+
it('should invoke isInvalidInvitee and generateAddMemberOptions from MembersUtil when addMember is called with valid params', async () => {
|
|
117
|
+
sandbox.spy(MembersUtil, 'isInvalidInvitee');
|
|
118
|
+
sandbox.spy(MembersUtil, 'generateAddMemberOptions');
|
|
119
|
+
|
|
120
|
+
const members = createMembers({url: url1});
|
|
121
|
+
|
|
122
|
+
await members.addMember({phoneNumber: '+18578675309'});
|
|
123
|
+
assert.calledOnce(MembersUtil.isInvalidInvitee);
|
|
124
|
+
assert.calledOnce(MembersUtil.generateAddMemberOptions);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
it('should throw a rejection if there is no locus url', async () => {
|
|
128
|
+
const members = createMembers({url: false});
|
|
129
|
+
|
|
130
|
+
assert.isRejected(members.addMember({email: 'test@cisco.com'}));
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
describe('#sendDialPadKey', () => {
|
|
135
|
+
it('should throw a rejection when calling sendDialPadKey with no tones', async () => {
|
|
136
|
+
const members = createMembers({url: url1});
|
|
137
|
+
|
|
138
|
+
assert.isRejected(members.sendDialPadKey());
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
it('should throw a rejection when calling sendDialPadKey with no member is found', async () => {
|
|
142
|
+
const members = createMembers({url: url1});
|
|
143
|
+
|
|
144
|
+
assert.isRejected(members.sendDialPadKey('1', '1234'));
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it('should call genderateSendDTMFOptions with proper options on Members util if we the member is valid', async () => {
|
|
148
|
+
sandbox.spy(MembersUtil, 'genderateSendDTMFOptions');
|
|
149
|
+
const members = createMembers({url: url1});
|
|
150
|
+
|
|
151
|
+
members.membersCollection.setAll(fakeMembersCollection);
|
|
152
|
+
await members.sendDialPadKey('1', 'test1');
|
|
153
|
+
assert.calledWith(
|
|
154
|
+
MembersUtil.genderateSendDTMFOptions,
|
|
155
|
+
'https://fakeURL.com',
|
|
156
|
+
'1',
|
|
157
|
+
'test1',
|
|
158
|
+
url1
|
|
159
|
+
);
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
it('should call the sendDialPadKey method on membersRequest if the member is valid', async () => {
|
|
163
|
+
const members = createMembers({url: url1});
|
|
164
|
+
|
|
165
|
+
const {membersRequest} = members;
|
|
166
|
+
|
|
167
|
+
assert.exists(membersRequest);
|
|
168
|
+
const sendDialPadKeyspy = sandbox.spy(membersRequest, 'sendDialPadKey');
|
|
169
|
+
|
|
170
|
+
members.membersCollection.setAll(fakeMembersCollection);
|
|
171
|
+
await members.sendDialPadKey('1', 'test1');
|
|
172
|
+
assert.calledOnce(sendDialPadKeyspy);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
describe('#cancelPhoneInvite', () => {
|
|
177
|
+
it('should invoke isInvalidInvitee and generateAddMemberOptions from MembersUtil when addMember is called with valid params', async () => {
|
|
178
|
+
sandbox.spy(MembersUtil, 'isInvalidInvitee');
|
|
179
|
+
sandbox.spy(MembersUtil, 'cancelPhoneInviteOptions');
|
|
180
|
+
|
|
181
|
+
const members = createMembers({url: url1});
|
|
182
|
+
|
|
183
|
+
await members.cancelPhoneInvite({phoneNumber: '+18578675309'});
|
|
184
|
+
assert.calledOnce(MembersUtil.isInvalidInvitee);
|
|
185
|
+
assert.calledOnce(MembersUtil.cancelPhoneInviteOptions);
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
it('should throw a rejection if there is no locus url', async () => {
|
|
189
|
+
const members = createMembers({url: false});
|
|
190
|
+
|
|
191
|
+
assert.isRejected(members.cancelPhoneInvite({phoneNumber: '+18578675309'}));
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
describe('#raiseOrLowerHand', () => {
|
|
196
|
+
const setup = (locusUrl) => {
|
|
197
|
+
const members = createMembers({url: locusUrl});
|
|
198
|
+
|
|
199
|
+
const spies = {
|
|
200
|
+
generateRaiseHandMemberOptions: sandbox.spy(
|
|
201
|
+
MembersUtil,
|
|
202
|
+
'generateRaiseHandMemberOptions'
|
|
203
|
+
),
|
|
204
|
+
raiseOrLowerHandMember: sandbox.spy(members.membersRequest, 'raiseOrLowerHandMember'),
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
return {members, spies};
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
const checkInvalid = async (resultPromise, expectedMessage, spies) => {
|
|
211
|
+
await assert.isRejected(resultPromise, ParameterError, expectedMessage);
|
|
212
|
+
assert.notCalled(spies.generateRaiseHandMemberOptions);
|
|
213
|
+
assert.notCalled(spies.raiseOrLowerHandMember);
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
const checkValid = async (
|
|
217
|
+
resultPromise,
|
|
218
|
+
spies,
|
|
219
|
+
expectedMemberId,
|
|
220
|
+
expectedRaise,
|
|
221
|
+
expectedLocusUrl
|
|
222
|
+
) => {
|
|
223
|
+
await assert.isFulfilled(resultPromise);
|
|
224
|
+
assert.calledOnceWithExactly(
|
|
225
|
+
spies.generateRaiseHandMemberOptions,
|
|
226
|
+
expectedMemberId,
|
|
227
|
+
expectedRaise,
|
|
228
|
+
expectedLocusUrl
|
|
229
|
+
);
|
|
230
|
+
assert.calledOnceWithExactly(spies.raiseOrLowerHandMember, {
|
|
231
|
+
memberId: expectedMemberId,
|
|
232
|
+
raised: expectedRaise,
|
|
233
|
+
locusUrl: expectedLocusUrl,
|
|
234
|
+
});
|
|
235
|
+
assert.strictEqual(resultPromise, spies.raiseOrLowerHandMember.getCall(0).returnValue);
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
it('should not make a request if there is no member id', async () => {
|
|
239
|
+
const {members, spies} = setup(url1);
|
|
240
|
+
|
|
241
|
+
const resultPromise = members.raiseOrLowerHand();
|
|
242
|
+
|
|
243
|
+
await checkInvalid(
|
|
244
|
+
resultPromise,
|
|
245
|
+
'The member id must be defined to raise/lower the hand of the member.',
|
|
246
|
+
spies
|
|
247
|
+
);
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
it('should not make a request if there is no locus url', async () => {
|
|
251
|
+
const {members, spies} = setup();
|
|
252
|
+
|
|
253
|
+
const resultPromise = members.raiseOrLowerHand(uuid.v4());
|
|
254
|
+
|
|
255
|
+
await checkInvalid(
|
|
256
|
+
resultPromise,
|
|
257
|
+
'The associated locus url for this meetings members object must be defined.',
|
|
258
|
+
spies
|
|
259
|
+
);
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
it('should make the correct request when called with raise as true', async () => {
|
|
263
|
+
const memberId = uuid.v4();
|
|
264
|
+
const {members, spies} = setup(url1);
|
|
265
|
+
|
|
266
|
+
const resultPromise = members.raiseOrLowerHand(memberId, true);
|
|
267
|
+
|
|
268
|
+
await checkValid(resultPromise, spies, memberId, true, url1);
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
it('should make the correct request when called with raise as false', async () => {
|
|
272
|
+
const memberId = uuid.v4();
|
|
273
|
+
const {members, spies} = setup(url1);
|
|
274
|
+
|
|
275
|
+
const resultPromise = members.raiseOrLowerHand(memberId, false);
|
|
276
|
+
|
|
277
|
+
await checkValid(resultPromise, spies, memberId, false, url1);
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
it('should make the correct request when called with raise as default', async () => {
|
|
281
|
+
const memberId = uuid.v4();
|
|
282
|
+
const {members, spies} = setup(url1);
|
|
283
|
+
|
|
284
|
+
const resultPromise = members.raiseOrLowerHand(memberId);
|
|
285
|
+
|
|
286
|
+
await checkValid(resultPromise, spies, memberId, true, url1);
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
describe('#lowerAllHands', () => {
|
|
291
|
+
const setup = (locusUrl) => {
|
|
292
|
+
const members = createMembers({url: locusUrl});
|
|
293
|
+
|
|
294
|
+
const spies = {
|
|
295
|
+
generateLowerAllHandsMemberOptions: sandbox.spy(
|
|
296
|
+
MembersUtil,
|
|
297
|
+
'generateLowerAllHandsMemberOptions'
|
|
298
|
+
),
|
|
299
|
+
lowerAllHandsMember: sandbox.spy(members.membersRequest, 'lowerAllHandsMember'),
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
return {members, spies};
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
const checkInvalid = async (resultPromise, expectedMessage, spies) => {
|
|
306
|
+
await assert.isRejected(resultPromise, ParameterError, expectedMessage);
|
|
307
|
+
assert.notCalled(spies.generateLowerAllHandsMemberOptions);
|
|
308
|
+
assert.notCalled(spies.lowerAllHandsMember);
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
const checkValid = async (
|
|
312
|
+
resultPromise,
|
|
313
|
+
spies,
|
|
314
|
+
expectedRequestingMemberId,
|
|
315
|
+
expectedLocusUrl
|
|
316
|
+
) => {
|
|
317
|
+
await assert.isFulfilled(resultPromise);
|
|
318
|
+
assert.calledOnceWithExactly(
|
|
319
|
+
spies.generateLowerAllHandsMemberOptions,
|
|
320
|
+
expectedRequestingMemberId,
|
|
321
|
+
expectedLocusUrl
|
|
322
|
+
);
|
|
323
|
+
assert.calledOnceWithExactly(spies.lowerAllHandsMember, {
|
|
324
|
+
requestingParticipantId: expectedRequestingMemberId,
|
|
325
|
+
locusUrl: expectedLocusUrl,
|
|
326
|
+
});
|
|
327
|
+
assert.strictEqual(resultPromise, spies.lowerAllHandsMember.getCall(0).returnValue);
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
it('should not make a request if there is no requestingMemberId', async () => {
|
|
331
|
+
const {members, spies} = setup(url1);
|
|
332
|
+
|
|
333
|
+
const resultPromise = members.lowerAllHands();
|
|
334
|
+
|
|
335
|
+
await checkInvalid(
|
|
336
|
+
resultPromise,
|
|
337
|
+
'The requestingMemberId must be defined to lower all hands in a meeting.',
|
|
338
|
+
spies
|
|
339
|
+
);
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
it('should not make a request if there is no locus url', async () => {
|
|
343
|
+
const {members, spies} = setup();
|
|
344
|
+
|
|
345
|
+
const resultPromise = members.lowerAllHands(uuid.v4());
|
|
346
|
+
|
|
347
|
+
await checkInvalid(
|
|
348
|
+
resultPromise,
|
|
349
|
+
'The associated locus url for this meetings members object must be defined.',
|
|
350
|
+
spies
|
|
351
|
+
);
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
it('should make the correct request when called with requestingMemberId', async () => {
|
|
355
|
+
const requestingMemberId = uuid.v4();
|
|
356
|
+
const {members, spies} = setup(url1);
|
|
357
|
+
|
|
358
|
+
const resultPromise = members.lowerAllHands(requestingMemberId);
|
|
359
|
+
|
|
360
|
+
await checkValid(resultPromise, spies, requestingMemberId, url1);
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
});
|