@webex/plugin-meetings 2.60.1-next.12 → 2.60.1-next.13
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/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +4 -3
- package/dist/meeting/index.js.map +1 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +5 -5
- package/src/meeting/index.ts +2 -1
- package/test/unit/spec/breakouts/breakout.ts +2 -1
- package/test/unit/spec/breakouts/index.ts +7 -4
- package/test/unit/spec/media/index.ts +5 -0
- package/test/unit/spec/meeting/index.js +167 -751
- package/test/unit/spec/meeting/utils.js +19 -9
- package/test/unit/spec/meeting-info/meetinginfov2.js +8 -8
- package/test/unit/spec/meetings/index.js +28 -11
- package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
|
@@ -369,7 +369,7 @@ describe('plugin-meetings', () => {
|
|
|
369
369
|
getWebexObject: sinon.stub().returns(webex),
|
|
370
370
|
};
|
|
371
371
|
|
|
372
|
-
|
|
372
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
373
373
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
374
374
|
|
|
375
375
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
@@ -396,6 +396,7 @@ describe('plugin-meetings', () => {
|
|
|
396
396
|
mediaConnections: 'mediaConnections',
|
|
397
397
|
},
|
|
398
398
|
});
|
|
399
|
+
parseLocusJoinSpy.restore();
|
|
399
400
|
});
|
|
400
401
|
|
|
401
402
|
it('#Should call meetingRequest.joinMeeting with breakoutsSupported=true when passed in as true', async () => {
|
|
@@ -406,7 +407,7 @@ describe('plugin-meetings', () => {
|
|
|
406
407
|
getWebexObject: sinon.stub().returns(webex),
|
|
407
408
|
};
|
|
408
409
|
|
|
409
|
-
|
|
410
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
410
411
|
await MeetingUtil.joinMeeting(meeting, {
|
|
411
412
|
breakoutsSupported: true,
|
|
412
413
|
});
|
|
@@ -415,6 +416,7 @@ describe('plugin-meetings', () => {
|
|
|
415
416
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
416
417
|
|
|
417
418
|
assert.equal(parameter.breakoutsSupported, true);
|
|
419
|
+
parseLocusJoinSpy.restore();
|
|
418
420
|
});
|
|
419
421
|
|
|
420
422
|
it('#Should call meetingRequest.joinMeeting with liveAnnotationSupported=true when passed in as true', async () => {
|
|
@@ -425,7 +427,7 @@ describe('plugin-meetings', () => {
|
|
|
425
427
|
getWebexObject: sinon.stub().returns(webex),
|
|
426
428
|
};
|
|
427
429
|
|
|
428
|
-
|
|
430
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
429
431
|
await MeetingUtil.joinMeeting(meeting, {
|
|
430
432
|
liveAnnotationSupported: true,
|
|
431
433
|
});
|
|
@@ -434,6 +436,7 @@ describe('plugin-meetings', () => {
|
|
|
434
436
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
435
437
|
|
|
436
438
|
assert.equal(parameter.liveAnnotationSupported, true);
|
|
439
|
+
parseLocusJoinSpy.restore();
|
|
437
440
|
});
|
|
438
441
|
|
|
439
442
|
it('#Should call meetingRequest.joinMeeting with locale=en_UK, deviceCapabilities=["TEST"] when they are passed in as those values', async () => {
|
|
@@ -444,7 +447,7 @@ describe('plugin-meetings', () => {
|
|
|
444
447
|
getWebexObject: sinon.stub().returns(webex),
|
|
445
448
|
};
|
|
446
449
|
|
|
447
|
-
|
|
450
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
448
451
|
await MeetingUtil.joinMeeting(meeting, {
|
|
449
452
|
locale: 'en_UK',
|
|
450
453
|
deviceCapabilities: ['TEST'],
|
|
@@ -455,6 +458,7 @@ describe('plugin-meetings', () => {
|
|
|
455
458
|
|
|
456
459
|
assert.equal(parameter.locale, 'en_UK');
|
|
457
460
|
assert.deepEqual(parameter.deviceCapabilities, ['TEST']);
|
|
461
|
+
parseLocusJoinSpy.restore();
|
|
458
462
|
});
|
|
459
463
|
|
|
460
464
|
it('#Should call meetingRequest.joinMeeting with preferTranscoding=false when multistream is enabled', async () => {
|
|
@@ -468,7 +472,7 @@ describe('plugin-meetings', () => {
|
|
|
468
472
|
getWebexObject: sinon.stub().returns(webex),
|
|
469
473
|
};
|
|
470
474
|
|
|
471
|
-
|
|
475
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
472
476
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
473
477
|
|
|
474
478
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
@@ -476,6 +480,7 @@ describe('plugin-meetings', () => {
|
|
|
476
480
|
|
|
477
481
|
assert.equal(parameter.inviteeAddress, 'meetingJoinUrl');
|
|
478
482
|
assert.equal(parameter.preferTranscoding, false);
|
|
483
|
+
parseLocusJoinSpy.restore();
|
|
479
484
|
});
|
|
480
485
|
|
|
481
486
|
it('#Should fallback sipUrl if meetingJoinUrl does not exists', async () => {
|
|
@@ -488,13 +493,14 @@ describe('plugin-meetings', () => {
|
|
|
488
493
|
getWebexObject: sinon.stub().returns(webex),
|
|
489
494
|
};
|
|
490
495
|
|
|
491
|
-
|
|
496
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
492
497
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
493
498
|
|
|
494
499
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
495
500
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
496
501
|
|
|
497
502
|
assert.equal(parameter.inviteeAddress, 'sipUri');
|
|
503
|
+
parseLocusJoinSpy.restore();
|
|
498
504
|
});
|
|
499
505
|
|
|
500
506
|
it('#Should fallback to meetingNumber if meetingJoinUrl/sipUrl does not exists', async () => {
|
|
@@ -507,7 +513,7 @@ describe('plugin-meetings', () => {
|
|
|
507
513
|
getWebexObject: sinon.stub().returns(webex),
|
|
508
514
|
};
|
|
509
515
|
|
|
510
|
-
|
|
516
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
511
517
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
512
518
|
|
|
513
519
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
@@ -515,6 +521,7 @@ describe('plugin-meetings', () => {
|
|
|
515
521
|
|
|
516
522
|
assert.isUndefined(parameter.inviteeAddress);
|
|
517
523
|
assert.equal(parameter.meetingNumber, 'meetingNumber');
|
|
524
|
+
parseLocusJoinSpy.restore();
|
|
518
525
|
});
|
|
519
526
|
|
|
520
527
|
it('should pass in the locusClusterUrl from meetingInfo', async () => {
|
|
@@ -528,19 +535,20 @@ describe('plugin-meetings', () => {
|
|
|
528
535
|
getWebexObject: sinon.stub().returns(webex),
|
|
529
536
|
};
|
|
530
537
|
|
|
531
|
-
|
|
538
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
532
539
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
533
540
|
|
|
534
541
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
535
542
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
536
543
|
|
|
537
544
|
assert.equal(parameter.locusClusterUrl, 'locusClusterUrl');
|
|
545
|
+
parseLocusJoinSpy.restore();
|
|
538
546
|
});
|
|
539
547
|
});
|
|
540
548
|
|
|
541
549
|
describe('joinMeetingOptions', () => {
|
|
542
550
|
it('sends client events correctly', async () => {
|
|
543
|
-
|
|
551
|
+
const joinMeetingSpy = sinon.stub(MeetingUtil, 'joinMeeting').rejects({});
|
|
544
552
|
MeetingUtil.isPinOrGuest = sinon.stub().returns(true);
|
|
545
553
|
const meeting = {
|
|
546
554
|
id: 'meeting-id',
|
|
@@ -571,6 +579,8 @@ describe('plugin-meetings', () => {
|
|
|
571
579
|
meetingId: meeting.id,
|
|
572
580
|
},
|
|
573
581
|
});
|
|
582
|
+
} finally {
|
|
583
|
+
joinMeetingSpy.restore();
|
|
574
584
|
}
|
|
575
585
|
});
|
|
576
586
|
});
|
|
@@ -826,18 +826,18 @@ describe('plugin-meetings', () => {
|
|
|
826
826
|
statusCode: 200
|
|
827
827
|
});
|
|
828
828
|
});
|
|
829
|
-
|
|
830
829
|
it('Make a request to /spaceInstant when conversationUrl with installed org ID', async () => {
|
|
831
830
|
const {invitee} = setup();
|
|
832
|
-
|
|
831
|
+
webex.request = sinon.stub().resolves({
|
|
832
|
+
body: conversation,
|
|
833
|
+
});
|
|
833
834
|
await meetingInfo.createAdhocSpaceMeeting(conversationUrl, installedOrgID);
|
|
834
835
|
|
|
835
|
-
assert.calledWith(
|
|
836
|
-
|
|
837
|
-
{
|
|
838
|
-
|
|
839
|
-
);
|
|
840
|
-
|
|
836
|
+
assert.calledWith(webex.request, {
|
|
837
|
+
uri: conversationUrl,
|
|
838
|
+
qs: {includeParticipants: true},
|
|
839
|
+
disableTransform: true,
|
|
840
|
+
});
|
|
841
841
|
assert.calledWith(webex.request, {
|
|
842
842
|
method: 'POST',
|
|
843
843
|
uri: 'https://go.webex.com/wbxappapi/v2/meetings/spaceInstant',
|
|
@@ -79,7 +79,7 @@ describe('plugin-meetings', () => {
|
|
|
79
79
|
describe('meetings index', () => {
|
|
80
80
|
beforeEach(() => {
|
|
81
81
|
MeetingsUtil.checkH264Support = sinon.stub();
|
|
82
|
-
|
|
82
|
+
uuid1 = uuid.v4();
|
|
83
83
|
url1 = `https://example.com/${uuid.v4()}`;
|
|
84
84
|
uri1 = `test-${uuid.v4()}@example.com`;
|
|
85
85
|
test1 = `test-${uuid.v4()}`;
|
|
@@ -574,6 +574,7 @@ describe('plugin-meetings', () => {
|
|
|
574
574
|
});
|
|
575
575
|
describe('when destroying meeting is needed', () => {
|
|
576
576
|
let destroySpy;
|
|
577
|
+
let cleanUpSpy;
|
|
577
578
|
|
|
578
579
|
const meetingCollectionMeetings = {
|
|
579
580
|
stillValidLocusMeeting: {
|
|
@@ -604,7 +605,11 @@ describe('plugin-meetings', () => {
|
|
|
604
605
|
loci: [{url: 'still-valid-locus-url'}],
|
|
605
606
|
})
|
|
606
607
|
);
|
|
607
|
-
|
|
608
|
+
cleanUpSpy = sinon.stub(MeetingUtil, 'cleanUp').returns(Promise.resolve());
|
|
609
|
+
});
|
|
610
|
+
|
|
611
|
+
afterEach(() => {
|
|
612
|
+
cleanUpSpy.restore();
|
|
608
613
|
});
|
|
609
614
|
|
|
610
615
|
it('destroy any meeting that has no active locus url if keepOnlyLocusMeetings is not defined', async () => {
|
|
@@ -1184,7 +1189,8 @@ describe('plugin-meetings', () => {
|
|
|
1184
1189
|
webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(
|
|
1185
1190
|
Promise.resolve({
|
|
1186
1191
|
body: {
|
|
1187
|
-
permissionToken:
|
|
1192
|
+
permissionToken:
|
|
1193
|
+
'eyJhbGciOiJIUzI1NiJ9.eyJleHAiOiIxMjM0NTYiLCJwZXJtaXNzaW9uIjp7InVzZXJQb2xpY2llcyI6eyJhIjp0cnVlfX19.wkTk0Hp8sUlq2wi2nP4-Ym4Xb7aEUHzyXA1kzk6f0V0',
|
|
1188
1194
|
meetingJoinUrl: 'meetingJoinUrl',
|
|
1189
1195
|
},
|
|
1190
1196
|
})
|
|
@@ -1287,7 +1293,8 @@ describe('plugin-meetings', () => {
|
|
|
1287
1293
|
const meeting = await webex.meetings.createMeeting('test destination', 'test type');
|
|
1288
1294
|
|
|
1289
1295
|
const expectedMeetingData = {
|
|
1290
|
-
permissionToken:
|
|
1296
|
+
permissionToken:
|
|
1297
|
+
'eyJhbGciOiJIUzI1NiJ9.eyJleHAiOiIxMjM0NTYiLCJwZXJtaXNzaW9uIjp7InVzZXJQb2xpY2llcyI6eyJhIjp0cnVlfX19.wkTk0Hp8sUlq2wi2nP4-Ym4Xb7aEUHzyXA1kzk6f0V0',
|
|
1291
1298
|
meetingJoinUrl: 'meetingJoinUrl',
|
|
1292
1299
|
correlationId: meeting.id,
|
|
1293
1300
|
};
|
|
@@ -1303,7 +1310,8 @@ describe('plugin-meetings', () => {
|
|
|
1303
1310
|
|
|
1304
1311
|
it('accepts injected meeting info', async () => {
|
|
1305
1312
|
const meetingInfo = {
|
|
1306
|
-
permissionToken:
|
|
1313
|
+
permissionToken:
|
|
1314
|
+
'eyJhbGciOiJIUzI1NiJ9.eyJleHAiOiIxMjM0NTYiLCJwZXJtaXNzaW9uIjp7InVzZXJQb2xpY2llcyI6eyJhIjp0cnVlfX19.wkTk0Hp8sUlq2wi2nP4-Ym4Xb7aEUHzyXA1kzk6f0V0',
|
|
1307
1315
|
meetingJoinUrl: 'meetingJoinUrl',
|
|
1308
1316
|
};
|
|
1309
1317
|
|
|
@@ -1335,7 +1343,8 @@ describe('plugin-meetings', () => {
|
|
|
1335
1343
|
|
|
1336
1344
|
it('accepts injected meeting info with meeting lookup url', async () => {
|
|
1337
1345
|
const meetingInfo = {
|
|
1338
|
-
permissionToken:
|
|
1346
|
+
permissionToken:
|
|
1347
|
+
'eyJhbGciOiJIUzI1NiJ9.eyJleHAiOiIxMjM0NTYiLCJwZXJtaXNzaW9uIjp7InVzZXJQb2xpY2llcyI6eyJhIjp0cnVlfX19.wkTk0Hp8sUlq2wi2nP4-Ym4Xb7aEUHzyXA1kzk6f0V0',
|
|
1339
1348
|
meetingJoinUrl: 'meetingJoinUrl',
|
|
1340
1349
|
};
|
|
1341
1350
|
|
|
@@ -1380,7 +1389,8 @@ describe('plugin-meetings', () => {
|
|
|
1380
1389
|
infoExtraParams
|
|
1381
1390
|
);
|
|
1382
1391
|
const expectedMeetingData = {
|
|
1383
|
-
permissionToken:
|
|
1392
|
+
permissionToken:
|
|
1393
|
+
'eyJhbGciOiJIUzI1NiJ9.eyJleHAiOiIxMjM0NTYiLCJwZXJtaXNzaW9uIjp7InVzZXJQb2xpY2llcyI6eyJhIjp0cnVlfX19.wkTk0Hp8sUlq2wi2nP4-Ym4Xb7aEUHzyXA1kzk6f0V0',
|
|
1384
1394
|
meetingJoinUrl: 'meetingJoinUrl',
|
|
1385
1395
|
};
|
|
1386
1396
|
|
|
@@ -1481,8 +1491,10 @@ describe('plugin-meetings', () => {
|
|
|
1481
1491
|
assert.equal(meeting.meetingNumber, 'locusMeetingId');
|
|
1482
1492
|
assert.equal(meeting.meetingJoinUrl, 'meetingJoinUrl');
|
|
1483
1493
|
assert.equal(meeting.owner, 'locusOwner');
|
|
1484
|
-
assert.equal(
|
|
1485
|
-
|
|
1494
|
+
assert.equal(
|
|
1495
|
+
meeting.permissionToken,
|
|
1496
|
+
'eyJhbGciOiJIUzI1NiJ9.eyJleHAiOiIxMjM0NTYiLCJwZXJtaXNzaW9uIjp7InVzZXJQb2xpY2llcyI6eyJhIjp0cnVlfX19.wkTk0Hp8sUlq2wi2nP4-Ym4Xb7aEUHzyXA1kzk6f0V0'
|
|
1497
|
+
);
|
|
1486
1498
|
assert.calledWith(
|
|
1487
1499
|
TriggerProxy.trigger,
|
|
1488
1500
|
meeting,
|
|
@@ -1781,9 +1793,13 @@ describe('plugin-meetings', () => {
|
|
|
1781
1793
|
});
|
|
1782
1794
|
});
|
|
1783
1795
|
describe('Public Event Triggers', () => {
|
|
1796
|
+
let cleanUpSpy;
|
|
1784
1797
|
describe('#destroy', () => {
|
|
1785
1798
|
beforeEach(() => {
|
|
1786
|
-
|
|
1799
|
+
cleanUpSpy = sinon.stub(MeetingUtil, 'cleanUp');
|
|
1800
|
+
});
|
|
1801
|
+
afterEach(() => {
|
|
1802
|
+
cleanUpSpy.restore();
|
|
1787
1803
|
});
|
|
1788
1804
|
it('should have #destroy', () => {
|
|
1789
1805
|
assert.exists(webex.meetings.destroy);
|
|
@@ -2016,7 +2032,8 @@ describe('plugin-meetings', () => {
|
|
|
2016
2032
|
webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(
|
|
2017
2033
|
Promise.resolve({
|
|
2018
2034
|
body: {
|
|
2019
|
-
permissionToken:
|
|
2035
|
+
permissionToken:
|
|
2036
|
+
'eyJhbGciOiJIUzI1NiJ9.eyJleHAiOiIxMjM0NTYiLCJwZXJtaXNzaW9uIjp7InVzZXJQb2xpY2llcyI6eyJhIjp0cnVlfX19.wkTk0Hp8sUlq2wi2nP4-Ym4Xb7aEUHzyXA1kzk6f0V0',
|
|
2020
2037
|
meetingJoinUrl: 'meetingJoinUrl',
|
|
2021
2038
|
},
|
|
2022
2039
|
})
|