@webex/plugin-meetings 3.0.0-beta.115 → 3.0.0-beta.117

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.
Files changed (53) hide show
  1. package/dist/breakouts/breakout.js +23 -6
  2. package/dist/breakouts/breakout.js.map +1 -1
  3. package/dist/breakouts/index.js +178 -139
  4. package/dist/breakouts/index.js.map +1 -1
  5. package/dist/constants.js +1 -0
  6. package/dist/constants.js.map +1 -1
  7. package/dist/locus-info/mediaSharesUtils.js +15 -1
  8. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  9. package/dist/meeting/index.js +73 -103
  10. package/dist/meeting/index.js.map +1 -1
  11. package/dist/meeting/locusMediaRequest.js +3 -0
  12. package/dist/meeting/locusMediaRequest.js.map +1 -1
  13. package/dist/meeting/muteState.js +1 -1
  14. package/dist/meeting/muteState.js.map +1 -1
  15. package/dist/meeting/request.js +27 -20
  16. package/dist/meeting/request.js.map +1 -1
  17. package/dist/meeting/util.js +463 -426
  18. package/dist/meeting/util.js.map +1 -1
  19. package/dist/members/index.js +4 -1
  20. package/dist/members/index.js.map +1 -1
  21. package/dist/members/request.js +75 -45
  22. package/dist/members/request.js.map +1 -1
  23. package/dist/members/util.js +308 -317
  24. package/dist/members/util.js.map +1 -1
  25. package/dist/types/constants.d.ts +1 -0
  26. package/dist/types/meeting/index.d.ts +20 -21
  27. package/dist/types/meeting/locusMediaRequest.d.ts +2 -0
  28. package/dist/types/meeting/request.d.ts +16 -8
  29. package/dist/types/meeting/util.d.ts +75 -1
  30. package/dist/types/members/request.d.ts +56 -11
  31. package/dist/types/members/util.d.ts +209 -1
  32. package/package.json +19 -19
  33. package/src/breakouts/breakout.ts +26 -4
  34. package/src/breakouts/index.ts +32 -17
  35. package/src/constants.ts +1 -0
  36. package/src/locus-info/mediaSharesUtils.ts +16 -0
  37. package/src/meeting/index.ts +20 -42
  38. package/src/meeting/locusMediaRequest.ts +6 -0
  39. package/src/meeting/muteState.ts +1 -1
  40. package/src/meeting/request.ts +26 -17
  41. package/src/meeting/util.ts +446 -410
  42. package/src/members/index.ts +7 -1
  43. package/src/members/request.ts +61 -21
  44. package/src/members/util.ts +316 -326
  45. package/test/unit/spec/breakouts/breakout.ts +26 -7
  46. package/test/unit/spec/breakouts/index.ts +48 -3
  47. package/test/unit/spec/meeting/index.js +53 -33
  48. package/test/unit/spec/meeting/locusMediaRequest.ts +25 -3
  49. package/test/unit/spec/meeting/muteState.js +5 -2
  50. package/test/unit/spec/meeting/request.js +215 -42
  51. package/test/unit/spec/meeting/utils.js +151 -7
  52. package/test/unit/spec/members/index.js +22 -1
  53. package/test/unit/spec/members/request.js +167 -35
@@ -8,6 +8,7 @@ import Meetings from '@webex/plugin-meetings';
8
8
  import MembersRequest from '@webex/plugin-meetings/src/members/request';
9
9
  import membersUtil from '@webex/plugin-meetings/src/members/util';
10
10
  import ParameterError from '@webex/plugin-meetings/src/common/errors/parameter';
11
+ import { merge } from 'lodash';
11
12
 
12
13
  const {assert} = chai;
13
14
 
