@webex/plugin-meetings 3.12.0-next.9 → 3.12.0-next.90
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/AGENTS.md +9 -0
- package/dist/aiEnableRequest/index.js +15 -2
- package/dist/aiEnableRequest/index.js.map +1 -1
- package/dist/breakouts/breakout.js +8 -3
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/index.js +26 -2
- package/dist/breakouts/index.js.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/constants.js +35 -9
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +11 -1
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/index.js +67 -29
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js +91 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/hashTree/constants.js +13 -1
- package/dist/hashTree/constants.js.map +1 -1
- package/dist/hashTree/hashTreeParser.js +880 -382
- package/dist/hashTree/hashTreeParser.js.map +1 -1
- package/dist/hashTree/utils.js +42 -0
- package/dist/hashTree/utils.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/interceptors/dataChannelAuthToken.js +75 -15
- package/dist/interceptors/dataChannelAuthToken.js.map +1 -1
- package/dist/interceptors/locusRetry.js +23 -8
- package/dist/interceptors/locusRetry.js.map +1 -1
- package/dist/interpretation/index.js +10 -1
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/interpretation.types.js +7 -0
- package/dist/interpretation/interpretation.types.js.map +1 -0
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +4 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +303 -88
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +36 -5
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/types.js +19 -0
- package/dist/locus-info/types.js.map +1 -1
- package/dist/media/index.js +3 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +1 -0
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +5 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1233 -793
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +229 -82
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +10 -1
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +5 -2
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +35 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +2 -2
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +231 -118
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +6 -1
- package/dist/meetings/meetings.types.js.map +1 -1
- package/dist/meetings/request.js +39 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +79 -5
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +10 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +30 -0
- package/dist/member/util.js.map +1 -1
- package/dist/members/index.js +101 -43
- package/dist/members/index.js.map +1 -1
- package/dist/members/util.js +8 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +5 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/codec/constants.js +63 -0
- package/dist/multistream/codec/constants.js.map +1 -0
- package/dist/multistream/mediaRequestManager.js +62 -15
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +9 -0
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/reachability/index.js +10 -13
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachability.types.js +2 -0
- package/dist/reachability/reachability.types.js.map +1 -1
- package/dist/reachability/util.js +45 -0
- package/dist/reachability/util.js.map +1 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/recording-controller/index.js +1 -3
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/types/config.d.ts +2 -2
- package/dist/types/constants.d.ts +12 -1
- package/dist/types/controls-options-manager/constants.d.ts +6 -1
- package/dist/types/controls-options-manager/index.d.ts +16 -0
- package/dist/types/hashTree/constants.d.ts +2 -0
- package/dist/types/hashTree/hashTreeParser.d.ts +146 -17
- package/dist/types/hashTree/utils.d.ts +18 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/interceptors/locusRetry.d.ts +4 -4
- package/dist/types/interpretation/interpretation.types.d.ts +10 -0
- package/dist/types/locus-info/index.d.ts +50 -6
- package/dist/types/locus-info/infoUtils.d.ts +8 -0
- package/dist/types/locus-info/types.d.ts +21 -1
- package/dist/types/media/properties.d.ts +1 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
- package/dist/types/meeting/index.d.ts +94 -7
- package/dist/types/meeting/locusMediaRequest.d.ts +12 -0
- package/dist/types/meeting/request.d.ts +1 -0
- package/dist/types/meeting/util.d.ts +9 -0
- package/dist/types/meetings/index.d.ts +30 -18
- package/dist/types/meetings/meetings.types.d.ts +15 -0
- package/dist/types/meetings/request.d.ts +14 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/member/util.d.ts +9 -0
- package/dist/types/members/index.d.ts +15 -2
- package/dist/types/members/util.d.ts +1 -5
- package/dist/types/metrics/constants.d.ts +4 -0
- package/dist/types/multistream/codec/constants.d.ts +7 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +22 -5
- package/dist/types/reachability/index.d.ts +1 -1
- package/dist/types/reachability/reachability.types.d.ts +7 -0
- package/dist/types/reachability/util.d.ts +17 -0
- package/dist/types/reactions/reactions.type.d.ts +3 -0
- package/dist/webinar/index.js +305 -159
- package/dist/webinar/index.js.map +1 -1
- package/package.json +22 -22
- package/src/aiEnableRequest/index.ts +16 -0
- package/src/breakouts/breakout.ts +3 -1
- package/src/breakouts/index.ts +31 -0
- package/src/config.ts +2 -2
- package/src/constants.ts +20 -3
- package/src/controls-options-manager/constants.ts +14 -1
- package/src/controls-options-manager/index.ts +87 -28
- package/src/controls-options-manager/util.ts +81 -1
- package/src/hashTree/constants.ts +16 -0
- package/src/hashTree/hashTreeParser.ts +580 -196
- package/src/hashTree/utils.ts +36 -0
- package/src/index.ts +6 -0
- package/src/interceptors/dataChannelAuthToken.ts +88 -12
- package/src/interceptors/locusRetry.ts +25 -4
- package/src/interpretation/index.ts +27 -9
- package/src/interpretation/interpretation.types.ts +11 -0
- package/src/locus-info/controlsUtils.ts +3 -1
- package/src/locus-info/index.ts +304 -100
- package/src/locus-info/infoUtils.ts +41 -6
- package/src/locus-info/types.ts +25 -1
- package/src/media/index.ts +3 -0
- package/src/media/properties.ts +1 -0
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +494 -67
- package/src/meeting/locusMediaRequest.ts +106 -6
- package/src/meeting/muteState.ts +10 -1
- package/src/meeting/request.ts +11 -0
- package/src/meeting/util.ts +47 -5
- package/src/meeting-info/meeting-info-v2.ts +4 -2
- package/src/meetings/index.ts +133 -78
- package/src/meetings/meetings.types.ts +19 -0
- package/src/meetings/request.ts +43 -0
- package/src/meetings/util.ts +97 -1
- package/src/member/index.ts +10 -0
- package/src/member/types.ts +1 -0
- package/src/member/util.ts +29 -0
- package/src/members/index.ts +70 -7
- package/src/members/util.ts +12 -4
- package/src/metrics/constants.ts +4 -0
- package/src/multistream/codec/constants.ts +58 -0
- package/src/multistream/mediaRequestManager.ts +119 -28
- package/src/multistream/receiveSlot.ts +18 -0
- package/src/reachability/index.ts +19 -15
- package/src/reachability/reachability.types.ts +11 -0
- package/src/reachability/util.ts +36 -0
- package/src/reactions/reactions.type.ts +3 -0
- package/src/recording-controller/index.ts +1 -2
- package/src/webinar/index.ts +214 -36
- package/test/unit/spec/aiEnableRequest/index.ts +86 -0
- package/test/unit/spec/breakouts/breakout.ts +9 -3
- package/test/unit/spec/breakouts/index.ts +49 -0
- package/test/unit/spec/controls-options-manager/index.js +244 -29
- package/test/unit/spec/controls-options-manager/util.js +165 -0
- package/test/unit/spec/hashTree/hashTreeParser.ts +1838 -180
- package/test/unit/spec/hashTree/utils.ts +125 -1
- package/test/unit/spec/interceptors/dataChannelAuthToken.ts +196 -0
- package/test/unit/spec/interceptors/locusRetry.ts +205 -4
- package/test/unit/spec/interpretation/index.ts +26 -4
- package/test/unit/spec/locus-info/controlsUtils.js +172 -57
- package/test/unit/spec/locus-info/index.js +499 -81
- package/test/unit/spec/locus-info/infoUtils.js +184 -1
- package/test/unit/spec/media/index.ts +31 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
- package/test/unit/spec/meeting/index.js +1615 -42
- package/test/unit/spec/meeting/locusMediaRequest.ts +302 -4
- package/test/unit/spec/meeting/muteState.js +81 -0
- package/test/unit/spec/meeting/request.js +12 -0
- package/test/unit/spec/meeting/utils.js +157 -1
- package/test/unit/spec/meeting-info/meetinginfov2.js +19 -10
- package/test/unit/spec/meetings/index.js +363 -36
- package/test/unit/spec/meetings/request.js +141 -0
- package/test/unit/spec/meetings/utils.js +189 -0
- package/test/unit/spec/member/index.js +7 -0
- package/test/unit/spec/member/util.js +89 -0
- package/test/unit/spec/members/index.js +216 -0
- package/test/unit/spec/members/request.js +37 -1
- package/test/unit/spec/members/utils.js +63 -0
- package/test/unit/spec/multistream/mediaRequestManager.ts +501 -37
- package/test/unit/spec/reachability/index.ts +59 -46
- package/test/unit/spec/reachability/util.ts +31 -0
- package/test/unit/spec/recording-controller/index.js +9 -8
- package/test/unit/spec/webinar/index.ts +329 -28
|
@@ -60,6 +60,7 @@ describe('plugin-meetings', () => {
|
|
|
60
60
|
meeting.annotaion = {cleanUp: sinon.stub()};
|
|
61
61
|
meeting.getWebexObject = sinon.stub().returns(webex);
|
|
62
62
|
meeting.simultaneousInterpretation = {cleanUp: sinon.stub()};
|
|
63
|
+
meeting.locusInfo = {cleanUp: sinon.stub()};
|
|
63
64
|
meeting.trigger = sinon.stub();
|
|
64
65
|
meeting.webex = webex;
|
|
65
66
|
meeting.webex.internal.newMetrics.callDiagnosticMetrics =
|
|
@@ -89,6 +90,7 @@ describe('plugin-meetings', () => {
|
|
|
89
90
|
assert.calledOnceWithExactly(meeting.cleanupLLMConneciton, {throwOnError: false});
|
|
90
91
|
assert.calledOnce(meeting.breakouts.cleanUp);
|
|
91
92
|
assert.calledOnce(meeting.simultaneousInterpretation.cleanUp);
|
|
93
|
+
assert.calledOnce(meeting.locusInfo.cleanUp);
|
|
92
94
|
assert.calledOnce(webex.internal.device.meetingEnded);
|
|
93
95
|
assert.calledOnceWithExactly(
|
|
94
96
|
meeting.webex.internal.newMetrics.callDiagnosticMetrics.clearEventLimitsForCorrelationId,
|
|
@@ -110,6 +112,7 @@ describe('plugin-meetings', () => {
|
|
|
110
112
|
assert.notCalled(meeting.cleanupLLMConneciton);
|
|
111
113
|
assert.calledOnce(meeting.breakouts.cleanUp);
|
|
112
114
|
assert.calledOnce(meeting.simultaneousInterpretation.cleanUp);
|
|
115
|
+
assert.calledOnce(meeting.locusInfo.cleanUp);
|
|
113
116
|
assert.calledOnce(webex.internal.device.meetingEnded);
|
|
114
117
|
assert.calledOnceWithExactly(
|
|
115
118
|
meeting.webex.internal.newMetrics.callDiagnosticMetrics.clearEventLimitsForCorrelationId,
|
|
@@ -130,6 +133,7 @@ describe('plugin-meetings', () => {
|
|
|
130
133
|
assert.notCalled(meeting.cleanupLLMConneciton);
|
|
131
134
|
assert.calledOnce(meeting.breakouts.cleanUp);
|
|
132
135
|
assert.calledOnce(meeting.simultaneousInterpretation.cleanUp);
|
|
136
|
+
assert.calledOnce(meeting.locusInfo.cleanUp);
|
|
133
137
|
assert.calledOnce(webex.internal.device.meetingEnded);
|
|
134
138
|
assert.calledOnceWithExactly(
|
|
135
139
|
meeting.webex.internal.newMetrics.callDiagnosticMetrics.clearEventLimitsForCorrelationId,
|
|
@@ -272,6 +276,31 @@ describe('plugin-meetings', () => {
|
|
|
272
276
|
assert.notCalled(meeting.locusInfo.handleLocusAPIResponse);
|
|
273
277
|
});
|
|
274
278
|
|
|
279
|
+
it('should call handleLocusAPIResponse when response body is an unwrapped LocusDTO', () => {
|
|
280
|
+
const meeting = {
|
|
281
|
+
locusInfo: {
|
|
282
|
+
handleLocusAPIResponse: sinon.stub(),
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
const originalResponse = {
|
|
287
|
+
body: {
|
|
288
|
+
url: 'https://locus-a.wbx2.com/locus/api/v1/loci/some-id',
|
|
289
|
+
participants: [],
|
|
290
|
+
self: {},
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
const response = MeetingUtil.updateLocusFromApiResponse(meeting, originalResponse);
|
|
295
|
+
|
|
296
|
+
assert.deepEqual(response, originalResponse);
|
|
297
|
+
assert.calledOnceWithExactly(
|
|
298
|
+
meeting.locusInfo.handleLocusAPIResponse,
|
|
299
|
+
meeting,
|
|
300
|
+
originalResponse.body
|
|
301
|
+
);
|
|
302
|
+
});
|
|
303
|
+
|
|
275
304
|
it('should work with an undefined meeting', () => {
|
|
276
305
|
const originalResponse = {
|
|
277
306
|
body: {
|
|
@@ -290,6 +319,7 @@ describe('plugin-meetings', () => {
|
|
|
290
319
|
const addSequenceSpy = sinon.spy(MeetingUtil, 'addSequence');
|
|
291
320
|
|
|
292
321
|
const meeting = {
|
|
322
|
+
locusUrl: 'https://locus.example.com/loci/abc',
|
|
293
323
|
request: sinon.stub().returns(Promise.resolve('result')),
|
|
294
324
|
};
|
|
295
325
|
|
|
@@ -297,6 +327,7 @@ describe('plugin-meetings', () => {
|
|
|
297
327
|
|
|
298
328
|
const options = {
|
|
299
329
|
some: 'option',
|
|
330
|
+
uri: 'https://locus.example.com/loci/abc',
|
|
300
331
|
body: {},
|
|
301
332
|
};
|
|
302
333
|
|
|
@@ -310,7 +341,7 @@ describe('plugin-meetings', () => {
|
|
|
310
341
|
addSequenceSpy.resetHistory();
|
|
311
342
|
|
|
312
343
|
// body missing from options
|
|
313
|
-
result = await locusDeltaRequest({});
|
|
344
|
+
result = await locusDeltaRequest({uri: 'https://locus.example.com/loci/abc'});
|
|
314
345
|
assert.equal(result, 'result');
|
|
315
346
|
assert.calledOnceWithExactly(updateLocusFromApiResponseSpy, meeting, 'result');
|
|
316
347
|
assert.calledOnceWithExactly(addSequenceSpy, meeting, options.body);
|
|
@@ -324,6 +355,78 @@ describe('plugin-meetings', () => {
|
|
|
324
355
|
WeakRef.prototype.deref.restore();
|
|
325
356
|
});
|
|
326
357
|
|
|
358
|
+
it('calls updateLocusFromApiResponse when request uri starts with the meeting locusUrl', async () => {
|
|
359
|
+
const updateLocusFromApiResponseSpy = sinon.spy(MeetingUtil, 'updateLocusFromApiResponse');
|
|
360
|
+
|
|
361
|
+
const meeting = {
|
|
362
|
+
locusUrl: 'https://locus.example.com/loci/abc',
|
|
363
|
+
request: sinon.stub().returns(Promise.resolve('result')),
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
const locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
|
|
367
|
+
|
|
368
|
+
const result = await locusDeltaRequest({
|
|
369
|
+
uri: 'https://locus.example.com/loci/abc/participant/123',
|
|
370
|
+
body: {},
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
assert.equal(result, 'result');
|
|
374
|
+
assert.calledOnceWithExactly(updateLocusFromApiResponseSpy, meeting, 'result');
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
it('does not call updateLocusFromApiResponse when request uri does not match the meeting locusUrl', async () => {
|
|
378
|
+
const updateLocusFromApiResponseSpy = sinon.spy(MeetingUtil, 'updateLocusFromApiResponse');
|
|
379
|
+
|
|
380
|
+
const meeting = {
|
|
381
|
+
locusUrl: 'https://locus.example.com/loci/abc',
|
|
382
|
+
request: sinon.stub().returns(Promise.resolve('result')),
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
const locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
|
|
386
|
+
|
|
387
|
+
const result = await locusDeltaRequest({
|
|
388
|
+
uri: 'https://locus.example.com/loci/different',
|
|
389
|
+
body: {},
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
assert.equal(result, 'result');
|
|
393
|
+
assert.notCalled(updateLocusFromApiResponseSpy);
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
it('does not call updateLocusFromApiResponse when request uri is missing', async () => {
|
|
397
|
+
const updateLocusFromApiResponseSpy = sinon.spy(MeetingUtil, 'updateLocusFromApiResponse');
|
|
398
|
+
|
|
399
|
+
const meeting = {
|
|
400
|
+
locusUrl: 'https://locus.example.com/loci/abc',
|
|
401
|
+
request: sinon.stub().returns(Promise.resolve('result')),
|
|
402
|
+
};
|
|
403
|
+
|
|
404
|
+
const locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
|
|
405
|
+
|
|
406
|
+
const result = await locusDeltaRequest({body: {}});
|
|
407
|
+
|
|
408
|
+
assert.equal(result, 'result');
|
|
409
|
+
assert.notCalled(updateLocusFromApiResponseSpy);
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
it('does not call updateLocusFromApiResponse when meeting locusUrl is missing', async () => {
|
|
413
|
+
const updateLocusFromApiResponseSpy = sinon.spy(MeetingUtil, 'updateLocusFromApiResponse');
|
|
414
|
+
|
|
415
|
+
const meeting = {
|
|
416
|
+
request: sinon.stub().returns(Promise.resolve('result')),
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
const locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
|
|
420
|
+
|
|
421
|
+
const result = await locusDeltaRequest({
|
|
422
|
+
uri: 'https://locus.example.com/loci/abc',
|
|
423
|
+
body: {},
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
assert.equal(result, 'result');
|
|
427
|
+
assert.notCalled(updateLocusFromApiResponseSpy);
|
|
428
|
+
});
|
|
429
|
+
|
|
327
430
|
it('calls generateBuildLocusDeltaRequestOptions as expected', () => {
|
|
328
431
|
const generateBuildLocusDeltaRequestOptionsSpy = sinon.spy(
|
|
329
432
|
MeetingUtil,
|
|
@@ -938,6 +1041,55 @@ describe('plugin-meetings', () => {
|
|
|
938
1041
|
});
|
|
939
1042
|
});
|
|
940
1043
|
|
|
1044
|
+
describe('canViewTheParticipantList', () => {
|
|
1045
|
+
it('returns true when both VIEW_THE_PARTICIPANT_LIST and CAN_VIEW_THE_PARTICIPANT_LIST hints are present and canNotViewTheParticipantList is false', () => {
|
|
1046
|
+
assert.isTrue(
|
|
1047
|
+
MeetingUtil.canViewTheParticipantList(
|
|
1048
|
+
['VIEW_THE_PARTICIPANT_LIST', 'CAN_VIEW_THE_PARTICIPANT_LIST'],
|
|
1049
|
+
false
|
|
1050
|
+
)
|
|
1051
|
+
);
|
|
1052
|
+
});
|
|
1053
|
+
|
|
1054
|
+
it('returns false when VIEW_THE_PARTICIPANT_LIST hint is missing', () => {
|
|
1055
|
+
assert.isFalse(
|
|
1056
|
+
MeetingUtil.canViewTheParticipantList(['CAN_VIEW_THE_PARTICIPANT_LIST'], false)
|
|
1057
|
+
);
|
|
1058
|
+
});
|
|
1059
|
+
|
|
1060
|
+
it('returns false when CAN_VIEW_THE_PARTICIPANT_LIST hint is missing', () => {
|
|
1061
|
+
assert.isFalse(
|
|
1062
|
+
MeetingUtil.canViewTheParticipantList(['VIEW_THE_PARTICIPANT_LIST'], false)
|
|
1063
|
+
);
|
|
1064
|
+
});
|
|
1065
|
+
|
|
1066
|
+
it('returns false when canNotViewTheParticipantList is true', () => {
|
|
1067
|
+
assert.isFalse(
|
|
1068
|
+
MeetingUtil.canViewTheParticipantList(
|
|
1069
|
+
['VIEW_THE_PARTICIPANT_LIST', 'CAN_VIEW_THE_PARTICIPANT_LIST'],
|
|
1070
|
+
true
|
|
1071
|
+
)
|
|
1072
|
+
);
|
|
1073
|
+
});
|
|
1074
|
+
|
|
1075
|
+
it('returns false when display hints array is empty', () => {
|
|
1076
|
+
assert.isFalse(MeetingUtil.canViewTheParticipantList([], false));
|
|
1077
|
+
});
|
|
1078
|
+
|
|
1079
|
+
it('returns false when both conditions are violated', () => {
|
|
1080
|
+
assert.isFalse(MeetingUtil.canViewTheParticipantList([], true));
|
|
1081
|
+
});
|
|
1082
|
+
|
|
1083
|
+
it('returns true when canNotViewTheParticipantList is undefined (not yet set on meeting)', () => {
|
|
1084
|
+
assert.isTrue(
|
|
1085
|
+
MeetingUtil.canViewTheParticipantList(
|
|
1086
|
+
['VIEW_THE_PARTICIPANT_LIST', 'CAN_VIEW_THE_PARTICIPANT_LIST'],
|
|
1087
|
+
undefined
|
|
1088
|
+
)
|
|
1089
|
+
);
|
|
1090
|
+
});
|
|
1091
|
+
});
|
|
1092
|
+
|
|
941
1093
|
describe('canAttendeeRequestAiAssistantEnabled', () => {
|
|
942
1094
|
it('returns false when user is a cohost', () => {
|
|
943
1095
|
assert.deepEqual(
|
|
@@ -1146,6 +1298,10 @@ describe('plugin-meetings', () => {
|
|
|
1146
1298
|
{functionName: 'canSelectSpokenLanguages', displayHint: 'DISPLAY_NON_ENGLISH_ASR'},
|
|
1147
1299
|
{functionName: 'waitingForOthersToJoin', displayHint: 'WAITING_FOR_OTHERS'},
|
|
1148
1300
|
{functionName: 'showAutoEndMeetingWarning', displayHint: 'SHOW_AUTO_END_MEETING_WARNING'},
|
|
1301
|
+
{
|
|
1302
|
+
functionName: 'isAnonymizeDisplayNamesEnabled',
|
|
1303
|
+
displayHint: 'ANONYMOUS_DISPLAY_NAMES_ENABLED',
|
|
1304
|
+
},
|
|
1149
1305
|
].forEach(({functionName, displayHint}) => {
|
|
1150
1306
|
describe(functionName, () => {
|
|
1151
1307
|
it('works as expected', () => {
|
|
@@ -654,7 +654,7 @@ describe('plugin-meetings', () => {
|
|
|
654
654
|
meetingInfo.createAdhocSpaceMeeting,
|
|
655
655
|
'conversationUrl',
|
|
656
656
|
installedOrgID,
|
|
657
|
-
null
|
|
657
|
+
null
|
|
658
658
|
);
|
|
659
659
|
assert.notCalled(webex.request);
|
|
660
660
|
meetingInfo.createAdhocSpaceMeeting.restore();
|
|
@@ -1068,13 +1068,16 @@ describe('plugin-meetings', () => {
|
|
|
1068
1068
|
await runTest(423006, true);
|
|
1069
1069
|
});
|
|
1070
1070
|
|
|
1071
|
+
it('should throw MeetingInfoV2CaptchaError for 423 response (wbxappapi code 423008)', async () => {
|
|
1072
|
+
await runTest(423008, true);
|
|
1073
|
+
});
|
|
1074
|
+
|
|
1071
1075
|
it('should throw MeetingInfoV2CaptchaError for 423 response (wbxappapi code 423001)', async () => {
|
|
1072
1076
|
await runTest(423001, false);
|
|
1073
1077
|
});
|
|
1074
1078
|
});
|
|
1075
1079
|
|
|
1076
1080
|
describe('should stop call fetchMeetingInfo if siteFullUrl is empty for 404 response', () => {
|
|
1077
|
-
|
|
1078
1081
|
const runTest = async (wbxAppApiCode, expectedIsPasswordRequired) => {
|
|
1079
1082
|
webex.request = sinon.stub().rejects({
|
|
1080
1083
|
statusCode: 404,
|
|
@@ -1082,12 +1085,11 @@ describe('plugin-meetings', () => {
|
|
|
1082
1085
|
code: wbxAppApiCode,
|
|
1083
1086
|
message: 'Alternate Meeting Server',
|
|
1084
1087
|
data: {
|
|
1085
|
-
|
|
1086
|
-
}
|
|
1088
|
+
siteFullUrl: '',
|
|
1089
|
+
},
|
|
1087
1090
|
},
|
|
1088
1091
|
});
|
|
1089
1092
|
|
|
1090
|
-
|
|
1091
1093
|
try {
|
|
1092
1094
|
await meetingInfo.fetchMeetingInfo('1234323', DESTINATION_TYPE.MEETING_ID, 'abc', {
|
|
1093
1095
|
id: '999',
|
|
@@ -1097,7 +1099,7 @@ describe('plugin-meetings', () => {
|
|
|
1097
1099
|
} catch (err) {
|
|
1098
1100
|
assert(Metrics.sendBehavioralMetric.calledOnce);
|
|
1099
1101
|
assert.deepEqual(err.body.data, {
|
|
1100
|
-
siteFullUrl: ''
|
|
1102
|
+
siteFullUrl: '',
|
|
1101
1103
|
});
|
|
1102
1104
|
}
|
|
1103
1105
|
};
|
|
@@ -1107,7 +1109,6 @@ describe('plugin-meetings', () => {
|
|
|
1107
1109
|
});
|
|
1108
1110
|
});
|
|
1109
1111
|
|
|
1110
|
-
|
|
1111
1112
|
it('should throw an error and not fetch with an "empty" body', async () => {
|
|
1112
1113
|
const body = {supportHostKey: 'foo', supportCountryList: 'bar'};
|
|
1113
1114
|
const requestResponse = {statusCode: 200, body};
|
|
@@ -1176,7 +1177,11 @@ describe('plugin-meetings', () => {
|
|
|
1176
1177
|
body: conversation,
|
|
1177
1178
|
});
|
|
1178
1179
|
|
|
1179
|
-
const result = await meetingInfo.createAdhocSpaceMeeting(
|
|
1180
|
+
const result = await meetingInfo.createAdhocSpaceMeeting(
|
|
1181
|
+
conversationUrl,
|
|
1182
|
+
installedOrgID,
|
|
1183
|
+
classificationId
|
|
1184
|
+
);
|
|
1180
1185
|
|
|
1181
1186
|
assert.calledWith(webex.request, {
|
|
1182
1187
|
uri: conversationUrl,
|
|
@@ -1210,7 +1215,11 @@ describe('plugin-meetings', () => {
|
|
|
1210
1215
|
webex.request = sinon.stub().resolves({
|
|
1211
1216
|
body: conversation,
|
|
1212
1217
|
});
|
|
1213
|
-
await meetingInfo.createAdhocSpaceMeeting(
|
|
1218
|
+
await meetingInfo.createAdhocSpaceMeeting(
|
|
1219
|
+
conversationUrl,
|
|
1220
|
+
installedOrgID,
|
|
1221
|
+
classificationId
|
|
1222
|
+
);
|
|
1214
1223
|
|
|
1215
1224
|
assert.calledWith(webex.request, {
|
|
1216
1225
|
uri: conversationUrl,
|
|
@@ -1282,7 +1291,7 @@ describe('plugin-meetings', () => {
|
|
|
1282
1291
|
{errorCode: 423007},
|
|
1283
1292
|
{errorCode: 403026},
|
|
1284
1293
|
{errorCode: 403037},
|
|
1285
|
-
{errorCode:
|
|
1294
|
+
{errorCode: 403106},
|
|
1286
1295
|
],
|
|
1287
1296
|
({errorCode}) => {
|
|
1288
1297
|
it(`should throw a MeetingInfoV2JoinWebinarError for error code ${errorCode}`, async () => {
|