@webex/plugin-meetings 3.8.1-web-workers-keepalive.1 → 3.9.0-multipleLLM.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +26 -2
- package/dist/constants.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.js +77 -95
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/parser.js +4 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/media/properties.js +53 -5
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/brbState.js +14 -12
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +8 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +443 -225
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +2 -5
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +44 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/type.js +7 -0
- package/dist/meeting/type.js.map +1 -0
- package/dist/meeting/util.js +98 -13
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +29 -21
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +18 -10
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/members/collection.js +13 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +53 -29
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +3 -3
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +25 -8
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +2 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +1 -1
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +34 -5
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +42 -2
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +32 -2
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/reachability/index.js +3 -3
- package/dist/reachability/index.js.map +1 -1
- package/dist/types/constants.d.ts +24 -0
- package/dist/types/locus-info/index.d.ts +54 -10
- package/dist/types/media/properties.d.ts +21 -0
- package/dist/types/meeting/brbState.d.ts +0 -1
- package/dist/types/meeting/in-meeting-actions.d.ts +8 -0
- package/dist/types/meeting/index.d.ts +51 -20
- package/dist/types/meeting/request.d.ts +18 -1
- package/dist/types/meeting/request.type.d.ts +74 -0
- package/dist/types/meeting/type.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +13 -3
- package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
- package/dist/types/meetings/index.d.ts +3 -1
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/members/collection.d.ts +6 -0
- package/dist/types/members/index.d.ts +22 -9
- package/dist/types/members/request.d.ts +1 -1
- package/dist/types/members/util.d.ts +13 -6
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/multistream/remoteMedia.d.ts +20 -1
- package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
- package/dist/types/multistream/sendSlotManager.d.ts +16 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +23 -24
- package/src/constants.ts +25 -2
- package/src/locus-info/index.ts +133 -96
- package/src/locus-info/parser.ts +5 -1
- package/src/media/properties.ts +43 -0
- package/src/meeting/brbState.ts +9 -7
- package/src/meeting/in-meeting-actions.ts +17 -0
- package/src/meeting/index.ts +273 -42
- package/src/meeting/muteState.ts +2 -6
- package/src/meeting/request.ts +39 -0
- package/src/meeting/request.type.ts +64 -0
- package/src/meeting/type.ts +9 -0
- package/src/meeting/util.ts +114 -22
- package/src/meeting-info/meeting-info-v2.ts +24 -5
- package/src/meetings/index.ts +12 -5
- package/src/member/index.ts +1 -0
- package/src/member/types.ts +1 -0
- package/src/members/collection.ts +11 -0
- package/src/members/index.ts +51 -15
- package/src/members/request.ts +2 -2
- package/src/members/util.ts +34 -6
- package/src/metrics/constants.ts +1 -0
- package/src/multistream/mediaRequestManager.ts +7 -7
- package/src/multistream/remoteMedia.ts +34 -4
- package/src/multistream/remoteMediaGroup.ts +37 -2
- package/src/multistream/sendSlotManager.ts +34 -2
- package/src/reachability/index.ts +3 -3
- package/test/unit/spec/locus-info/index.js +229 -98
- package/test/unit/spec/locus-info/parser.js +3 -2
- package/test/unit/spec/media/properties.ts +137 -0
- package/test/unit/spec/meeting/brbState.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +8 -0
- package/test/unit/spec/meeting/index.js +1022 -93
- package/test/unit/spec/meeting/muteState.js +32 -6
- package/test/unit/spec/meeting/request.js +92 -0
- package/test/unit/spec/meeting/utils.js +167 -17
- package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
- package/test/unit/spec/meetings/index.js +12 -1
- package/test/unit/spec/members/collection.js +120 -0
- package/test/unit/spec/members/index.js +140 -12
- package/test/unit/spec/members/request.js +57 -2
- package/test/unit/spec/members/utils.js +139 -17
- package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
- package/test/unit/spec/multistream/remoteMedia.ts +66 -2
- package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
- package/test/unit/spec/reachability/index.ts +158 -1
@@ -189,6 +189,7 @@ describe('plugin-meetings', () => {
|
|
189
189
|
},
|
190
190
|
callDiagnosticMetrics: {
|
191
191
|
clearErrorCache: sinon.stub(),
|
192
|
+
clearEventLimits: sinon.stub(),
|
192
193
|
},
|
193
194
|
},
|
194
195
|
});
|
@@ -1098,6 +1099,7 @@ describe('plugin-meetings', () => {
|
|
1098
1099
|
const FAKE_USE_RANDOM_DELAY = true;
|
1099
1100
|
const correlationId = 'my-correlationId';
|
1100
1101
|
const sessionCorrelationId = 'my-session-correlationId';
|
1102
|
+
const classificationId = 'my-classificationId';
|
1101
1103
|
const callStateForMetrics = {
|
1102
1104
|
sessionCorrelationId: 'my-session-correlationId2',
|
1103
1105
|
correlationId: 'my-correlationId2',
|
@@ -1118,7 +1120,8 @@ describe('plugin-meetings', () => {
|
|
1118
1120
|
callStateForMetrics,
|
1119
1121
|
undefined,
|
1120
1122
|
undefined,
|
1121
|
-
sessionCorrelationId
|
1123
|
+
sessionCorrelationId,
|
1124
|
+
classificationId
|
1122
1125
|
);
|
1123
1126
|
assert.calledOnceWithExactly(fakeMeeting.updateCallStateForMetrics, {
|
1124
1127
|
...callStateForMetrics,
|
@@ -1200,6 +1203,13 @@ describe('plugin-meetings', () => {
|
|
1200
1203
|
);
|
1201
1204
|
});
|
1202
1205
|
|
1206
|
+
it('calls createMeeting with classificationId and returns its promise', async () => {
|
1207
|
+
await checkCallCreateMeeting(
|
1208
|
+
[test1, test2, FAKE_USE_RANDOM_DELAY, {}, undefined, true, callStateForMetrics, undefined, undefined, undefined, classificationId],
|
1209
|
+
[test1, test2, FAKE_USE_RANDOM_DELAY, {}, callStateForMetrics, true, undefined, undefined, classificationId],
|
1210
|
+
);
|
1211
|
+
});
|
1212
|
+
|
1203
1213
|
it('calls createMeeting with callStateForMetrics overwritten with correlationId and returns its promise', async () => {
|
1204
1214
|
await checkCallCreateMeeting(
|
1205
1215
|
[test1, test2, FAKE_USE_RANDOM_DELAY, {}, correlationId, true, callStateForMetrics],
|
@@ -1716,6 +1726,7 @@ describe('plugin-meetings', () => {
|
|
1716
1726
|
{file: 'meetings', function: 'fetchMeetingInfo'},
|
1717
1727
|
'meeting:meetingInfoAvailable'
|
1718
1728
|
);
|
1729
|
+
assert.equal(webex.meetings.meetingCollection.get(meeting.id), meeting);
|
1719
1730
|
};
|
1720
1731
|
|
1721
1732
|
it('creates the meeting from a successful meeting info fetch promise testing', async () => {
|
@@ -0,0 +1,120 @@
|
|
1
|
+
const { default: MembersCollection } = require("../../../../src/members/collection");
|
2
|
+
const { default: Member } = require("../../../../src/member");
|
3
|
+
const { assert } = require('@webex/test-helper-chai');
|
4
|
+
|
5
|
+
|
6
|
+
describe('plugin-meetings', () => {
|
7
|
+
describe('MembersCollection', () => {
|
8
|
+
let collection;
|
9
|
+
let member1;
|
10
|
+
let member2;
|
11
|
+
const participant1 = { controls: {}, status: {} };
|
12
|
+
const participant2 = { controls: {}, status: {} };
|
13
|
+
|
14
|
+
beforeEach(() => {
|
15
|
+
collection = new MembersCollection();
|
16
|
+
member1 = new Member(participant1);
|
17
|
+
member2 = new Member(participant2);
|
18
|
+
});
|
19
|
+
|
20
|
+
it('starts with no members', () => {
|
21
|
+
assert.equal(Object.keys(collection.getAll()).length, 0);
|
22
|
+
});
|
23
|
+
|
24
|
+
it('can add members', () => {
|
25
|
+
collection.set('member1', member1);
|
26
|
+
assert.equal(Object.keys(collection.getAll()).length, 1);
|
27
|
+
assert.equal(collection.get('member1'), member1);
|
28
|
+
|
29
|
+
collection.set('member2', member2);
|
30
|
+
assert.equal(Object.keys(collection.getAll()).length, 2);
|
31
|
+
assert.equal(collection.get('member2'), member2);
|
32
|
+
});
|
33
|
+
|
34
|
+
it('can remove members', () => {
|
35
|
+
// Add some members first
|
36
|
+
collection.set('member1', member1);
|
37
|
+
collection.set('member2', member2);
|
38
|
+
assert.equal(Object.keys(collection.getAll()).length, 2);
|
39
|
+
|
40
|
+
// Remove one member
|
41
|
+
collection.remove('member1');
|
42
|
+
assert.equal(Object.keys(collection.getAll()).length, 1);
|
43
|
+
assert.equal(collection.get('member1'), undefined);
|
44
|
+
assert.equal(collection.get('member2'), member2);
|
45
|
+
|
46
|
+
// Remove another member
|
47
|
+
collection.remove('member2');
|
48
|
+
assert.equal(Object.keys(collection.getAll()).length, 0);
|
49
|
+
assert.equal(collection.get('member2'), undefined);
|
50
|
+
|
51
|
+
// Removing non-existent member should not cause errors
|
52
|
+
collection.remove('nonExistent');
|
53
|
+
assert.equal(Object.keys(collection.getAll()).length, 0);
|
54
|
+
});
|
55
|
+
|
56
|
+
describe('reset', () => {
|
57
|
+
it('removes all members', () => {
|
58
|
+
// Add some members first
|
59
|
+
collection.set('member1', member1);
|
60
|
+
collection.set('member2', member2);
|
61
|
+
assert.equal(Object.keys(collection.getAll()).length, 2);
|
62
|
+
|
63
|
+
// Reset should clear all members
|
64
|
+
collection.reset();
|
65
|
+
assert.equal(Object.keys(collection.getAll()).length, 0);
|
66
|
+
assert.equal(collection.get('member1'), undefined);
|
67
|
+
assert.equal(collection.get('member2'), undefined);
|
68
|
+
});
|
69
|
+
});
|
70
|
+
|
71
|
+
describe('setAll', () => {
|
72
|
+
it('replaces all members with new collection', () => {
|
73
|
+
// Add initial member
|
74
|
+
collection.set('member1', member1);
|
75
|
+
assert.equal(Object.keys(collection.getAll()).length, 1);
|
76
|
+
|
77
|
+
// Set all with new collection
|
78
|
+
const newMembers = {
|
79
|
+
'member2': member2,
|
80
|
+
'member3': new Member(participant1)
|
81
|
+
};
|
82
|
+
collection.setAll(newMembers);
|
83
|
+
|
84
|
+
assert.equal(Object.keys(collection.getAll()).length, 2);
|
85
|
+
assert.equal(collection.get('member1'), undefined);
|
86
|
+
assert.equal(collection.get('member2'), member2);
|
87
|
+
assert.exists(collection.get('member3'));
|
88
|
+
});
|
89
|
+
});
|
90
|
+
|
91
|
+
describe('get', () => {
|
92
|
+
it('returns undefined for non-existent members', () => {
|
93
|
+
assert.equal(collection.get('nonExistent'), undefined);
|
94
|
+
});
|
95
|
+
|
96
|
+
it('returns correct member for existing id', () => {
|
97
|
+
collection.set('member1', member1);
|
98
|
+
assert.equal(collection.get('member1'), member1);
|
99
|
+
});
|
100
|
+
});
|
101
|
+
|
102
|
+
describe('getAll', () => {
|
103
|
+
it('returns empty object when no members', () => {
|
104
|
+
const allMembers = collection.getAll();
|
105
|
+
assert.isObject(allMembers);
|
106
|
+
assert.equal(Object.keys(allMembers).length, 0);
|
107
|
+
});
|
108
|
+
|
109
|
+
it('returns all members', () => {
|
110
|
+
collection.set('member1', member1);
|
111
|
+
collection.set('member2', member2);
|
112
|
+
|
113
|
+
const allMembers = collection.getAll();
|
114
|
+
assert.equal(Object.keys(allMembers).length, 2);
|
115
|
+
assert.equal(allMembers.member1, member1);
|
116
|
+
assert.equal(allMembers.member2, member2);
|
117
|
+
});
|
118
|
+
});
|
119
|
+
});
|
120
|
+
});
|
@@ -176,6 +176,56 @@ describe('plugin-meetings', () => {
|
|
176
176
|
assert.calledOnce(MembersUtil.isInvalidInvitee);
|
177
177
|
assert.isFalse(MembersUtil.isInvalidInvitee({email: 'sip:test@cisco.com'}), 'SIP email should be valid');
|
178
178
|
});
|
179
|
+
|
180
|
+
it('should skip email validation if skipEmailValidation is true', async () => {
|
181
|
+
sandbox.spy(MembersUtil, 'isInvalidInvitee');
|
182
|
+
|
183
|
+
const members = createMembers({url: true});
|
184
|
+
|
185
|
+
await members.addMember({email: '8618578675309', skipEmailValidation: true});
|
186
|
+
|
187
|
+
assert.notCalled(MembersUtil.isInvalidInvitee);
|
188
|
+
});
|
189
|
+
|
190
|
+
it('should not skip email validation if skipEmailValidation is not equal true', async () => {
|
191
|
+
sandbox.spy(MembersUtil, 'isInvalidInvitee');
|
192
|
+
|
193
|
+
const members = createMembers({url: true});
|
194
|
+
|
195
|
+
await members.addMember({email: '86185786@ds.com'});
|
196
|
+
|
197
|
+
assert.called(MembersUtil.isInvalidInvitee);
|
198
|
+
});
|
199
|
+
|
200
|
+
it('should accept valid phone with isInternalNumber', async () => {
|
201
|
+
sandbox.spy(MembersUtil, 'isInvalidInvitee');
|
202
|
+
|
203
|
+
const members = createMembers({url: true});
|
204
|
+
|
205
|
+
await members.addMember({phoneNumber: '+8618578675309', isInternalNumber: false});
|
206
|
+
|
207
|
+
assert.calledOnce(MembersUtil.isInvalidInvitee);
|
208
|
+
assert.isFalse(MembersUtil.isInvalidInvitee({ phoneNumber: '+8618578675309', isInternalNumber: false }));
|
209
|
+
assert.isTrue(MembersUtil.isInvalidInvitee({ phoneNumber: '18578675309', isInternalNumber: false }));
|
210
|
+
assert.isFalse(MembersUtil.isInvalidInvitee({phoneNumber: '18578675309', isInternalNumber: true}));
|
211
|
+
assert.isTrue(MembersUtil.isInvalidInvitee({phoneNumber: '+8618578675309', isInternalNumber: true}));
|
212
|
+
});
|
213
|
+
|
214
|
+
it('should not crash if params is undefined', async () => {
|
215
|
+
sandbox.spy(MembersUtil, 'isInvalidInvitee');
|
216
|
+
|
217
|
+
const members = createMembers({url: true});
|
218
|
+
|
219
|
+
try {
|
220
|
+
await members.addMember(undefined);
|
221
|
+
} catch (err) {
|
222
|
+
assert.instanceOf(err, ParameterError);
|
223
|
+
|
224
|
+
assert.equal(err.message, 'The invitee must be defined with either a valid email, emailAddress or phoneNumber property.');
|
225
|
+
}
|
226
|
+
|
227
|
+
assert.called(MembersUtil.isInvalidInvitee);
|
228
|
+
});
|
179
229
|
});
|
180
230
|
|
181
231
|
describe('#admitMembers', () => {
|
@@ -270,9 +320,18 @@ describe('plugin-meetings', () => {
|
|
270
320
|
EVENT_TRIGGERS.MEMBERS_CLEAR,
|
271
321
|
{}
|
272
322
|
);
|
323
|
+
sinon.restore();
|
273
324
|
});
|
274
325
|
});
|
275
326
|
describe('#locusParticipantsUpdate', () => {
|
327
|
+
beforeEach(() => {
|
328
|
+
sinon.stub(Trigger, 'trigger');
|
329
|
+
});
|
330
|
+
|
331
|
+
afterEach(() => {
|
332
|
+
sinon.restore();
|
333
|
+
});
|
334
|
+
|
276
335
|
it('should send member update event with session info', () => {
|
277
336
|
const members = createMembers({url: url1});
|
278
337
|
const fakePayload = {
|
@@ -293,13 +352,45 @@ describe('plugin-meetings', () => {
|
|
293
352
|
},
|
294
353
|
EVENT_TRIGGERS.MEMBERS_UPDATE,
|
295
354
|
{
|
296
|
-
delta: {added: [], updated: []},
|
355
|
+
delta: {added: [], updated: [], removedIds: []},
|
297
356
|
full: {},
|
298
357
|
isReplace: true,
|
299
358
|
}
|
300
359
|
);
|
301
360
|
});
|
302
361
|
|
362
|
+
it('should handle participants being removed', () => {
|
363
|
+
const members = createMembers({url: url1});
|
364
|
+
|
365
|
+
// setup the collection with a fake member
|
366
|
+
members.membersCollection.setAll(fakeMembersCollection);
|
367
|
+
assert.equal(Object.keys(members.membersCollection.getAll()).length, 1);
|
368
|
+
|
369
|
+
// remove the member
|
370
|
+
members.locusParticipantsUpdate({
|
371
|
+
participants: [],
|
372
|
+
removedParticipantIds: ['test1'],
|
373
|
+
});
|
374
|
+
|
375
|
+
assert.equal(Object.keys(members.membersCollection.getAll()).length, 0);
|
376
|
+
|
377
|
+
// check that the event was emitted
|
378
|
+
assert.calledWith(
|
379
|
+
Trigger.trigger,
|
380
|
+
members,
|
381
|
+
{
|
382
|
+
file: 'members',
|
383
|
+
function: 'locusParticipantsUpdate',
|
384
|
+
},
|
385
|
+
EVENT_TRIGGERS.MEMBERS_UPDATE,
|
386
|
+
{
|
387
|
+
delta: {added: [], updated: [], removedIds: ['test1']},
|
388
|
+
full: {},
|
389
|
+
isReplace: false,
|
390
|
+
}
|
391
|
+
);
|
392
|
+
});
|
393
|
+
|
303
394
|
describe('handles members with paired devices correctly', () => {
|
304
395
|
const runCheck = (propsForUpdate, expectedPropsOnPairedMember) => {
|
305
396
|
const members = createMembers({url: url1});
|
@@ -465,29 +556,38 @@ describe('plugin-meetings', () => {
|
|
465
556
|
});
|
466
557
|
});
|
467
558
|
|
468
|
-
describe('#
|
559
|
+
describe('#cancelInviteByMemberId', () => {
|
469
560
|
const memberId = uuid.v4();
|
470
|
-
it('should invoke
|
471
|
-
sandbox.spy(MembersUtil, '
|
561
|
+
it('should invoke cancelInviteByMemberIdOptions from MembersUtil when cancelInviteByMemberId is called with valid params', async () => {
|
562
|
+
sandbox.spy(MembersUtil, 'cancelInviteByMemberIdOptions');
|
563
|
+
|
564
|
+
const members = createMembers({url: url1});
|
565
|
+
|
566
|
+
await members.cancelInviteByMemberId({memberId});
|
567
|
+
assert.calledOnce(MembersUtil.cancelInviteByMemberIdOptions);
|
568
|
+
});
|
569
|
+
|
570
|
+
it('should invoke cancelInviteByMemberIdOptions from MembersUtil when cancelInviteByMemberId is called with isInternalNumber', async () => {
|
571
|
+
sandbox.spy(MembersUtil, 'cancelInviteByMemberIdOptions');
|
472
572
|
|
473
573
|
const members = createMembers({url: url1});
|
474
574
|
|
475
|
-
await members.
|
476
|
-
assert.calledOnce(MembersUtil.
|
575
|
+
await members.cancelInviteByMemberId({memberId, isInternalNumber: true});
|
576
|
+
assert.calledOnce(MembersUtil.cancelInviteByMemberIdOptions);
|
477
577
|
});
|
478
578
|
|
479
579
|
it('should throw a rejection if there is no locus url', async () => {
|
480
580
|
const members = createMembers({url: false});
|
481
581
|
|
482
|
-
assert.isRejected(members.
|
582
|
+
assert.isRejected(members.cancelInviteByMemberId({memberId}));
|
483
583
|
});
|
484
584
|
|
485
585
|
it('should throw a rejection if memberId is not provided', async () => {
|
486
586
|
const members = createMembers({url: url1});
|
487
587
|
|
488
|
-
assert.isRejected(members.
|
489
|
-
assert.isRejected(members.
|
490
|
-
assert.isRejected(members.
|
588
|
+
assert.isRejected(members.cancelInviteByMemberId({}));
|
589
|
+
assert.isRejected(members.cancelInviteByMemberId({memberId: null}));
|
590
|
+
assert.isRejected(members.cancelInviteByMemberId({memberId: undefined}));
|
491
591
|
});
|
492
592
|
});
|
493
593
|
|
@@ -914,7 +1014,8 @@ describe('plugin-meetings', () => {
|
|
914
1014
|
expectedMemberId,
|
915
1015
|
expectedRequestingParticipantId,
|
916
1016
|
expectedAlias,
|
917
|
-
expectedLocusUrl
|
1017
|
+
expectedLocusUrl,
|
1018
|
+
expectedSuffix
|
918
1019
|
) => {
|
919
1020
|
await assert.isFulfilled(resultPromise);
|
920
1021
|
assert.calledOnceWithExactly(
|
@@ -922,13 +1023,15 @@ describe('plugin-meetings', () => {
|
|
922
1023
|
expectedMemberId,
|
923
1024
|
expectedRequestingParticipantId,
|
924
1025
|
expectedAlias,
|
925
|
-
expectedLocusUrl
|
1026
|
+
expectedLocusUrl,
|
1027
|
+
expectedSuffix
|
926
1028
|
);
|
927
1029
|
assert.calledOnceWithExactly(spies.editDisplayNameMember, {
|
928
1030
|
memberId: expectedMemberId,
|
929
1031
|
requestingParticipantId: expectedRequestingParticipantId,
|
930
1032
|
alias: expectedAlias,
|
931
1033
|
locusUrl: expectedLocusUrl,
|
1034
|
+
suffix: expectedSuffix,
|
932
1035
|
});
|
933
1036
|
assert.strictEqual(resultPromise, spies.editDisplayNameMember.getCall(0).returnValue);
|
934
1037
|
};
|
@@ -958,6 +1061,31 @@ describe('plugin-meetings', () => {
|
|
958
1061
|
});
|
959
1062
|
|
960
1063
|
it('should make the correct request when called with respective parameters', async () => {
|
1064
|
+
const requestingParticipantId = uuid.v4();
|
1065
|
+
const memberId = uuid.v4();
|
1066
|
+
const alias = 'aliasName';
|
1067
|
+
const suffix = 'suffixName';
|
1068
|
+
const {members, spies} = setup(url1);
|
1069
|
+
|
1070
|
+
const resultPromise = members.editDisplayName(
|
1071
|
+
memberId,
|
1072
|
+
requestingParticipantId,
|
1073
|
+
alias,
|
1074
|
+
suffix
|
1075
|
+
);
|
1076
|
+
|
1077
|
+
await checkValid(
|
1078
|
+
resultPromise,
|
1079
|
+
spies,
|
1080
|
+
memberId,
|
1081
|
+
requestingParticipantId,
|
1082
|
+
alias,
|
1083
|
+
url1,
|
1084
|
+
suffix
|
1085
|
+
);
|
1086
|
+
});
|
1087
|
+
|
1088
|
+
it('should make the correct request when called with respective parameters - no suffix', async () => {
|
961
1089
|
const requestingParticipantId = uuid.v4();
|
962
1090
|
const memberId = uuid.v4();
|
963
1091
|
const alias = 'aliasName';
|
@@ -221,7 +221,7 @@ describe('plugin-meetings', () => {
|
|
221
221
|
});
|
222
222
|
});
|
223
223
|
|
224
|
-
describe('#
|
224
|
+
describe('#cancelInviteByMemberId', () => {
|
225
225
|
const memberId = uuid.v4();
|
226
226
|
it('sends a PUT to the locus endpoint', async () => {
|
227
227
|
const options = {
|
@@ -231,7 +231,7 @@ describe('plugin-meetings', () => {
|
|
231
231
|
locusUrl: url1,
|
232
232
|
};
|
233
233
|
|
234
|
-
await membersRequest.
|
234
|
+
await membersRequest.cancelInviteByMemberId(options);
|
235
235
|
|
236
236
|
checkRequest({
|
237
237
|
method: 'PUT',
|
@@ -429,6 +429,61 @@ describe('plugin-meetings', () => {
|
|
429
429
|
},
|
430
430
|
});
|
431
431
|
});
|
432
|
+
|
433
|
+
it('sends a POST request to the locus endpoint with suffix empty string', async () => {
|
434
|
+
const locusUrl = url1;
|
435
|
+
const memberId = 'test1';
|
436
|
+
const requestingParticipantId = 'test2';
|
437
|
+
const aliasValue = 'alias';
|
438
|
+
|
439
|
+
const options = {
|
440
|
+
memberId,
|
441
|
+
requestingParticipantId,
|
442
|
+
alias: aliasValue,
|
443
|
+
locusUrl,
|
444
|
+
suffix: '',
|
445
|
+
};
|
446
|
+
|
447
|
+
await membersRequest.editDisplayNameMember(options);
|
448
|
+
|
449
|
+
checkRequest({
|
450
|
+
method: 'POST',
|
451
|
+
uri: `${locusUrl}/participant/${memberId}/alias`,
|
452
|
+
body: {
|
453
|
+
aliasValue,
|
454
|
+
requestingParticipantId,
|
455
|
+
suffixValue: '',
|
456
|
+
},
|
457
|
+
});
|
458
|
+
});
|
459
|
+
|
460
|
+
it('sends a POST request to the locus endpoint with suffixValue', async () => {
|
461
|
+
const locusUrl = url1;
|
462
|
+
const memberId = 'test1';
|
463
|
+
const requestingParticipantId = 'test2';
|
464
|
+
const aliasValue = 'alias';
|
465
|
+
const suffixValue = 'suffix';
|
466
|
+
|
467
|
+
const options = {
|
468
|
+
memberId,
|
469
|
+
requestingParticipantId,
|
470
|
+
alias: aliasValue,
|
471
|
+
locusUrl,
|
472
|
+
suffix: suffixValue,
|
473
|
+
};
|
474
|
+
|
475
|
+
await membersRequest.editDisplayNameMember(options);
|
476
|
+
|
477
|
+
checkRequest({
|
478
|
+
method: 'POST',
|
479
|
+
uri: `${locusUrl}/participant/${memberId}/alias`,
|
480
|
+
body: {
|
481
|
+
aliasValue,
|
482
|
+
requestingParticipantId,
|
483
|
+
suffixValue,
|
484
|
+
},
|
485
|
+
});
|
486
|
+
});
|
432
487
|
});
|
433
488
|
|
434
489
|
describe('#moveToLobby', () => {
|
@@ -129,7 +129,32 @@ describe('plugin-meetings', () => {
|
|
129
129
|
});
|
130
130
|
});
|
131
131
|
describe('#generateEditDisplayNameMemberOptions', () => {
|
132
|
-
it('returns the correct options', () => {
|
132
|
+
it('returns the correct options with suffix when suffix is there', () => {
|
133
|
+
const locusUrl = 'urlTest1';
|
134
|
+
const memberId = 'test1';
|
135
|
+
const requestingParticipantId = 'test2';
|
136
|
+
const alias = 'alias';
|
137
|
+
const suffix = 'suffix';
|
138
|
+
|
139
|
+
assert.deepEqual(
|
140
|
+
MembersUtil.generateEditDisplayNameMemberOptions(
|
141
|
+
memberId,
|
142
|
+
requestingParticipantId,
|
143
|
+
alias,
|
144
|
+
locusUrl,
|
145
|
+
suffix
|
146
|
+
),
|
147
|
+
{
|
148
|
+
memberId,
|
149
|
+
requestingParticipantId,
|
150
|
+
alias,
|
151
|
+
locusUrl,
|
152
|
+
suffix,
|
153
|
+
}
|
154
|
+
);
|
155
|
+
});
|
156
|
+
|
157
|
+
it('returns the correct options without suffix when suffix is not there', () => {
|
133
158
|
const locusUrl = 'urlTest1';
|
134
159
|
const memberId = 'test1';
|
135
160
|
const requestingParticipantId = 'test2';
|
@@ -147,6 +172,7 @@ describe('plugin-meetings', () => {
|
|
147
172
|
requestingParticipantId,
|
148
173
|
alias,
|
149
174
|
locusUrl,
|
175
|
+
suffix: undefined,
|
150
176
|
}
|
151
177
|
);
|
152
178
|
});
|
@@ -302,6 +328,26 @@ describe('plugin-meetings', () => {
|
|
302
328
|
});
|
303
329
|
});
|
304
330
|
|
331
|
+
it('returns the correct body with phone number and isInternalNumber', () => {
|
332
|
+
const options = {
|
333
|
+
invitee: {
|
334
|
+
phoneNumber: '1234567890',
|
335
|
+
isInternalNumber: false,
|
336
|
+
},
|
337
|
+
alertIfActive: false,
|
338
|
+
};
|
339
|
+
|
340
|
+
assert.deepEqual(MembersUtil.getAddMemberBody(options), {
|
341
|
+
invitees: [
|
342
|
+
{
|
343
|
+
address: '1234567890',
|
344
|
+
isInternalNumber: false,
|
345
|
+
},
|
346
|
+
],
|
347
|
+
alertIfActive: false,
|
348
|
+
});
|
349
|
+
});
|
350
|
+
|
305
351
|
it('returns the correct body with fallback to email', () => {
|
306
352
|
const options = {
|
307
353
|
invitee: {
|
@@ -391,46 +437,122 @@ describe('plugin-meetings', () => {
|
|
391
437
|
});
|
392
438
|
});
|
393
439
|
|
394
|
-
describe('#
|
440
|
+
describe('#cancelInviteByMemberIdOptions', () => {
|
395
441
|
it('returns the correct options', () => {
|
396
442
|
const locusUrl = 'TestLocusUrl';
|
397
443
|
const memberId = 'test';
|
398
|
-
const invitee = {memberId};
|
444
|
+
const invitee = {memberId, isInternalNumber: false};
|
399
445
|
|
400
|
-
assert.deepEqual(
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
),
|
405
|
-
{
|
406
|
-
invitee,
|
407
|
-
locusUrl,
|
408
|
-
}
|
409
|
-
);
|
446
|
+
assert.deepEqual(MembersUtil.cancelInviteByMemberIdOptions(invitee, locusUrl), {
|
447
|
+
invitee,
|
448
|
+
locusUrl,
|
449
|
+
});
|
410
450
|
});
|
411
451
|
});
|
412
452
|
|
413
|
-
describe('#
|
453
|
+
describe('#generateCancelInviteByMemberIdRequestParams', () => {
|
414
454
|
it('returns the correct params', () => {
|
415
455
|
const locusUrl = 'TestLocusUrl';
|
416
456
|
const memberId = 'test';
|
417
457
|
const options = {
|
418
458
|
locusUrl,
|
419
|
-
invitee: {memberId}
|
459
|
+
invitee: {memberId, isInternalNumber: false},
|
420
460
|
};
|
421
461
|
const body = {
|
422
462
|
actionType: 'REMOVE',
|
423
|
-
invitees: [{address: options.invitee.memberId}],
|
463
|
+
invitees: [{address: options.invitee.memberId, isInternalNumber: false}],
|
424
464
|
};
|
425
465
|
|
426
466
|
const uri = options.locusUrl;
|
427
467
|
|
428
|
-
assert.deepEqual(MembersUtil.
|
468
|
+
assert.deepEqual(MembersUtil.generateCancelInviteByMemberIdRequestParams(options), {
|
429
469
|
method: HTTP_VERBS.PUT,
|
430
470
|
uri,
|
431
471
|
body,
|
432
472
|
});
|
433
473
|
});
|
434
474
|
});
|
475
|
+
|
476
|
+
describe('#editDisplayNameMemberRequestParams', () => {
|
477
|
+
it('returns the correct params when suffix is available', () => {
|
478
|
+
const locusUrl = 'TestLocusUrl1';
|
479
|
+
const memberId = 'test1';
|
480
|
+
const alias = 'alias1';
|
481
|
+
const requestingParticipantId = '23131';
|
482
|
+
const suffix = 'suffix1';
|
483
|
+
const options = {
|
484
|
+
locusUrl: locusUrl,
|
485
|
+
memberId,
|
486
|
+
alias,
|
487
|
+
requestingParticipantId,
|
488
|
+
suffix,
|
489
|
+
};
|
490
|
+
|
491
|
+
const uri = `${locusUrl}/participant/${memberId}/alias`;
|
492
|
+
|
493
|
+
assert.deepEqual(MembersUtil.editDisplayNameMemberRequestParams(options), {
|
494
|
+
method: HTTP_VERBS.POST,
|
495
|
+
uri,
|
496
|
+
body: {
|
497
|
+
aliasValue: alias,
|
498
|
+
requestingParticipantId,
|
499
|
+
suffixValue: suffix,
|
500
|
+
},
|
501
|
+
});
|
502
|
+
});
|
503
|
+
|
504
|
+
it('returns the correct params when suffix is not available', () => {
|
505
|
+
const locusUrl = 'TestLocusUrl2';
|
506
|
+
const memberId = 'test2';
|
507
|
+
const alias = 'alias2';
|
508
|
+
const requestingParticipantId = '12345';
|
509
|
+
|
510
|
+
const options = {
|
511
|
+
locusUrl: locusUrl,
|
512
|
+
memberId,
|
513
|
+
alias,
|
514
|
+
requestingParticipantId,
|
515
|
+
};
|
516
|
+
|
517
|
+
const uri = `${locusUrl}/participant/${memberId}/alias`;
|
518
|
+
|
519
|
+
assert.deepEqual(MembersUtil.editDisplayNameMemberRequestParams(options), {
|
520
|
+
method: HTTP_VERBS.POST,
|
521
|
+
uri,
|
522
|
+
body: {
|
523
|
+
aliasValue: alias,
|
524
|
+
requestingParticipantId,
|
525
|
+
},
|
526
|
+
});
|
527
|
+
});
|
528
|
+
|
529
|
+
it('returns the correct params when suffix is empty string', () => {
|
530
|
+
const locusUrl = 'TestLocusUrl3';
|
531
|
+
const memberId = 'test3';
|
532
|
+
const alias = 'alias3';
|
533
|
+
const requestingParticipantId = '322424';
|
534
|
+
const suffix = '';
|
535
|
+
|
536
|
+
const options = {
|
537
|
+
locusUrl: locusUrl,
|
538
|
+
memberId,
|
539
|
+
alias,
|
540
|
+
suffix,
|
541
|
+
requestingParticipantId,
|
542
|
+
};
|
543
|
+
|
544
|
+
const uri = `${locusUrl}/participant/${memberId}/alias`;
|
545
|
+
|
546
|
+
assert.deepEqual(MembersUtil.editDisplayNameMemberRequestParams(options), {
|
547
|
+
method: HTTP_VERBS.POST,
|
548
|
+
uri,
|
549
|
+
body: {
|
550
|
+
aliasValue: alias,
|
551
|
+
requestingParticipantId,
|
552
|
+
suffixValue: suffix,
|
553
|
+
},
|
554
|
+
});
|
555
|
+
});
|
556
|
+
});
|
435
557
|
});
|
436
558
|
});
|