@@ -18,6 +19,10 @@ describe('plugin-meetings', () => {
18
19
  let membersRequest;
19
20
  let url1;
20
21
  let sandbox;
22
+ const sequence = {some: 'sequenceData'};
23
+ const requestResponse = {some: 'data'};
24
+ let locusDeltaRequestSpy;
25
+ const correlationId = '12345';
21
26
 
22
27
  beforeEach(() => {
23
28
  const webex = new MockWebex({
@@ -28,21 +33,43 @@ describe('plugin-meetings', () => {
28
33
 
29
34
  sandbox = sinon.createSandbox();
30
35
 
36
+ sinon.stub(uuid, 'v4').returns(correlationId);
37
+
31
38
  url1 = `https://example.com/${uuid.v4()}`;
32
39
 
40
+ const request = sinon.mock().returns(Promise.resolve(requestResponse));
41
+
33
42
  membersRequest = new MembersRequest(
34
- {},
43
+ {
44
+ meeting: {
45
+ request,
46
+ locusInfo: {
47
+ sequence,
48
+ },
49
+ },
50
+ },
35
51
  {
36
52
  parent: webex,
37
53
  }
38
54
  );
39
- membersRequest.request = sinon.mock().returns(Promise.resolve({}));
55
+ locusDeltaRequestSpy = sinon.spy(membersRequest, 'locusDeltaRequest');
56
+
57
+ membersRequest.request = request;
40
58
  });
41
59
 
42
60
  afterEach(() => {
43
61
  sandbox.restore();
62
+ uuid.v4.restore();
44
63
  });
45
64
 
65
+ const checkRequest = (expectedParams) => {
66
+ assert.calledOnceWithExactly(locusDeltaRequestSpy, expectedParams);
67
+ assert.calledOnceWithExactly(
68
+ membersRequest.request,
69
+ merge(expectedParams, {body: {sequence}})
70
+ );
71
+ };
72
+
46
73
  describe('members request library', () => {
47
74
  describe('#sendDialPadKey', () => {
48
75
  it('sends a POST to the sendDtmf locus endpoint', async () => {
@@ -57,12 +84,22 @@ describe('plugin-meetings', () => {
57
84
  memberId,
58
85
  locusUrl,
59
86
  });
60
- const requestParams = membersRequest.request.getCall(0).args[0];
61
87
 
62
- assert.equal(requestParams.method, 'POST');
63
- assert.equal(requestParams.uri, `${locusUrl}/participant/${memberId}/sendDtmf`);
64
- assert.equal(requestParams.body.dtmf.tones, tones);
65
- assert.equal(requestParams.body.device.url, url);
88
+ checkRequest({
89
+ method: 'POST',
90
+ uri: `${locusUrl}/participant/${memberId}/sendDtmf`,
91
+ body: {
92
+ memberId,
93
+ dtmf: {
94
+ direction: 'transmit',
95
+ correlationId,
96
+ tones,
97
+ },
98
+ device: {
99
+ url,
100
+ }
101
+ }
102
+ });
66
103
  });
67
104
  });
68
105
 
@@ -76,11 +113,91 @@ describe('plugin-meetings', () => {
76
113
  };
77
114
 
78
115
  await membersRequest.addMembers(options);
79
- const requestParams = membersRequest.request.getCall(0).args[0];
80
116
 
81
- assert.equal(requestParams.method, 'PUT');
82
- assert.equal(requestParams.uri, url1);
83
- assert.equal(requestParams.body.invitees[0].address, '+18578675309');
117
+ checkRequest({
118
+ method: 'PUT',
119
+ uri: url1,
120
+ body: {
121
+ alertIfActive: undefined,
122
+ invitees: [{address: '+18578675309'}]
123
+ }
124
+ })
125
+ });
126
+ });
127
+
128
+ describe('#admitMember', () => {
129
+ it('sends a request to admit members', async () => {
130
+ const options = {
131
+ locusUrl: url1,
132
+ memberIds: ['1', '2'],
133
+ };
134
+
135
+ await membersRequest.admitMember(options)
136
+
137
+ checkRequest({
138
+ method: 'PUT',
139
+ uri: 'https://example.com/12345/controls',
140
+ body: {
141
+ admit: {
142
+ participantIds: options.memberIds
143
+ }
144
+ }
145
+ });
146
+ });
147
+ });
148
+
149
+ describe('#removeMember', () => {
150
+ it('sends a request to remove a member', async () => {
151
+ const options = {
152
+ locusUrl: url1,
153
+ memberId: 'member1',
154
+ };
155
+
156
+ await membersRequest.removeMember(options);
157
+
158
+ checkRequest({
159
+ method: 'PUT',
160
+ uri: 'https://example.com/12345/participant/member1/leave',
161
+ body: {
162
+ reason: undefined
163
+ },
164
+ });
165
+ });
166
+ });
167
+
168
+ describe('#muteMember', () => {
169
+ it('sends a request to mute a member', async () => {
170
+ const options = {
171
+ locusUrl: url1,
172
+ memberId: 'member1',
173
+ muted: true,
174
+ };
175
+
176
+ await membersRequest.muteMember(options);
177
+
178
+ checkRequest({
179
+ method: 'PATCH',
180
+ uri: 'https://example.com/12345/participant/member1/controls',
181
+ body: {audio: {muted: true}},
182
+ });
183
+ });
184
+ });
185
+
186
+ describe('#transferHostToMember', () => {
187
+ it('sends a request to transfer host to a member', async () => {
188
+ const options = {
189
+ locusUrl: url1,
190
+ memberId: 'member1',
191
+ moderator: true,
192
+ };
193
+
194
+ await membersRequest.transferHostToMember(options);
195
+
196
+ checkRequest({
197
+ method: 'PATCH',
198
+ uri: 'https://example.com/12345/participant/member1/controls',
199
+ body: {role: {moderator: true}},
200
+ });
84
201
  });
85
202
  });
86
203
 
@@ -94,12 +211,15 @@ describe('plugin-meetings', () => {
94
211
  };
95
212
 
96
213
  await membersRequest.cancelPhoneInvite(options);
97
- const requestParams = membersRequest.request.getCall(0).args[0];
98
214
 
99
- assert.equal(requestParams.method, 'PUT');
100
- assert.equal(requestParams.uri, url1);
101
- assert.equal(requestParams.body.invitees[0].address, '+18578675309');
102
- assert.equal(requestParams.body.actionType, 'REMOVE');
215
+ checkRequest({
216
+ method: 'PUT',
217
+ uri: url1,
218
+ body: {
219
+ invitees: [{address: '+18578675309'}],
220
+ actionType: 'REMOVE',
221
+ },
222
+ });
103
223
  });
104
224
  });
105
225
 
@@ -120,11 +240,16 @@ describe('plugin-meetings', () => {
120
240
  };
121
241
 
122
242
  await membersRequest.assignRolesMember(options);
123
- const requestParams = membersRequest.request.getCall(0).args[0];
124
243
 
125
- assert.equal(requestParams.method, 'PATCH');
126
- assert.equal(requestParams.uri, `${locusUrl}/participant/${memberId}/controls`);
127
- assert.deepEqual(requestParams.body.role.roles, roles);
244
+ checkRequest({
245
+ method: 'PATCH',
246
+ uri: `${locusUrl}/participant/${memberId}/controls`,
247
+ body: {
248
+ role: {
249
+ roles
250
+ }
251
+ }
252
+ });
128
253
  });
129
254
  });
