@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.20
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/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/breakouts/breakout.js +116 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/index.js +226 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +37 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +88 -46
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +184 -190
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +92 -118
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +34 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +67 -111
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +80 -114
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +10 -12
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +125 -190
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +5 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1692 -1925
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +36 -77
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +224 -230
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +43 -215
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +193 -268
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +137 -228
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +5 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +490 -560
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +24 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +99 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +78 -86
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +31 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +3 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +93 -200
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +16 -39
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +9 -38
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +0 -2
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +55 -135
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +57 -32
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/multistreamMedia.js +15 -21
- package/dist/multistream/multistreamMedia.js.map +1 -1
- package/dist/multistream/receiveSlot.js +10 -50
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +45 -82
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +18 -58
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +362 -416
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +36 -57
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +138 -182
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +3 -18
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +322 -455
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +39 -64
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +94 -113
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +85 -94
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +0 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +85 -175
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +72 -53
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +25 -20
- package/src/breakouts/README.md +190 -0
- package/src/breakouts/breakout.ts +110 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/index.ts +225 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +22 -9
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +17 -12
- package/src/constants.ts +40 -1
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +114 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +148 -64
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
- package/src/media/{index.js → index.ts} +181 -131
- package/src/media/{properties.js → properties.ts} +47 -28
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
- package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
- package/src/meeting/in-meeting-actions.ts +15 -3
- package/src/meeting/{index.js → index.ts} +2263 -1427
- package/src/meeting/{muteState.js → muteState.ts} +78 -42
- package/src/meeting/{request.js → request.ts} +292 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +112 -115
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +273 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
- package/src/meetings/{collection.js → collection.ts} +6 -3
- package/src/meetings/index.ts +1159 -0
- package/src/meetings/{request.js → request.ts} +32 -25
- package/src/meetings/{util.js → util.ts} +34 -32
- package/src/member/{index.js → index.ts} +102 -56
- package/src/member/{util.js → util.ts} +52 -25
- package/src/members/{collection.js → collection.ts} +2 -2
- package/src/members/{index.js → index.ts} +219 -142
- package/src/members/{request.js → request.ts} +60 -16
- package/src/members/{util.js → util.ts} +50 -48
- package/src/metrics/{config.js → config.ts} +254 -83
- package/src/metrics/{constants.js → constants.ts} +0 -2
- package/src/metrics/{index.js → index.ts} +106 -74
- package/src/multistream/mediaRequestManager.ts +81 -15
- package/src/multistream/multistreamMedia.ts +5 -0
- package/src/multistream/receiveSlot.ts +18 -12
- package/src/multistream/receiveSlotManager.ts +23 -21
- package/src/multistream/remoteMedia.ts +15 -5
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +153 -37
- package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/{index.js → index.ts} +99 -83
- package/src/reachability/request.ts +39 -33
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/{index.js → index.ts} +195 -102
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/{index.js → index.ts} +73 -56
- package/src/roap/request.ts +157 -0
- package/src/roap/turnDiscovery.ts +77 -37
- package/src/statsAnalyzer/{global.js → global.ts} +30 -33
- package/src/statsAnalyzer/{index.js → index.ts} +468 -192
- package/src/statsAnalyzer/mqaUtil.ts +290 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/journey.js +664 -463
- package/test/integration/spec/space-meeting.js +320 -206
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/breakouts/breakout.ts +119 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/index.ts +293 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +25 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +104 -2
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +97 -103
- package/test/unit/spec/locus-info/selfUtils.js +105 -12
- package/test/unit/spec/media/index.ts +31 -47
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/effectsState.js +39 -45
- package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
- package/test/unit/spec/meeting/index.js +2017 -742
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +115 -44
- package/test/unit/spec/meeting/utils.js +104 -171
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +110 -74
- package/test/unit/spec/meetings/collection.js +1 -1
- package/test/unit/spec/meetings/index.js +439 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +0 -1
- package/test/unit/spec/member/util.js +31 -7
- package/test/unit/spec/members/index.js +104 -54
- package/test/unit/spec/members/request.js +29 -20
- package/test/unit/spec/members/utils.js +8 -5
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
- package/test/unit/spec/multistream/receiveSlot.ts +6 -6
- package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
- package/test/unit/spec/multistream/remoteMedia.ts +10 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
- package/test/unit/spec/networkQualityMonitor/index.js +21 -15
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +58 -26
- package/test/unit/spec/reconnection-manager/index.js +102 -9
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +2 -1
- package/test/unit/spec/roap/request.ts +114 -0
- package/test/unit/spec/roap/turnDiscovery.ts +64 -45
- package/test/unit/spec/stats-analyzer/index.js +27 -22
- package/test/utils/cmr.js +44 -42
- package/test/utils/testUtils.js +83 -74
- package/test/utils/webex-config.js +18 -18
- package/test/utils/webex-test-users.js +54 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -1015
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
ONLINE,
|
|
28
28
|
ROAP,
|
|
29
29
|
LOCUSINFO,
|
|
30
|
-
EVENT_TRIGGERS
|
|
30
|
+
EVENT_TRIGGERS,
|
|
31
31
|
} from '../../../../src/constants';
|
|
32
32
|
|
|
33
33
|
describe('plugin-meetings', () => {
|
|
@@ -37,17 +37,19 @@ describe('plugin-meetings', () => {
|
|
|
37
37
|
error: () => {},
|
|
38
38
|
warn: () => {},
|
|
39
39
|
trace: () => {},
|
|
40
|
-
debug: () => {}
|
|
40
|
+
debug: () => {},
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
beforeEach(() => {
|
|
44
44
|
StaticConfig.set({
|
|
45
45
|
bandwidth: {
|
|
46
|
-
audio: 50,
|
|
47
|
-
|
|
46
|
+
audio: 50,
|
|
47
|
+
video: 500,
|
|
48
|
+
},
|
|
48
49
|
});
|
|
49
50
|
LoggerConfig.set({
|
|
50
|
-
verboseEvents: true,
|
|
51
|
+
verboseEvents: true,
|
|
52
|
+
enable: false,
|
|
51
53
|
});
|
|
52
54
|
TriggerProxy.trigger = sinon.stub().returns(true);
|
|
53
55
|
});
|
|
@@ -71,13 +73,12 @@ describe('plugin-meetings', () => {
|
|
|
71
73
|
children: {
|
|
72
74
|
device: Device,
|
|
73
75
|
mercury: Mercury,
|
|
74
|
-
meetings: Meetings
|
|
75
|
-
}
|
|
76
|
+
meetings: Meetings,
|
|
77
|
+
},
|
|
76
78
|
});
|
|
77
79
|
|
|
78
|
-
|
|
79
80
|
Object.assign(webex, {
|
|
80
|
-
logging: logger
|
|
81
|
+
logging: logger,
|
|
81
82
|
});
|
|
82
83
|
|
|
83
84
|
Object.assign(webex.meetings.config, {
|
|
@@ -86,64 +87,66 @@ describe('plugin-meetings', () => {
|
|
|
86
87
|
// the server supports, minimums have to be tested
|
|
87
88
|
audio: 64000,
|
|
88
89
|
video: 4000000,
|
|
89
|
-
startBitrate: 2000
|
|
90
|
+
startBitrate: 2000,
|
|
90
91
|
},
|
|
91
92
|
experimental: {
|
|
92
|
-
enableUnifiedMeetings: true
|
|
93
|
+
enableUnifiedMeetings: true,
|
|
93
94
|
},
|
|
94
95
|
logging: {
|
|
95
96
|
enable: true,
|
|
96
|
-
verboseEvents: true
|
|
97
|
-
}
|
|
97
|
+
verboseEvents: true,
|
|
98
|
+
},
|
|
98
99
|
});
|
|
99
100
|
|
|
100
101
|
Object.assign(webex, {
|
|
101
|
-
logger
|
|
102
|
+
logger,
|
|
102
103
|
});
|
|
103
104
|
|
|
104
105
|
Object.assign(webex.meetings, {
|
|
105
|
-
startReachability: sinon.stub().returns(Promise.resolve())
|
|
106
|
+
startReachability: sinon.stub().returns(Promise.resolve()),
|
|
106
107
|
});
|
|
107
108
|
|
|
108
109
|
Object.assign(webex.internal, {
|
|
110
|
+
llm: {on: sinon.stub()},
|
|
109
111
|
device: {
|
|
110
112
|
deviceType: 'FAKE_DEVICE',
|
|
111
113
|
register: sinon.stub().returns(Promise.resolve()),
|
|
112
|
-
unregister: sinon.stub().returns(Promise.resolve())
|
|
114
|
+
unregister: sinon.stub().returns(Promise.resolve()),
|
|
113
115
|
},
|
|
114
116
|
mercury: {
|
|
115
117
|
connect: sinon.stub().returns(Promise.resolve()),
|
|
116
118
|
disconnect: sinon.stub().returns(Promise.resolve()),
|
|
117
119
|
on: () => {},
|
|
118
|
-
off: () => {}
|
|
120
|
+
off: () => {},
|
|
119
121
|
},
|
|
120
122
|
services: {
|
|
121
|
-
getMeetingPreferences: sinon.stub().returns(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
123
|
+
getMeetingPreferences: sinon.stub().returns(
|
|
124
|
+
Promise.resolve({
|
|
125
|
+
sites: [
|
|
126
|
+
{
|
|
127
|
+
siteUrl: 'site1-example.webex.com',
|
|
128
|
+
default: false,
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
siteUrl: 'site2-example.webex.com',
|
|
132
|
+
default: false,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
siteUrl: 'site3-example.webex.com',
|
|
136
|
+
default: false,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
siteUrl: 'go.webex.com',
|
|
140
|
+
default: true,
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
})
|
|
144
|
+
),
|
|
145
|
+
fetchClientRegionInfo: sinon.stub().returns(Promise.resolve()),
|
|
142
146
|
},
|
|
143
147
|
metrics: {
|
|
144
|
-
submitClientMetrics: sinon.stub().returns(Promise.resolve())
|
|
145
|
-
}
|
|
146
|
-
|
|
148
|
+
submitClientMetrics: sinon.stub().returns(Promise.resolve()),
|
|
149
|
+
},
|
|
147
150
|
});
|
|
148
151
|
webex.emit('ready');
|
|
149
152
|
});
|
|
@@ -177,10 +180,14 @@ describe('plugin-meetings', () => {
|
|
|
177
180
|
|
|
178
181
|
describe('failure', () => {
|
|
179
182
|
it('should not accept non boolean input', () => {
|
|
180
|
-
const currentEnableUnifiedMeetings =
|
|
183
|
+
const currentEnableUnifiedMeetings =
|
|
184
|
+
webex.meetings.config.experimental.enableUnifiedMeetings;
|
|
181
185
|
|
|
182
186
|
webex.meetings._toggleUnifiedMeetings('test');
|
|
183
|
-
assert.equal(
|
|
187
|
+
assert.equal(
|
|
188
|
+
webex.meetings.config.experimental.enableUnifiedMeetings,
|
|
189
|
+
currentEnableUnifiedMeetings
|
|
190
|
+
);
|
|
184
191
|
});
|
|
185
192
|
});
|
|
186
193
|
});
|
|
@@ -202,7 +209,10 @@ describe('plugin-meetings', () => {
|
|
|
202
209
|
const currentEnableAdhocMeetings = webex.meetings.config.experimental.enableAdhocMeetings;
|
|
203
210
|
|
|
204
211
|
webex.meetings._toggleAdhocMeetings('test');
|
|
205
|
-
assert.equal(
|
|
212
|
+
assert.equal(
|
|
213
|
+
webex.meetings.config.experimental.enableAdhocMeetings,
|
|
214
|
+
currentEnableAdhocMeetings
|
|
215
|
+
);
|
|
206
216
|
});
|
|
207
217
|
});
|
|
208
218
|
});
|
|
@@ -227,18 +237,25 @@ describe('plugin-meetings', () => {
|
|
|
227
237
|
const currentEnableTurnDiscovery = webex.meetings.config.experimental.enableTurnDiscovery;
|
|
228
238
|
|
|
229
239
|
webex.meetings._toggleTurnDiscovery('test');
|
|
230
|
-
assert.equal(
|
|
240
|
+
assert.equal(
|
|
241
|
+
webex.meetings.config.experimental.enableAdhocMeetings,
|
|
242
|
+
currentEnableTurnDiscovery
|
|
243
|
+
);
|
|
231
244
|
});
|
|
232
245
|
});
|
|
233
246
|
});
|
|
234
247
|
|
|
235
|
-
|
|
236
248
|
describe('Public API Contracts', () => {
|
|
237
249
|
describe('#register', () => {
|
|
238
250
|
it('emits an event and resolves when register succeeds', async () => {
|
|
239
251
|
webex.canAuthorize = true;
|
|
240
252
|
await webex.meetings.register();
|
|
241
|
-
assert.calledWith(
|
|
253
|
+
assert.calledWith(
|
|
254
|
+
TriggerProxy.trigger,
|
|
255
|
+
sinon.match.instanceOf(Meetings),
|
|
256
|
+
{file: 'meetings', function: 'register'},
|
|
257
|
+
'meetings:registered'
|
|
258
|
+
);
|
|
242
259
|
assert.isTrue(webex.meetings.registered);
|
|
243
260
|
});
|
|
244
261
|
|
|
@@ -284,9 +301,15 @@ describe('plugin-meetings', () => {
|
|
|
284
301
|
it('emits an event and resolves when unregister succeeds', (done) => {
|
|
285
302
|
webex.meetings.registered = true;
|
|
286
303
|
webex.meetings.unregister().then(() => {
|
|
287
|
-
assert.calledWith(
|
|
288
|
-
|
|
289
|
-
|
|
304
|
+
assert.calledWith(
|
|
305
|
+
TriggerProxy.trigger,
|
|
306
|
+
sinon.match.instanceOf(Meetings),
|
|
307
|
+
{
|
|
308
|
+
file: 'meetings',
|
|
309
|
+
function: 'unregister',
|
|
310
|
+
},
|
|
311
|
+
'meetings:unregistered'
|
|
312
|
+
);
|
|
290
313
|
assert.isFalse(webex.meetings.registered);
|
|
291
314
|
done();
|
|
292
315
|
});
|
|
@@ -324,7 +347,10 @@ describe('plugin-meetings', () => {
|
|
|
324
347
|
it('does not get a reachability instance', () => {
|
|
325
348
|
const reachability = webex.meetings.getReachability();
|
|
326
349
|
|
|
327
|
-
assert.notExists(
|
|
350
|
+
assert.notExists(
|
|
351
|
+
reachability,
|
|
352
|
+
'reachability is undefined because #setReachability has not been called'
|
|
353
|
+
);
|
|
328
354
|
});
|
|
329
355
|
});
|
|
330
356
|
describe('after #setReachability', () => {
|
|
@@ -337,7 +363,10 @@ describe('plugin-meetings', () => {
|
|
|
337
363
|
it('gets the reachability data instance from webex.meetings', () => {
|
|
338
364
|
const reachability = webex.meetings.getReachability();
|
|
339
365
|
|
|
340
|
-
assert.exists(
|
|
366
|
+
assert.exists(
|
|
367
|
+
reachability,
|
|
368
|
+
'reachability is defined because #setReachability has been called'
|
|
369
|
+
);
|
|
341
370
|
assert.instanceOf(reachability, Reachability, 'should be a reachability instance');
|
|
342
371
|
});
|
|
343
372
|
});
|
|
@@ -349,8 +378,15 @@ describe('plugin-meetings', () => {
|
|
|
349
378
|
it('gets the personal meeting room instance from webex.meetings', () => {
|
|
350
379
|
const personalMeetingRoom = webex.meetings.getPersonalMeetingRoom();
|
|
351
380
|
|
|
352
|
-
assert.exists(
|
|
353
|
-
|
|
381
|
+
assert.exists(
|
|
382
|
+
personalMeetingRoom,
|
|
383
|
+
'personal meeting room instance is set up at object creation'
|
|
384
|
+
);
|
|
385
|
+
assert.instanceOf(
|
|
386
|
+
personalMeetingRoom,
|
|
387
|
+
PersonalMeetingRoom,
|
|
388
|
+
'should be a personal meeting room instance'
|
|
389
|
+
);
|
|
354
390
|
});
|
|
355
391
|
});
|
|
356
392
|
describe('Static shortcut proxy methods', () => {
|
|
@@ -379,11 +415,11 @@ describe('plugin-meetings', () => {
|
|
|
379
415
|
describe('#getAllMeetings', () => {
|
|
380
416
|
it('calls MeetingCollection to get all meetings with supplied options', () => {
|
|
381
417
|
webex.meetings.getAllMeetings({
|
|
382
|
-
test: test1
|
|
418
|
+
test: test1,
|
|
383
419
|
});
|
|
384
420
|
assert.calledOnce(webex.meetings.meetingCollection.getAll);
|
|
385
421
|
assert.calledWith(webex.meetings.meetingCollection.getAll, {
|
|
386
|
-
test: test1
|
|
422
|
+
test: test1,
|
|
387
423
|
});
|
|
388
424
|
});
|
|
389
425
|
});
|
|
@@ -396,11 +432,15 @@ describe('plugin-meetings', () => {
|
|
|
396
432
|
});
|
|
397
433
|
describe('succesful requests', () => {
|
|
398
434
|
beforeEach(() => {
|
|
399
|
-
webex.meetings.request.getActiveMeetings = sinon.stub().returns(
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
435
|
+
webex.meetings.request.getActiveMeetings = sinon.stub().returns(
|
|
436
|
+
Promise.resolve({
|
|
437
|
+
loci: [
|
|
438
|
+
{
|
|
439
|
+
url: url1,
|
|
440
|
+
},
|
|
441
|
+
],
|
|
442
|
+
})
|
|
443
|
+
);
|
|
404
444
|
});
|
|
405
445
|
describe('when meeting is returned', () => {
|
|
406
446
|
let parse;
|
|
@@ -409,8 +449,8 @@ describe('plugin-meetings', () => {
|
|
|
409
449
|
parse = sinon.stub().returns(true);
|
|
410
450
|
webex.meetings.meetingCollection.getByKey = sinon.stub().returns({
|
|
411
451
|
locusInfo: {
|
|
412
|
-
parse
|
|
413
|
-
}
|
|
452
|
+
parse,
|
|
453
|
+
},
|
|
414
454
|
});
|
|
415
455
|
});
|
|
416
456
|
it('tests the sync meeting calls for existing meeting', async () => {
|
|
@@ -427,11 +467,13 @@ describe('plugin-meetings', () => {
|
|
|
427
467
|
beforeEach(() => {
|
|
428
468
|
initialSetup = sinon.stub().returns(true);
|
|
429
469
|
webex.meetings.meetingCollection.getByKey = sinon.stub().returns(null);
|
|
430
|
-
webex.meetings.create = sinon.stub().returns(
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
470
|
+
webex.meetings.create = sinon.stub().returns(
|
|
471
|
+
Promise.resolve({
|
|
472
|
+
locusInfo: {
|
|
473
|
+
initialSetup,
|
|
474
|
+
},
|
|
475
|
+
})
|
|
476
|
+
);
|
|
435
477
|
});
|
|
436
478
|
it('tests the sync meeting calls for not existing meeting', async () => {
|
|
437
479
|
await webex.meetings.syncMeetings();
|
|
@@ -441,11 +483,15 @@ describe('plugin-meetings', () => {
|
|
|
441
483
|
assert.calledOnce(webex.meetings.create);
|
|
442
484
|
assert.calledWith(webex.meetings.request.getActiveMeetings);
|
|
443
485
|
assert.calledWith(webex.meetings.meetingCollection.getByKey, 'locusUrl', url1);
|
|
444
|
-
assert.calledWith(
|
|
445
|
-
|
|
446
|
-
|
|
486
|
+
assert.calledWith(
|
|
487
|
+
webex.meetings.create,
|
|
488
|
+
{
|
|
489
|
+
url: url1,
|
|
490
|
+
},
|
|
491
|
+
'LOCUS_ID'
|
|
492
|
+
);
|
|
447
493
|
assert.calledWith(initialSetup, {
|
|
448
|
-
url: url1
|
|
494
|
+
url: url1,
|
|
449
495
|
});
|
|
450
496
|
});
|
|
451
497
|
});
|
|
@@ -460,24 +506,29 @@ describe('plugin-meetings', () => {
|
|
|
460
506
|
initialSetup = sinon.stub().returns(true);
|
|
461
507
|
webex.meetings.meetingCollection.getByKey = sinon.stub().returns({
|
|
462
508
|
locusInfo: {
|
|
463
|
-
parse
|
|
509
|
+
parse,
|
|
464
510
|
},
|
|
465
|
-
sendCallAnalyzerMetrics: sinon.stub()
|
|
511
|
+
sendCallAnalyzerMetrics: sinon.stub(),
|
|
466
512
|
});
|
|
467
513
|
webex.meetings.meetingCollection.getAll = sinon.stub().returns({
|
|
468
514
|
meetingutk: {
|
|
469
|
-
locusUrl: 'fdfdjfdhj',
|
|
470
|
-
|
|
471
|
-
});
|
|
472
|
-
webex.meetings.create = sinon.stub().returns(Promise.resolve({
|
|
473
|
-
locusInfo: {
|
|
474
|
-
initialSetup
|
|
515
|
+
locusUrl: 'fdfdjfdhj',
|
|
516
|
+
sendCallAnalyzerMetrics: sinon.stub(),
|
|
475
517
|
},
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
518
|
+
});
|
|
519
|
+
webex.meetings.create = sinon.stub().returns(
|
|
520
|
+
Promise.resolve({
|
|
521
|
+
locusInfo: {
|
|
522
|
+
initialSetup,
|
|
523
|
+
},
|
|
524
|
+
sendCallAnalyzerMetrics: sinon.stub(),
|
|
525
|
+
})
|
|
526
|
+
);
|
|
527
|
+
webex.meetings.request.getActiveMeetings = sinon.stub().returns(
|
|
528
|
+
Promise.resolve({
|
|
529
|
+
loci: [],
|
|
530
|
+
})
|
|
531
|
+
);
|
|
481
532
|
MeetingUtil.cleanUp = sinon.stub().returns(Promise.resolve());
|
|
482
533
|
});
|
|
483
534
|
it('destroy non active meetings', async () => {
|
|
@@ -499,34 +550,29 @@ describe('plugin-meetings', () => {
|
|
|
499
550
|
beforeEach(() => {
|
|
500
551
|
infoOptions = {
|
|
501
552
|
destination: 'dest-example',
|
|
502
|
-
type: 'CONVERSATION_URL'
|
|
553
|
+
type: 'CONVERSATION_URL',
|
|
503
554
|
};
|
|
504
555
|
webex.meetings.meetingCollection.getByKey = sinon.stub().returns();
|
|
505
|
-
webex.meetings.createMeeting = sinon.stub().returns(
|
|
506
|
-
|
|
507
|
-
|
|
556
|
+
webex.meetings.createMeeting = sinon.stub().returns(
|
|
557
|
+
Promise.resolve({
|
|
558
|
+
on: () => true,
|
|
559
|
+
})
|
|
560
|
+
);
|
|
508
561
|
});
|
|
509
562
|
|
|
510
|
-
it('should call MeetingInfo#fetchInfoOptions() with proper params',
|
|
511
|
-
()
|
|
512
|
-
webex.meetings.meetingInfo.fetchInfoOptions = sinon.stub().resolves(
|
|
513
|
-
infoOptions
|
|
514
|
-
);
|
|
563
|
+
it('should call MeetingInfo#fetchInfoOptions() with proper params', () => {
|
|
564
|
+
webex.meetings.meetingInfo.fetchInfoOptions = sinon.stub().resolves(infoOptions);
|
|
515
565
|
|
|
516
|
-
|
|
566
|
+
return webex.meetings.create(infoOptions.destination, infoOptions.type).then(() => {
|
|
567
|
+
assert.calledWith(
|
|
568
|
+
webex.meetings.meetingInfo.fetchInfoOptions,
|
|
517
569
|
infoOptions.destination,
|
|
518
570
|
infoOptions.type
|
|
519
|
-
)
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
webex.meetings.meetingInfo.fetchInfoOptions,
|
|
523
|
-
infoOptions.destination,
|
|
524
|
-
infoOptions.type
|
|
525
|
-
);
|
|
526
|
-
|
|
527
|
-
assert.calledTwice(webex.meetings.meetingCollection.getByKey);
|
|
528
|
-
});
|
|
571
|
+
);
|
|
572
|
+
|
|
573
|
+
assert.calledTwice(webex.meetings.meetingCollection.getByKey);
|
|
529
574
|
});
|
|
575
|
+
});
|
|
530
576
|
|
|
531
577
|
it('calls createMeeting and returns its promise', async () => {
|
|
532
578
|
const FAKE_USE_RANDOM_DELAY = true;
|
|
@@ -565,9 +611,9 @@ describe('plugin-meetings', () => {
|
|
|
565
611
|
return undefined;
|
|
566
612
|
});
|
|
567
613
|
|
|
568
|
-
webex.meetings.meetingInfo.fetchInfoOptions = sinon
|
|
569
|
-
|
|
570
|
-
|
|
614
|
+
webex.meetings.meetingInfo.fetchInfoOptions = sinon
|
|
615
|
+
.stub()
|
|
616
|
+
.resolves(scheduledMeetingFixture);
|
|
571
617
|
|
|
572
618
|
webex.meetings.meetingCollection.set(scheduledMeetingFixture);
|
|
573
619
|
|
|
@@ -602,28 +648,31 @@ describe('plugin-meetings', () => {
|
|
|
602
648
|
it('doesnt call handle locus mercury for a locus roap event', () => {
|
|
603
649
|
webex.meetings.handleLocusMercury({
|
|
604
650
|
data: {
|
|
605
|
-
eventType: 'locus.message.roap'
|
|
606
|
-
}
|
|
651
|
+
eventType: 'locus.message.roap',
|
|
652
|
+
},
|
|
607
653
|
});
|
|
608
654
|
assert.notCalled(webex.meetings.handleLocusEvent);
|
|
609
655
|
});
|
|
610
656
|
it('doesnt call handle locus mercury for an undefined eventType', () => {
|
|
611
657
|
webex.meetings.handleLocusMercury({
|
|
612
|
-
data: {
|
|
613
|
-
}
|
|
658
|
+
data: {},
|
|
614
659
|
});
|
|
615
660
|
assert.notCalled(webex.meetings.handleLocusEvent);
|
|
616
661
|
});
|
|
617
662
|
it('calls handle locus mercury for all locus events', () => {
|
|
618
663
|
webex.meetings.handleLocusMercury({
|
|
619
664
|
data: {
|
|
620
|
-
eventType: test1
|
|
621
|
-
}
|
|
665
|
+
eventType: test1,
|
|
666
|
+
},
|
|
622
667
|
});
|
|
623
668
|
assert.calledOnce(webex.meetings.handleLocusEvent);
|
|
624
|
-
assert.calledWith(
|
|
625
|
-
|
|
626
|
-
|
|
669
|
+
assert.calledWith(
|
|
670
|
+
webex.meetings.handleLocusEvent,
|
|
671
|
+
{
|
|
672
|
+
eventType: test1,
|
|
673
|
+
},
|
|
674
|
+
true
|
|
675
|
+
);
|
|
627
676
|
});
|
|
628
677
|
});
|
|
629
678
|
describe('#handleLocusEvent', () => {
|
|
@@ -634,24 +683,28 @@ describe('plugin-meetings', () => {
|
|
|
634
683
|
parse = sinon.stub().returns(true);
|
|
635
684
|
webex.meetings.meetingCollection.getByKey = sinon.stub().returns({
|
|
636
685
|
locusInfo: {
|
|
637
|
-
parse
|
|
638
|
-
}
|
|
686
|
+
parse,
|
|
687
|
+
},
|
|
639
688
|
});
|
|
640
689
|
});
|
|
641
690
|
it('should parse the meeting info', () => {
|
|
642
691
|
webex.meetings.handleLocusEvent({
|
|
643
|
-
locusUrl: url1
|
|
692
|
+
locusUrl: url1,
|
|
644
693
|
});
|
|
645
694
|
assert.calledOnce(webex.meetings.meetingCollection.getByKey);
|
|
646
695
|
assert.calledWith(webex.meetings.meetingCollection.getByKey, 'locusUrl', url1);
|
|
647
696
|
assert.calledOnce(parse);
|
|
648
|
-
assert.calledWith(
|
|
649
|
-
|
|
650
|
-
|
|
697
|
+
assert.calledWith(
|
|
698
|
+
parse,
|
|
699
|
+
{
|
|
700
|
+
locusInfo: {
|
|
701
|
+
parse,
|
|
702
|
+
},
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
locusUrl: url1,
|
|
651
706
|
}
|
|
652
|
-
|
|
653
|
-
locusUrl: url1
|
|
654
|
-
});
|
|
707
|
+
);
|
|
655
708
|
});
|
|
656
709
|
});
|
|
657
710
|
describe('there was not a meeting', () => {
|
|
@@ -660,41 +713,47 @@ describe('plugin-meetings', () => {
|
|
|
660
713
|
beforeEach(() => {
|
|
661
714
|
initialSetup = sinon.stub().returns(true);
|
|
662
715
|
webex.meetings.meetingCollection.getByKey = sinon.stub().returns(undefined);
|
|
663
|
-
webex.meetings.create = sinon.stub().returns(
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
716
|
+
webex.meetings.create = sinon.stub().returns(
|
|
717
|
+
Promise.resolve({
|
|
718
|
+
locusInfo: {
|
|
719
|
+
initialSetup,
|
|
720
|
+
},
|
|
721
|
+
})
|
|
722
|
+
);
|
|
668
723
|
});
|
|
669
724
|
it('should setup the meeting by difference event', async () => {
|
|
670
725
|
await webex.meetings.handleLocusEvent({
|
|
671
726
|
locus: {
|
|
672
727
|
id: uuid1,
|
|
673
|
-
replaces: [
|
|
674
|
-
|
|
675
|
-
|
|
728
|
+
replaces: [
|
|
729
|
+
{
|
|
730
|
+
locusUrl: 'http:locusUrl',
|
|
731
|
+
},
|
|
732
|
+
],
|
|
676
733
|
self: {
|
|
677
734
|
callBackInfo: {
|
|
678
|
-
callbackAddress: uri1
|
|
679
|
-
}
|
|
680
|
-
}
|
|
735
|
+
callbackAddress: uri1,
|
|
736
|
+
},
|
|
737
|
+
},
|
|
681
738
|
},
|
|
682
739
|
eventType: 'locus.difference',
|
|
683
|
-
locusUrl: url1
|
|
740
|
+
locusUrl: url1,
|
|
684
741
|
});
|
|
685
742
|
assert.callCount(webex.meetings.meetingCollection.getByKey, 5);
|
|
686
743
|
assert.calledWith(webex.meetings.meetingCollection.getByKey, 'locusUrl', url1);
|
|
687
744
|
assert.calledOnce(initialSetup);
|
|
688
745
|
assert.calledWith(initialSetup, {
|
|
689
746
|
id: uuid1,
|
|
690
|
-
replaces: [
|
|
691
|
-
|
|
692
|
-
|
|
747
|
+
replaces: [
|
|
748
|
+
{
|
|
749
|
+
locusUrl: 'http:locusUrl',
|
|
750
|
+
},
|
|
751
|
+
],
|
|
693
752
|
self: {
|
|
694
753
|
callBackInfo: {
|
|
695
|
-
callbackAddress: uri1
|
|
696
|
-
}
|
|
697
|
-
}
|
|
754
|
+
callbackAddress: uri1,
|
|
755
|
+
},
|
|
756
|
+
},
|
|
698
757
|
});
|
|
699
758
|
});
|
|
700
759
|
it('should setup the meeting by difference event without replaces', async () => {
|
|
@@ -703,12 +762,12 @@ describe('plugin-meetings', () => {
|
|
|
703
762
|
id: uuid1,
|
|
704
763
|
self: {
|
|
705
764
|
callBackInfo: {
|
|
706
|
-
callbackAddress: uri1
|
|
707
|
-
}
|
|
708
|
-
}
|
|
765
|
+
callbackAddress: uri1,
|
|
766
|
+
},
|
|
767
|
+
},
|
|
709
768
|
},
|
|
710
769
|
eventType: 'locus.difference',
|
|
711
|
-
locusUrl: url1
|
|
770
|
+
locusUrl: url1,
|
|
712
771
|
});
|
|
713
772
|
assert.callCount(webex.meetings.meetingCollection.getByKey, 4);
|
|
714
773
|
assert.calledWith(webex.meetings.meetingCollection.getByKey, 'locusUrl', url1);
|
|
@@ -717,9 +776,9 @@ describe('plugin-meetings', () => {
|
|
|
717
776
|
id: uuid1,
|
|
718
777
|
self: {
|
|
719
778
|
callBackInfo: {
|
|
720
|
-
callbackAddress: uri1
|
|
721
|
-
}
|
|
722
|
-
}
|
|
779
|
+
callbackAddress: uri1,
|
|
780
|
+
},
|
|
781
|
+
},
|
|
723
782
|
});
|
|
724
783
|
});
|
|
725
784
|
it('should setup the meeting by a not difference event', async () => {
|
|
@@ -728,12 +787,12 @@ describe('plugin-meetings', () => {
|
|
|
728
787
|
id: uuid1,
|
|
729
788
|
self: {
|
|
730
789
|
callBackInfo: {
|
|
731
|
-
callbackAddress: uri1
|
|
732
|
-
}
|
|
733
|
-
}
|
|
790
|
+
callbackAddress: uri1,
|
|
791
|
+
},
|
|
792
|
+
},
|
|
734
793
|
},
|
|
735
794
|
eventType: test1,
|
|
736
|
-
locusUrl: url1
|
|
795
|
+
locusUrl: url1,
|
|
737
796
|
});
|
|
738
797
|
assert.callCount(webex.meetings.meetingCollection.getByKey, 4);
|
|
739
798
|
assert.calledWith(webex.meetings.meetingCollection.getByKey, 'locusUrl', url1);
|
|
@@ -742,9 +801,9 @@ describe('plugin-meetings', () => {
|
|
|
742
801
|
id: uuid1,
|
|
743
802
|
self: {
|
|
744
803
|
callBackInfo: {
|
|
745
|
-
callbackAddress: uri1
|
|
746
|
-
}
|
|
747
|
-
}
|
|
804
|
+
callbackAddress: uri1,
|
|
805
|
+
},
|
|
806
|
+
},
|
|
748
807
|
});
|
|
749
808
|
});
|
|
750
809
|
|
|
@@ -753,13 +812,13 @@ describe('plugin-meetings', () => {
|
|
|
753
812
|
id: uuid1,
|
|
754
813
|
self: {
|
|
755
814
|
callbackInfo: {
|
|
756
|
-
callbackAddress: uri1
|
|
757
|
-
}
|
|
815
|
+
callbackAddress: uri1,
|
|
816
|
+
},
|
|
758
817
|
},
|
|
759
818
|
info: {
|
|
760
|
-
isUnifiedSpaceMeeting
|
|
819
|
+
isUnifiedSpaceMeeting,
|
|
761
820
|
},
|
|
762
|
-
conversationUrl: 'fakeConvoUrl'
|
|
821
|
+
conversationUrl: 'fakeConvoUrl',
|
|
763
822
|
},
|
|
764
823
|
eventType: test1,
|
|
765
824
|
locusUrl: url1,
|
|
@@ -768,18 +827,39 @@ describe('plugin-meetings', () => {
|
|
|
768
827
|
it('should not try to match USM meetings by conversation url', async () => {
|
|
769
828
|
await webex.meetings.handleLocusEvent(generateFakeLocusData(true));
|
|
770
829
|
assert.callCount(webex.meetings.meetingCollection.getByKey, 3);
|
|
771
|
-
assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(0).args, [
|
|
772
|
-
|
|
773
|
-
|
|
830
|
+
assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(0).args, [
|
|
831
|
+
'locusUrl',
|
|
832
|
+
url1,
|
|
833
|
+
]);
|
|
834
|
+
assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(1).args, [
|
|
835
|
+
'correlationId',
|
|
836
|
+
false,
|
|
837
|
+
]);
|
|
838
|
+
assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(2).args, [
|
|
839
|
+
'sipUri',
|
|
840
|
+
uri1,
|
|
841
|
+
]);
|
|
774
842
|
assert.calledOnce(initialSetup);
|
|
775
843
|
});
|
|
776
844
|
it('should try to match non-USM meetings by conversation url', async () => {
|
|
777
845
|
await webex.meetings.handleLocusEvent(generateFakeLocusData(false));
|
|
778
846
|
assert.callCount(webex.meetings.meetingCollection.getByKey, 4);
|
|
779
|
-
assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(0).args, [
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
847
|
+
assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(0).args, [
|
|
848
|
+
'locusUrl',
|
|
849
|
+
url1,
|
|
850
|
+
]);
|
|
851
|
+
assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(1).args, [
|
|
852
|
+
'correlationId',
|
|
853
|
+
false,
|
|
854
|
+
]);
|
|
855
|
+
assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(2).args, [
|
|
856
|
+
'sipUri',
|
|
857
|
+
uri1,
|
|
858
|
+
]);
|
|
859
|
+
assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(3).args, [
|
|
860
|
+
'conversationUrl',
|
|
861
|
+
'fakeConvoUrl',
|
|
862
|
+
]);
|
|
783
863
|
assert.calledOnce(initialSetup);
|
|
784
864
|
});
|
|
785
865
|
});
|
|
@@ -798,11 +878,14 @@ describe('plugin-meetings', () => {
|
|
|
798
878
|
beforeEach(() => {
|
|
799
879
|
clock = sinon.useFakeTimers();
|
|
800
880
|
setTimeoutSpy = sinon.spy(clock, 'setTimeout');
|
|
801
|
-
webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
881
|
+
webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(
|
|
882
|
+
Promise.resolve({
|
|
883
|
+
body: {
|
|
884
|
+
permissionToken: 'PT',
|
|
885
|
+
meetingJoinUrl: 'meetingJoinUrl',
|
|
886
|
+
},
|
|
887
|
+
})
|
|
888
|
+
);
|
|
806
889
|
const nowTimeStamp = Date.now();
|
|
807
890
|
|
|
808
891
|
FAKE_TIME_TO_START = 0.1 * 60 * 1000;
|
|
@@ -816,7 +899,12 @@ describe('plugin-meetings', () => {
|
|
|
816
899
|
clock.restore();
|
|
817
900
|
});
|
|
818
901
|
|
|
819
|
-
const checkCreateWithoutDelay = (
|
|
902
|
+
const checkCreateWithoutDelay = (
|
|
903
|
+
meeting,
|
|
904
|
+
destination,
|
|
905
|
+
type,
|
|
906
|
+
expectedMeetingData = {}
|
|
907
|
+
) => {
|
|
820
908
|
assert.calledOnce(webex.meetings.meetingInfo.fetchMeetingInfo);
|
|
821
909
|
assert.calledOnce(MeetingsUtil.getMeetingAddedType);
|
|
822
910
|
assert.notCalled(setTimeoutSpy);
|
|
@@ -832,12 +920,25 @@ describe('plugin-meetings', () => {
|
|
|
832
920
|
}
|
|
833
921
|
assert.equal(meeting.destination, destination);
|
|
834
922
|
assert.equal(meeting.destinationType, type);
|
|
835
|
-
assert.calledWith(
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
923
|
+
assert.calledWith(
|
|
924
|
+
TriggerProxy.trigger,
|
|
925
|
+
sinon.match.instanceOf(Meetings),
|
|
926
|
+
{
|
|
927
|
+
file: 'meetings',
|
|
928
|
+
function: 'createMeeting',
|
|
929
|
+
},
|
|
930
|
+
'meeting:added',
|
|
931
|
+
{
|
|
932
|
+
meeting: sinon.match.instanceOf(Meeting),
|
|
933
|
+
type: 'test meeting added type',
|
|
934
|
+
}
|
|
935
|
+
);
|
|
936
|
+
assert.calledWith(
|
|
937
|
+
TriggerProxy.trigger,
|
|
938
|
+
meeting,
|
|
939
|
+
{file: 'meetings', function: 'fetchMeetingInfo'},
|
|
940
|
+
'meeting:meetingInfoAvailable'
|
|
941
|
+
);
|
|
841
942
|
};
|
|
842
943
|
|
|
843
944
|
it('creates the meeting from a successful meeting info fetch promise testing', async () => {
|
|
@@ -845,7 +946,7 @@ describe('plugin-meetings', () => {
|
|
|
845
946
|
|
|
846
947
|
const expectedMeetingData = {
|
|
847
948
|
permissionToken: 'PT',
|
|
848
|
-
meetingJoinUrl: 'meetingJoinUrl'
|
|
949
|
+
meetingJoinUrl: 'meetingJoinUrl',
|
|
849
950
|
};
|
|
850
951
|
|
|
851
952
|
checkCreateWithoutDelay(meeting, 'test destination', 'test type', expectedMeetingData);
|
|
@@ -855,10 +956,14 @@ describe('plugin-meetings', () => {
|
|
|
855
956
|
const meeting = await webex.meetings.createMeeting('test destination', 'test type');
|
|
856
957
|
const expectedMeetingData = {
|
|
857
958
|
permissionToken: 'PT',
|
|
858
|
-
meetingJoinUrl: 'meetingJoinUrl'
|
|
959
|
+
meetingJoinUrl: 'meetingJoinUrl',
|
|
859
960
|
};
|
|
860
961
|
|
|
861
|
-
assert.instanceOf(
|
|
962
|
+
assert.instanceOf(
|
|
963
|
+
meeting,
|
|
964
|
+
Meeting,
|
|
965
|
+
'createMeeting should eventually resolve to a Meeting Object'
|
|
966
|
+
);
|
|
862
967
|
checkCreateWithoutDelay(meeting, 'test destination', 'test type', expectedMeetingData);
|
|
863
968
|
});
|
|
864
969
|
|
|
@@ -869,19 +974,27 @@ describe('plugin-meetings', () => {
|
|
|
869
974
|
info: {
|
|
870
975
|
webExMeetingId: 'locusMeetingId',
|
|
871
976
|
sipUri: 'locusSipUri',
|
|
872
|
-
owner: 'locusOwner'
|
|
977
|
+
owner: 'locusOwner',
|
|
873
978
|
},
|
|
874
979
|
meeting: {
|
|
875
|
-
startTime: fakeMeetingStartTimeString
|
|
980
|
+
startTime: fakeMeetingStartTimeString,
|
|
876
981
|
},
|
|
877
982
|
fullState: {
|
|
878
|
-
active: false
|
|
879
|
-
}
|
|
983
|
+
active: false,
|
|
984
|
+
},
|
|
880
985
|
};
|
|
881
986
|
|
|
882
|
-
const meeting = await webex.meetings.createMeeting(
|
|
987
|
+
const meeting = await webex.meetings.createMeeting(
|
|
988
|
+
FAKE_LOCUS_MEETING,
|
|
989
|
+
'test type',
|
|
990
|
+
true
|
|
991
|
+
);
|
|
883
992
|
|
|
884
|
-
assert.instanceOf(
|
|
993
|
+
assert.instanceOf(
|
|
994
|
+
meeting,
|
|
995
|
+
Meeting,
|
|
996
|
+
'createMeeting should eventually resolve to a Meeting Object'
|
|
997
|
+
);
|
|
885
998
|
assert.notCalled(webex.meetings.meetingInfo.fetchMeetingInfo);
|
|
886
999
|
assert.calledOnce(setTimeoutSpy);
|
|
887
1000
|
|
|
@@ -897,15 +1010,27 @@ describe('plugin-meetings', () => {
|
|
|
897
1010
|
// Add meeting and send trigger
|
|
898
1011
|
assert.calledWith(MeetingsUtil.getMeetingAddedType, 'test type');
|
|
899
1012
|
assert.calledTwice(TriggerProxy.trigger);
|
|
900
|
-
assert.calledWith(
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
1013
|
+
assert.calledWith(
|
|
1014
|
+
TriggerProxy.trigger,
|
|
1015
|
+
sinon.match.instanceOf(Meetings),
|
|
1016
|
+
{
|
|
1017
|
+
file: 'meetings',
|
|
1018
|
+
function: 'createMeeting',
|
|
1019
|
+
},
|
|
1020
|
+
'meeting:added',
|
|
1021
|
+
{
|
|
1022
|
+
meeting: sinon.match.instanceOf(Meeting),
|
|
1023
|
+
type: 'test meeting added type',
|
|
1024
|
+
}
|
|
1025
|
+
);
|
|
905
1026
|
|
|
906
1027
|
// When timer expires
|
|
907
1028
|
clock.tick(FAKE_TIME_TO_START);
|
|
908
|
-
assert.calledWith(
|
|
1029
|
+
assert.calledWith(
|
|
1030
|
+
webex.meetings.meetingInfo.fetchMeetingInfo,
|
|
1031
|
+
FAKE_LOCUS_MEETING,
|
|
1032
|
+
'test type'
|
|
1033
|
+
);
|
|
909
1034
|
|
|
910
1035
|
// Parse meeting info is called again with new meeting info
|
|
911
1036
|
await testUtils.flushPromises();
|
|
@@ -917,7 +1042,12 @@ describe('plugin-meetings', () => {
|
|
|
917
1042
|
assert.equal(meeting.owner, 'locusOwner');
|
|
918
1043
|
assert.equal(meeting.permissionToken, 'PT');
|
|
919
1044
|
|
|
920
|
-
assert.calledWith(
|
|
1045
|
+
assert.calledWith(
|
|
1046
|
+
TriggerProxy.trigger,
|
|
1047
|
+
meeting,
|
|
1048
|
+
{file: 'meetings', function: 'fetchMeetingInfo'},
|
|
1049
|
+
'meeting:meetingInfoAvailable'
|
|
1050
|
+
);
|
|
921
1051
|
});
|
|
922
1052
|
|
|
923
1053
|
it('creates the meeting from a successful meeting info fetch that has no random delay because it is active', async () => {
|
|
@@ -927,19 +1057,27 @@ describe('plugin-meetings', () => {
|
|
|
927
1057
|
info: {
|
|
928
1058
|
webExMeetingId: 'locusMeetingId',
|
|
929
1059
|
sipUri: 'locusSipUri',
|
|
930
|
-
owner: 'locusOwner'
|
|
1060
|
+
owner: 'locusOwner',
|
|
931
1061
|
},
|
|
932
1062
|
meeting: {
|
|
933
|
-
startTime: fakeMeetingStartTimeString
|
|
1063
|
+
startTime: fakeMeetingStartTimeString,
|
|
934
1064
|
},
|
|
935
1065
|
fullState: {
|
|
936
|
-
active: true
|
|
937
|
-
}
|
|
1066
|
+
active: true,
|
|
1067
|
+
},
|
|
938
1068
|
};
|
|
939
1069
|
|
|
940
|
-
const meeting = await webex.meetings.createMeeting(
|
|
1070
|
+
const meeting = await webex.meetings.createMeeting(
|
|
1071
|
+
FAKE_LOCUS_MEETING,
|
|
1072
|
+
'test type',
|
|
1073
|
+
true
|
|
1074
|
+
);
|
|
941
1075
|
|
|
942
|
-
assert.instanceOf(
|
|
1076
|
+
assert.instanceOf(
|
|
1077
|
+
meeting,
|
|
1078
|
+
Meeting,
|
|
1079
|
+
'createMeeting should eventually resolve to a Meeting Object'
|
|
1080
|
+
);
|
|
943
1081
|
checkCreateWithoutDelay(meeting, FAKE_LOCUS_MEETING, 'test type');
|
|
944
1082
|
});
|
|
945
1083
|
|
|
@@ -950,27 +1088,35 @@ describe('plugin-meetings', () => {
|
|
|
950
1088
|
info: {
|
|
951
1089
|
webExMeetingId: 'locusMeetingId',
|
|
952
1090
|
sipUri: 'locusSipUri',
|
|
953
|
-
owner: 'locusOwner'
|
|
1091
|
+
owner: 'locusOwner',
|
|
954
1092
|
},
|
|
955
1093
|
meeting: {
|
|
956
|
-
startTime: fakeMeetingStartTimeString -
|
|
1094
|
+
startTime: fakeMeetingStartTimeString - 1 * 60 * 60 * 1000,
|
|
957
1095
|
},
|
|
958
1096
|
fullState: {
|
|
959
|
-
active: false
|
|
960
|
-
}
|
|
1097
|
+
active: false,
|
|
1098
|
+
},
|
|
961
1099
|
};
|
|
962
1100
|
|
|
963
|
-
const meeting = await webex.meetings.createMeeting(
|
|
1101
|
+
const meeting = await webex.meetings.createMeeting(
|
|
1102
|
+
FAKE_LOCUS_MEETING,
|
|
1103
|
+
'test type',
|
|
1104
|
+
true
|
|
1105
|
+
);
|
|
964
1106
|
|
|
965
|
-
assert.instanceOf(
|
|
1107
|
+
assert.instanceOf(
|
|
1108
|
+
meeting,
|
|
1109
|
+
Meeting,
|
|
1110
|
+
'createMeeting should eventually resolve to a Meeting Object'
|
|
1111
|
+
);
|
|
966
1112
|
checkCreateWithoutDelay(meeting, FAKE_LOCUS_MEETING, 'test type');
|
|
967
1113
|
});
|
|
968
1114
|
|
|
969
1115
|
it('creates the meeting from a successful meeting info fetch that has no random delay because enableUnifiedMeetings is disabled', async () => {
|
|
970
1116
|
Object.assign(webex.meetings.config, {
|
|
971
1117
|
experimental: {
|
|
972
|
-
enableUnifiedMeetings: false
|
|
973
|
-
}
|
|
1118
|
+
enableUnifiedMeetings: false,
|
|
1119
|
+
},
|
|
974
1120
|
});
|
|
975
1121
|
const FAKE_LOCUS_MEETING = {
|
|
976
1122
|
conversationUrl: 'locusConvURL',
|
|
@@ -978,19 +1124,27 @@ describe('plugin-meetings', () => {
|
|
|
978
1124
|
info: {
|
|
979
1125
|
webExMeetingId: 'locusMeetingId',
|
|
980
1126
|
sipUri: 'locusSipUri',
|
|
981
|
-
owner: 'locusOwner'
|
|
1127
|
+
owner: 'locusOwner',
|
|
982
1128
|
},
|
|
983
1129
|
meeting: {
|
|
984
|
-
startTime: fakeMeetingStartTimeString
|
|
1130
|
+
startTime: fakeMeetingStartTimeString,
|
|
985
1131
|
},
|
|
986
1132
|
fullState: {
|
|
987
|
-
active: false
|
|
988
|
-
}
|
|
1133
|
+
active: false,
|
|
1134
|
+
},
|
|
989
1135
|
};
|
|
990
1136
|
|
|
991
|
-
const meeting = await webex.meetings.createMeeting(
|
|
1137
|
+
const meeting = await webex.meetings.createMeeting(
|
|
1138
|
+
FAKE_LOCUS_MEETING,
|
|
1139
|
+
'test type',
|
|
1140
|
+
true
|
|
1141
|
+
);
|
|
992
1142
|
|
|
993
|
-
assert.instanceOf(
|
|
1143
|
+
assert.instanceOf(
|
|
1144
|
+
meeting,
|
|
1145
|
+
Meeting,
|
|
1146
|
+
'createMeeting should eventually resolve to a Meeting Object'
|
|
1147
|
+
);
|
|
994
1148
|
checkCreateWithoutDelay(meeting, FAKE_LOCUS_MEETING, 'test type');
|
|
995
1149
|
});
|
|
996
1150
|
});
|
|
@@ -999,22 +1153,40 @@ describe('plugin-meetings', () => {
|
|
|
999
1153
|
beforeEach(() => {
|
|
1000
1154
|
console.error = sinon.stub().returns(false);
|
|
1001
1155
|
TriggerProxy.trigger.reset();
|
|
1002
|
-
webex.meetings.meetingInfo.fetchMeetingInfo = sinon
|
|
1156
|
+
webex.meetings.meetingInfo.fetchMeetingInfo = sinon
|
|
1157
|
+
.stub()
|
|
1158
|
+
.returns(Promise.reject(new Error('test')));
|
|
1003
1159
|
});
|
|
1004
1160
|
it('creates the meeting from a rejected meeting info fetch', async () => {
|
|
1005
1161
|
const meeting = await webex.meetings.createMeeting('test destination', 'test type');
|
|
1006
1162
|
|
|
1007
|
-
assert.instanceOf(
|
|
1163
|
+
assert.instanceOf(
|
|
1164
|
+
meeting,
|
|
1165
|
+
Meeting,
|
|
1166
|
+
'createMeeting should eventually resolve to a Meeting Object'
|
|
1167
|
+
);
|
|
1008
1168
|
assert.calledOnce(webex.meetings.meetingInfo.fetchMeetingInfo);
|
|
1009
1169
|
assert.calledOnce(MeetingsUtil.getMeetingAddedType);
|
|
1010
1170
|
assert.calledTwice(TriggerProxy.trigger);
|
|
1011
|
-
assert.calledWith(
|
|
1171
|
+
assert.calledWith(
|
|
1172
|
+
webex.meetings.meetingInfo.fetchMeetingInfo,
|
|
1173
|
+
'test destination',
|
|
1174
|
+
'test type'
|
|
1175
|
+
);
|
|
1012
1176
|
assert.calledWith(MeetingsUtil.getMeetingAddedType, 'test type');
|
|
1013
|
-
assert.calledWith(
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1177
|
+
assert.calledWith(
|
|
1178
|
+
TriggerProxy.trigger,
|
|
1179
|
+
sinon.match.instanceOf(Meetings),
|
|
1180
|
+
{
|
|
1181
|
+
file: 'meetings',
|
|
1182
|
+
function: 'createMeeting',
|
|
1183
|
+
},
|
|
1184
|
+
'meeting:added',
|
|
1185
|
+
{
|
|
1186
|
+
meeting: sinon.match.instanceOf(Meeting),
|
|
1187
|
+
type: 'test meeting added type',
|
|
1188
|
+
}
|
|
1189
|
+
);
|
|
1018
1190
|
});
|
|
1019
1191
|
});
|
|
1020
1192
|
});
|
|
@@ -1039,11 +1211,19 @@ describe('plugin-meetings', () => {
|
|
|
1039
1211
|
|
|
1040
1212
|
assert.calledOnce(webex.meetings.meetingCollection.delete);
|
|
1041
1213
|
assert.calledWith(webex.meetings.meetingCollection.delete, meeting.id);
|
|
1042
|
-
assert.calledWith(
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1214
|
+
assert.calledWith(
|
|
1215
|
+
TriggerProxy.trigger,
|
|
1216
|
+
sinon.match.instanceOf(Meetings),
|
|
1217
|
+
{
|
|
1218
|
+
file: 'meetings',
|
|
1219
|
+
function: 'destroy',
|
|
1220
|
+
},
|
|
1221
|
+
'meeting:removed',
|
|
1222
|
+
{
|
|
1223
|
+
meetingId: meeting.id,
|
|
1224
|
+
reason: test1,
|
|
1225
|
+
}
|
|
1226
|
+
);
|
|
1047
1227
|
});
|
|
1048
1228
|
});
|
|
1049
1229
|
|
|
@@ -1068,7 +1248,8 @@ describe('plugin-meetings', () => {
|
|
|
1068
1248
|
it('should trigger event upon mercury disconnect', () => {
|
|
1069
1249
|
const {meetings} = webex;
|
|
1070
1250
|
const SCOPE = {
|
|
1071
|
-
file: 'meetings/index',
|
|
1251
|
+
file: 'meetings/index',
|
|
1252
|
+
function: 'handleMercuryOffline',
|
|
1072
1253
|
};
|
|
1073
1254
|
const EVENT = 'network:disconnected';
|
|
1074
1255
|
|
|
@@ -1098,13 +1279,11 @@ describe('plugin-meetings', () => {
|
|
|
1098
1279
|
services: {
|
|
1099
1280
|
getMeetingPreferences: sinon.stub().returns(Promise.resolve({})),
|
|
1100
1281
|
},
|
|
1101
|
-
|
|
1102
1282
|
});
|
|
1103
1283
|
|
|
1104
|
-
await webex.meetings.fetchUserPreferredWebexSite()
|
|
1105
|
-
.
|
|
1106
|
-
|
|
1107
|
-
});
|
|
1284
|
+
await webex.meetings.fetchUserPreferredWebexSite().then(() => {
|
|
1285
|
+
assert.equal(webex.meetings.preferredWebexSite, '');
|
|
1286
|
+
});
|
|
1108
1287
|
});
|
|
1109
1288
|
});
|
|
1110
1289
|
});
|
|
@@ -1120,11 +1299,14 @@ describe('plugin-meetings', () => {
|
|
|
1120
1299
|
TriggerProxy.trigger.reset();
|
|
1121
1300
|
// clock = sinon.useFakeTimers();
|
|
1122
1301
|
// setTimeoutSpy = sinon.spy(clock, 'setTimeout');
|
|
1123
|
-
webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1302
|
+
webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(
|
|
1303
|
+
Promise.resolve({
|
|
1304
|
+
body: {
|
|
1305
|
+
permissionToken: 'PT',
|
|
1306
|
+
meetingJoinUrl: 'meetingJoinUrl',
|
|
1307
|
+
},
|
|
1308
|
+
})
|
|
1309
|
+
);
|
|
1128
1310
|
|
|
1129
1311
|
meeting = await webex.meetings.createMeeting('test destination', 'test type');
|
|
1130
1312
|
|
|
@@ -1132,37 +1314,37 @@ describe('plugin-meetings', () => {
|
|
|
1132
1314
|
});
|
|
1133
1315
|
|
|
1134
1316
|
it('triggers correct event when CONTROLS_ENTRY_EXIT_TONE_UPDATED emitted', async () => {
|
|
1135
|
-
await meeting.locusInfo.emitScoped(
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
{entryExitTone: 'foo'}
|
|
1139
|
-
);
|
|
1317
|
+
await meeting.locusInfo.emitScoped({}, LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, {
|
|
1318
|
+
entryExitTone: 'foo',
|
|
1319
|
+
});
|
|
1140
1320
|
|
|
1141
1321
|
assert.calledOnce(TriggerProxy.trigger);
|
|
1142
|
-
assert.calledWith(
|
|
1322
|
+
assert.calledWith(
|
|
1323
|
+
TriggerProxy.trigger,
|
|
1324
|
+
sinon.match.instanceOf(Meeting),
|
|
1143
1325
|
{
|
|
1144
1326
|
file: 'meeting/index',
|
|
1145
|
-
function: 'setupLocusControlsListener'
|
|
1327
|
+
function: 'setupLocusControlsListener',
|
|
1146
1328
|
},
|
|
1147
1329
|
EVENT_TRIGGERS.MEETING_ENTRY_EXIT_TONE_UPDATE,
|
|
1148
|
-
{entryExitTone: 'foo'}
|
|
1330
|
+
{entryExitTone: 'foo'}
|
|
1331
|
+
);
|
|
1149
1332
|
});
|
|
1150
1333
|
|
|
1151
1334
|
const checkSelfTrigger = async (inEvent, outEvent) => {
|
|
1152
|
-
await meeting.locusInfo.emitScoped(
|
|
1153
|
-
{},
|
|
1154
|
-
inEvent,
|
|
1155
|
-
{foo: 'bar'}
|
|
1156
|
-
);
|
|
1335
|
+
await meeting.locusInfo.emitScoped({}, inEvent, {foo: 'bar'});
|
|
1157
1336
|
|
|
1158
1337
|
assert.calledOnce(TriggerProxy.trigger);
|
|
1159
|
-
assert.calledWith(
|
|
1338
|
+
assert.calledWith(
|
|
1339
|
+
TriggerProxy.trigger,
|
|
1340
|
+
sinon.match.instanceOf(Meeting),
|
|
1160
1341
|
{
|
|
1161
1342
|
file: 'meeting/index',
|
|
1162
|
-
function: 'setUpLocusInfoSelfListener'
|
|
1343
|
+
function: 'setUpLocusInfoSelfListener',
|
|
1163
1344
|
},
|
|
1164
1345
|
outEvent,
|
|
1165
|
-
{payload: {foo: 'bar'}}
|
|
1346
|
+
{payload: {foo: 'bar'}}
|
|
1347
|
+
);
|
|
1166
1348
|
};
|
|
1167
1349
|
|
|
1168
1350
|
it('triggers correct event when SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE emitted', async () => {
|