130
255
 
@@ -140,11 +265,16 @@ describe('plugin-meetings', () => {
140
265
  };
141
266
 
142
267
  await membersRequest.raiseOrLowerHandMember(options);
143
- const requestParams = membersRequest.request.getCall(0).args[0];
144
268
 
145
- assert.equal(requestParams.method, 'PATCH');
146
- assert.equal(requestParams.uri, `${locusUrl}/participant/${memberId}/controls`);
147
- assert.equal(requestParams.body.hand.raised, true);
269
+ checkRequest({
270
+ method: 'PATCH',
271
+ uri: `${locusUrl}/participant/${memberId}/controls`,
272
+ body: {
273
+ hand: {
274
+ raised: true
275
+ }
276
+ }
277
+ });
148
278
  });
149
279
  });
150
280
 
@@ -183,10 +313,9 @@ describe('plugin-meetings', () => {
183
313
  locusUrl,
184
314
  };
185
315
 
186
- assert.strictEqual(
187
- membersRequest.lowerAllHandsMember(options),
188
- membersRequest.request.getCall(0).returnValue
189
- );
316
+ const result = await membersRequest.lowerAllHandsMember(options);
317
+
318
+ assert.strictEqual(result, requestResponse);
190
319
  });
191
320
 
192
321
  it('sends a PATCH to the locus endpoint', async () => {
@@ -207,9 +336,7 @@ describe('plugin-meetings', () => {
207
336
  locusUrl: url1,
208
337
  });
209
338
 
210
- const requestParams = membersRequest.request.getCall(0).args[0];
211
-
212
- assert.deepEqual(requestParams, {
339
+ checkRequest({
213
340
  method: 'PATCH',
214
341
  uri: `${locusUrl}/controls`,
215
342
  body: {
@@ -232,15 +359,20 @@ describe('plugin-meetings', () => {
232
359
  const options = {
233
360
  memberId,
234
361
  requestingParticipantId,
235
- aliasValue,
362
+ alias: aliasValue,
236
363
  locusUrl,
237
364
  };
238
365
 
239
366
  await membersRequest.editDisplayNameMember(options);
240
- const requestParams = membersRequest.request.getCall(0).args[0];
241
367
 
242
- assert.equal(requestParams.method, 'POST');
243
- assert.equal(requestParams.uri, `${locusUrl}/participant/${memberId}/alias`);
368
+ checkRequest({
369
+ method: 'POST',
370
+ uri: `${locusUrl}/participant/${memberId}/alias`,
371
+ body: {
372
+ aliasValue,
373
+ requestingParticipantId,
374
+ }
375
+ });
244
376
  });
245
377
  });
246
378
  });