@webex/plugin-memberships 3.0.0-beta.8 → 3.0.0-beta.81

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.
@@ -8,11 +8,7 @@ import '@webex/plugin-memberships';
8
8
  import '@webex/plugin-people';
9
9
  import '@webex/plugin-rooms';
10
10
  import WebexCore from '@webex/webex-core';
11
- import {
12
- SDK_EVENT,
13
- hydraTypes,
14
- constructHydraId
15
- } from '@webex/common';
11
+ import {SDK_EVENT, hydraTypes, constructHydraId} from '@webex/common';
16
12
  import {assert} from '@webex/test-helper-chai';
17
13
  import sinon from 'sinon';
18
14
  import testUsers from '@webex/test-helper-test-users';
@@ -24,37 +20,39 @@ describe('plugin-memberships', function () {
24
20
 
25
21
  let webex, user, actor;
26
22
 
27
- before(() => testUsers.create({count: 1})
28
- .then(([u]) => {
23
+ before(() =>
24
+ testUsers.create({count: 1}).then(([u]) => {
29
25
  user = u;
30
26
  webex = new WebexCore({credentials: user.token});
31
- webex.people.get('me')
32
- .then((person) => {
33
- actor = person;
34
- debug('SDK User (Actor) for tests:');
35
- debug(`- name: ${actor.displayName}`);
36
- debug(`- id: ${actor.id}`);
37
- });
38
- }));
27
+ webex.people.get('me').then((person) => {
28
+ actor = person;
29
+ debug('SDK User (Actor) for tests:');
30
+ debug(`- name: ${actor.displayName}`);
31
+ debug(`- id: ${actor.id}`);
32
+ });
33
+ })
34
+ );
39
35
 
40
36
  describe('#memberships', () => {
41
37
  let user1;
42
38
 
43
- before(() => testUsers.create({count: 1})
44
- .then((users) => {
39
+ before(() =>
40
+ testUsers.create({count: 1}).then((users) => {
45
41
  user1 = users[0];
46
42
  debug('User that memberships are created for:');
47
43
  debug(`- name: ${user1.displayName}`);
48
44
  debug(`- id: ${constructHydraId(hydraTypes.PEOPLE, user1.id)}`);
49
- }));
45
+ })
46
+ );
50
47
 
51
48
  let room;
52
49
 
53
- beforeEach(() => webex.rooms.create({title: 'Webex Test Room'})
54
- .then((r) => {
50
+ beforeEach(() =>
51
+ webex.rooms.create({title: 'Webex Test Room'}).then((r) => {
55
52
  debug('Created Cisco Test Room');
56
53
  room = r;
57
- }));
54
+ })
55
+ );
58
56
 
59
57
  afterEach(() => {
60
58
  webex.memberships.stopListening();
@@ -62,19 +60,21 @@ describe('plugin-memberships', function () {
62
60
  webex.memberships.off('updated');
63
61
  webex.memberships.off('deleted');
64
62
  webex.memberships.off('seen');
65
- webex.rooms.remove(room)
66
- .catch((e) =>
67
- webex.logger.error(`Failed to clean up after unit test: ${e}`));
63
+ webex.rooms
64
+ .remove(room)
65
+ .catch((e) => webex.logger.error(`Failed to clean up after unit test: ${e}`));
68
66
  });
69
67
 
70
68
  describe('#create()', () => {
71
- it('creates a membership by user id', () => webex.memberships.create({
72
- roomId: room.id,
73
- personId: user1.id
74
- })
75
- .then((membership) => {
76
- assert.isMembership(membership);
77
- }));
69
+ it('creates a membership by user id', () =>
70
+ webex.memberships
71
+ .create({
72
+ roomId: room.id,
73
+ personId: user1.id,
74
+ })
75
+ .then((membership) => {
76
+ assert.isMembership(membership);
77
+ }));
78
78
 
79
79
  it('creates a membership by user email', () => {
80
80
  const created = new Promise((resolve) => {
@@ -84,17 +84,19 @@ describe('plugin-memberships', function () {
84
84
  });
85
85
  });
86
86
 
87
- return webex.memberships.listen()
88
- .then(() => webex.memberships.create({
89
- roomId: room.id,
90
- personEmail: user1.email
91
- })
87
+ return webex.memberships.listen().then(() =>
88
+ webex.memberships
89
+ .create({
90
+ roomId: room.id,
91
+ personEmail: user1.email,
92
+ })
92
93
  .then(async (membership) => {
93
94
  validateMembership(membership);
94
95
  const event = await created;
95
96
 
96
97
  validateMembershipEvent(event, membership, actor);
97
- }));
98
+ })
99
+ );
98
100
  });
99
101
 
100
102
  it('creates a membership and sets moderator status', () => {
@@ -112,9 +114,11 @@ describe('plugin-memberships', function () {
112
114
  debug('membership:updated event handler for moderator test called');
113
115
 
114
116
  if (event.data.personId === actor.id) {
115
- debug('Setting a member to moderator implicitly sets the ' +
116
- 'caller of the API to moderator as well. In this test we ' +
117
- 'will ignore this event');
117
+ debug(
118
+ 'Setting a member to moderator implicitly sets the ' +
119
+ 'caller of the API to moderator as well. In this test we ' +
120
+ 'will ignore this event'
121
+ );
118
122
 
119
123
  return;
120
124
  }
@@ -122,12 +126,13 @@ describe('plugin-memberships', function () {
122
126
  });
123
127
  });
124
128
 
125
- return webex.memberships.listen()
126
- .then(() => webex.memberships.create({
127
- roomId: room.id,
128
- personId: user1.id,
129
- isModerator: true
130
- })
129
+ return webex.memberships.listen().then(() =>
130
+ webex.memberships
131
+ .create({
132
+ roomId: room.id,
133
+ personId: user1.id,
134
+ isModerator: true,
135
+ })
131
136
  .then(async (m) => {
132
137
  const membership = m;
133
138
 
@@ -143,7 +148,8 @@ describe('plugin-memberships', function () {
143
148
  // We expect the isModerator status to be false on create
144
149
  membership.isModerator = true;
145
150
  validateMembershipEvent(event2, membership, actor);
146
- }));
151
+ })
152
+ );
147
153
  });
148
154
 
149
155
  it('creates a space and memberships simultaniously', () => {
@@ -159,24 +165,27 @@ describe('plugin-memberships', function () {
159
165
  });
160
166
  });
161
167
 
162
- return webex.memberships.listen()
163
- // Cleanup current room, we need to catch the event when it's created.
164
- .then(() => webex.rooms.remove(room))
165
- // Create a room to trigger created event.
166
- .then(() => webex.rooms.create({title: 'Webex Test Room'}))
167
- // Store new room object and get the memberships of the room.
168
- .then((r) => {
169
- room = r;
168
+ return (
169
+ webex.memberships
170
+ .listen()
171
+ // Cleanup current room, we need to catch the event when it's created.
172
+ .then(() => webex.rooms.remove(room))
173
+ // Create a room to trigger created event.
174
+ .then(() => webex.rooms.create({title: 'Webex Test Room'}))
175
+ // Store new room object and get the memberships of the room.
176
+ .then((r) => {
177
+ room = r;
170
178
 
171
- return webex.memberships.list({roomId: room.id});
172
- })
173
- // validate data
174
- .then(async ({items: [membership]}) => {
175
- const event = await created;
179
+ return webex.memberships.list({roomId: room.id});
180
+ })
181
+ // validate data
182
+ .then(async ({items: [membership]}) => {
183
+ const event = await created;
176
184
 
177
- validateMembership(membership, false);
178
- validateMembershipEvent(event, membership, actor);
179
- });
185
+ validateMembership(membership, false);
186
+ validateMembershipEvent(event, membership, actor);
187
+ })
188
+ );
180
189
  });
181
190
  });
182
191
 
@@ -185,25 +194,24 @@ describe('plugin-memberships', function () {
185
194
 
186
195
  before(() =>
187
196
  // this could be in parallel once KMS always sends new keys
188
- webex.rooms.create({title: 'Membership A'})
189
- .then((room) => Promise.all([
190
- room,
191
- webex.rooms.create({title: 'Membership B'})
192
- ]))
197
+ webex.rooms
198
+ .create({title: 'Membership A'})
199
+ .then((room) => Promise.all([room, webex.rooms.create({title: 'Membership B'})]))
193
200
  .then((rooms) => {
194
201
  const room = rooms[0];
195
202
 
196
203
  return webex.memberships.create({
197
204
  roomId: room.id,
198
- personId: user1.id
205
+ personId: user1.id,
199
206
  });
200
207
  })
201
208
  .then((m) => {
202
209
  membership = m;
203
- }));
210
+ })
211
+ );
204
212
 
205
- it('retrieves a single membership', () => webex.memberships.get(membership)
206
- .then((m) => {
213
+ it('retrieves a single membership', () =>
214
+ webex.memberships.get(membership).then((m) => {
207
215
  assert.deepEqual(m, membership);
208
216
  }));
209
217
  });
@@ -213,22 +221,21 @@ describe('plugin-memberships', function () {
213
221
 
214
222
  before(() =>
215
223
  // this could be in parallel once KMS always sends new keys
216
- webex.rooms.create({title: 'Membership A'})
217
- .then((room) => Promise.all([
218
- room,
219
- webex.rooms.create({title: 'Membership B'})
220
- ]))
224
+ webex.rooms
225
+ .create({title: 'Membership A'})
226
+ .then((room) => Promise.all([room, webex.rooms.create({title: 'Membership B'})]))
221
227
  .then((rooms) => {
222
228
  room = rooms[0];
223
229
 
224
230
  return webex.memberships.create({
225
231
  roomId: room.id,
226
- personId: user1.id
232
+ personId: user1.id,
227
233
  });
228
- }));
234
+ })
235
+ );
229
236
 
230
- it('retrieves all memberships for a room', () => webex.memberships.list({roomId: room.id})
231
- .then((memberships) => {
237
+ it('retrieves all memberships for a room', () =>
238
+ webex.memberships.list({roomId: room.id}).then((memberships) => {
232
239
  assert.isDefined(memberships);
233
240
  assert.isAbove(memberships.length, 0);
234
241
  for (const membership of memberships) {
@@ -240,7 +247,8 @@ describe('plugin-memberships', function () {
240
247
  it('retrieves a bounded set of memberships for a room', () => {
241
248
  const spy = sinon.spy();
242
249
 
243
- return webex.memberships.list({roomId: room.id, max: 1})
250
+ return webex.memberships
251
+ .list({roomId: room.id, max: 1})
244
252
  .then((memberships) => {
245
253
  assert.lengthOf(memberships, 1);
246
254
 
@@ -254,38 +262,42 @@ describe('plugin-memberships', function () {
254
262
  }
255
263
 
256
264
  return Promise.resolve();
257
- }(memberships));
265
+ })(memberships);
258
266
  })
259
267
  .then(() => {
260
268
  assert.calledTwice(spy);
261
269
  });
262
270
  });
263
271
 
264
- it('retrieves all room memberships for a user', () => webex.memberships.list({
265
- personId: user.id,
266
- roomId: room.id
267
- })
268
- .then((memberships) => {
269
- const membership = memberships.items[0];
270
-
271
- return webex.memberships.list({
272
- personEmail: user.email
272
+ it('retrieves all room memberships for a user', () =>
273
+ webex.memberships
274
+ .list({
275
+ personId: user.id,
276
+ roomId: room.id,
273
277
  })
274
- .then((memberships) => {
275
- assert.isDefined(memberships);
276
- assert.isAbove(memberships.length, 0);
277
- for (const membership of memberships) {
278
- assert.isMembership(membership);
279
- assert.equal(membership.personEmail, user.email);
280
- }
281
- assert.deepInclude(memberships.items, membership);
282
- });
283
- }));
278
+ .then((memberships) => {
279
+ const membership = memberships.items[0];
280
+
281
+ return webex.memberships
282
+ .list({
283
+ personEmail: user.email,
284
+ })
285
+ .then((memberships) => {
286
+ assert.isDefined(memberships);
287
+ assert.isAbove(memberships.length, 0);
288
+ for (const membership of memberships) {
289
+ assert.isMembership(membership);
290
+ assert.equal(membership.personEmail, user.email);
291
+ }
292
+ assert.deepInclude(memberships.items, membership);
293
+ });
294
+ }));
284
295
 
285
296
  it('retrieves a bounded set of memberships for a user', () => {
286
297
  const spy = sinon.spy();
287
298
 
288
- return webex.memberships.list({personId: user.id, max: 1})
299
+ return webex.memberships
300
+ .list({personId: user.id, max: 1})
289
301
  .then((memberships) => {
290
302
  assert.lengthOf(memberships, 1);
291
303
 
@@ -300,7 +312,7 @@ describe('plugin-memberships', function () {
300
312
  }
301
313
 
302
314
  return Promise.resolve();
303
- }(memberships));
315
+ })(memberships);
304
316
  })
305
317
  .then(() => {
306
318
  assert.isAbove(spy.callCount, 0);
@@ -316,56 +328,65 @@ describe('plugin-memberships', function () {
316
328
  user1.webex = new WebexCore({credentials: user1.token});
317
329
 
318
330
  // Setup a space with both users
319
- return webex.rooms.create({title: 'Membership A'})
320
- .then((room) => Promise.all([
321
- room,
322
- webex.rooms.create({title: 'Membership B'})
323
- ]))
331
+ return webex.rooms
332
+ .create({title: 'Membership A'})
333
+ .then((room) => Promise.all([room, webex.rooms.create({title: 'Membership B'})]))
324
334
  .then((rooms) => {
325
335
  room = rooms[0];
326
336
 
327
337
  return webex.memberships.create({
328
338
  roomId: room.id,
329
- personId: user1.id
339
+ personId: user1.id,
330
340
  });
331
341
  });
332
342
  });
333
343
 
334
- it('retrieves memberships with read status for a room that has not been visited', () => webex.memberships.listWithReadStatus({roomId: room.id})
335
- .then((memberships) => {
344
+ it('retrieves memberships with read status for a room that has not been visited', () =>
345
+ webex.memberships.listWithReadStatus({roomId: room.id}).then((memberships) => {
336
346
  assert.isDefined(memberships);
337
347
  assert.equal(memberships.items.length, 2);
338
348
  for (const membership of memberships.items) {
339
349
  if (membership.personId !== actor.id) {
340
- assert.notExists(membership.lastSeenId,
341
- 'no lastSeenId for a room that has never been visited');
342
- assert.notExists(membership.lastSeenDate,
343
- 'no lastSeenDate for a room that has never been visited');
350
+ assert.notExists(
351
+ membership.lastSeenId,
352
+ 'no lastSeenId for a room that has never been visited'
353
+ );
354
+ assert.notExists(
355
+ membership.lastSeenDate,
356
+ 'no lastSeenDate for a room that has never been visited'
357
+ );
344
358
  }
345
359
  assert.equal(membership.roomId, room.id);
346
360
  }
347
361
  }));
348
362
 
349
- it('validates read status activity after other user posts a message', () => user1.webex.messages.create({
350
- roomId: room.id,
351
- text: 'Message to create activity for other member'
352
- })
353
- .then(() => webex.memberships.listWithReadStatus({roomId: room.id})
354
- .then((memberships) => {
355
- assert.isDefined(memberships);
356
- assert.equal(memberships.items.length, 2);
357
- for (const membership of memberships.items) {
358
- assert.exists(membership.lastSeenId,
359
- 'lastSeenId exists in a room that has been visited');
360
- assert.exists(membership.lastSeenDate,
361
- 'lastSeenDate exists in a room that has been visited');
362
- assert.equal(membership.roomId, room.id);
363
- // listWithReadStatus does not include created
364
- // fudge it here so we can validate all the other fields
365
- membership.created = 'foo';
366
- assert.isMembership(membership);
367
- }
368
- })));
363
+ it('validates read status activity after other user posts a message', () =>
364
+ user1.webex.messages
365
+ .create({
366
+ roomId: room.id,
367
+ text: 'Message to create activity for other member',
368
+ })
369
+ .then(() =>
370
+ webex.memberships.listWithReadStatus({roomId: room.id}).then((memberships) => {
371
+ assert.isDefined(memberships);
372
+ assert.equal(memberships.items.length, 2);
373
+ for (const membership of memberships.items) {
374
+ assert.exists(
375
+ membership.lastSeenId,
376
+ 'lastSeenId exists in a room that has been visited'
377
+ );
378
+ assert.exists(
379
+ membership.lastSeenDate,
380
+ 'lastSeenDate exists in a room that has been visited'
381
+ );
382
+ assert.equal(membership.roomId, room.id);
383
+ // listWithReadStatus does not include created
384
+ // fudge it here so we can validate all the other fields
385
+ membership.created = 'foo';
386
+ assert.isMembership(membership);
387
+ }
388
+ })
389
+ ));
369
390
  });
370
391
 
371
392
  describe('#update()', () => {
@@ -393,61 +414,72 @@ describe('plugin-memberships', function () {
393
414
  });
394
415
  });
395
416
 
396
-
397
- return webex.memberships.listen()
417
+ return webex.memberships
418
+ .listen()
398
419
  .then(() => webex.rooms.listen())
399
- .then(() => webex.rooms.create({title: 'Membership E'})
400
- .then((r) => {
401
- room = r;
402
- debug(`Room under test ID: ${room.id}`);
403
-
404
- // First get the SDK users membership
405
- return webex.memberships.list({
406
- roomId: room.id,
407
- personId: actor.id
408
- });
409
- })
410
- .then((membershipList) => {
411
- assert.isArray(membershipList.items,
412
- 'membership list not returned after room creation');
413
- assert.equal(membershipList.items.length, 1,
414
- 'SDK Test user not a member of room just created');
415
- sdkMember = membershipList.items[0];
416
-
417
- validateMembership(sdkMember);
418
- sdkMember.isModerator = true;
419
-
420
- // Then update the SDK user to a moderator
421
- return webex.memberships.update(sdkMember);
422
- })
423
- .then(async (m) => {
424
- debug('SDK User is now moderator. Wait for events');
425
- validateMembership(m, true);
426
- const event = await updated;
427
-
428
- validateMembershipEvent(event, m, actor);
429
- const roomUpdatedEvent = await roomUpdated;
420
+ .then(() =>
421
+ webex.rooms
422
+ .create({title: 'Membership E'})
423
+ .then((r) => {
424
+ room = r;
425
+ debug(`Room under test ID: ${room.id}`);
426
+
427
+ // First get the SDK users membership
428
+ return webex.memberships.list({
429
+ roomId: room.id,
430
+ personId: actor.id,
431
+ });
432
+ })
433
+ .then((membershipList) => {
434
+ assert.isArray(
435
+ membershipList.items,
436
+ 'membership list not returned after room creation'
437
+ );
438
+ assert.equal(
439
+ membershipList.items.length,
440
+ 1,
441
+ 'SDK Test user not a member of room just created'
442
+ );
443
+ sdkMember = membershipList.items[0];
444
+
445
+ validateMembership(sdkMember);
446
+ sdkMember.isModerator = true;
447
+
448
+ // Then update the SDK user to a moderator
449
+ return webex.memberships.update(sdkMember);
450
+ })
451
+ .then(async (m) => {
452
+ debug('SDK User is now moderator. Wait for events');
453
+ validateMembership(m, true);
454
+ const event = await updated;
430
455
 
431
- return Promise.resolve(roomUpdatedEvent);
432
- })
433
- .then((roomUpdatedEvent) => {
434
- // Check that the expected rooms:updated event matches
435
- // what we expect when a room is first moderated
436
- validateRoomsUpdatedEvent(roomUpdatedEvent, room,
437
- /* expected value of isLocked */ true);
456
+ validateMembershipEvent(event, m, actor);
457
+ const roomUpdatedEvent = await roomUpdated;
438
458
 
439
- // Finally, create the user for our test
440
- return webex.memberships.create({
441
- roomId: room.id,
442
- personId: user1.id
443
- });
444
- })
445
- .then((m) => {
446
- debug('User 1 Membership created in Membership E');
447
- membership = m;
448
- validateMembership(membership);
449
- })
450
- .catch((e) => debug(`membership failed: ${e}`)));
459
+ return Promise.resolve(roomUpdatedEvent);
460
+ })
461
+ .then((roomUpdatedEvent) => {
462
+ // Check that the expected rooms:updated event matches
463
+ // what we expect when a room is first moderated
464
+ validateRoomsUpdatedEvent(
465
+ roomUpdatedEvent,
466
+ room,
467
+ /* expected value of isLocked */ true
468
+ );
469
+
470
+ // Finally, create the user for our test
471
+ return webex.memberships.create({
472
+ roomId: room.id,
473
+ personId: user1.id,
474
+ });
475
+ })
476
+ .then((m) => {
477
+ debug('User 1 Membership created in Membership E');
478
+ membership = m;
479
+ validateMembership(membership);
480
+ })
481
+ .catch((e) => debug(`membership failed: ${e}`))
482
+ );
451
483
  });
452
484
 
453
485
  after(() => {
@@ -474,7 +506,8 @@ describe('plugin-memberships', function () {
474
506
 
475
507
  sdkMember.isModerator = false;
476
508
 
477
- return webex.rooms.listen()
509
+ return webex.rooms
510
+ .listen()
478
511
  .then(() => webex.memberships.listen())
479
512
  .then(() => webex.memberships.update(sdkMember))
480
513
  .then(async (m) => {
@@ -495,8 +528,9 @@ describe('plugin-memberships', function () {
495
528
  debug('Validating rooms:updated event...');
496
529
  debug(`roomId: ${room.id}, event.data.id: ${roomUpdatedEvent.data.id}`);
497
530
 
498
- return Promise.resolve(validateRoomsUpdatedEvent(roomUpdatedEvent,
499
- room, /* expected isLocked value */ false));
531
+ return Promise.resolve(
532
+ validateRoomsUpdatedEvent(roomUpdatedEvent, room, /* expected isLocked value */ false)
533
+ );
500
534
  })
501
535
  .catch((e) => debug(`after logic for #update()' failed: ${e}`));
502
536
  });
@@ -512,19 +546,19 @@ describe('plugin-memberships', function () {
512
546
  });
513
547
  });
514
548
 
515
- return webex.memberships.listen()
516
- .then(() => webex.memberships.update(membership)
517
- .then(async (m) => {
518
- debug('membership updated');
519
- assert.deepEqual(m, membership);
520
- validateMembership(membership, true);
521
- const event = await updated;
549
+ return webex.memberships.listen().then(() =>
550
+ webex.memberships.update(membership).then(async (m) => {
551
+ debug('membership updated');
552
+ assert.deepEqual(m, membership);
553
+ validateMembership(membership, true);
554
+ const event = await updated;
522
555
 
523
- validateMembershipEvent(event, membership, actor);
524
- }));
556
+ validateMembershipEvent(event, membership, actor);
557
+ })
558
+ );
525
559
  });
526
560
 
527
- it('revokes a member\'s moderator status', () => {
561
+ it("revokes a member's moderator status", () => {
528
562
  assert.isTrue(membership.isModerator);
529
563
  membership.isModerator = false;
530
564
 
@@ -535,19 +569,18 @@ describe('plugin-memberships', function () {
535
569
  });
536
570
  });
537
571
 
538
- return webex.memberships.listen()
539
- .then(() => webex.memberships.update(membership)
540
- .then(async (m) => {
541
- assert.deepEqual(m, membership);
542
- validateMembership(membership, false);
543
- const event = await updated;
572
+ return webex.memberships.listen().then(() =>
573
+ webex.memberships.update(membership).then(async (m) => {
574
+ assert.deepEqual(m, membership);
575
+ validateMembership(membership, false);
576
+ const event = await updated;
544
577
 
545
- validateMembershipEvent(event, membership, actor);
546
- }));
578
+ validateMembershipEvent(event, membership, actor);
579
+ })
580
+ );
547
581
  });
548
582
  });
549
583
 
550
-
551
584
  describe('#updateLastSeen()', () => {
552
585
  let actor1, message;
553
586
 
@@ -557,7 +590,8 @@ describe('plugin-memberships', function () {
557
590
  // and another can mark it as read
558
591
  user1.webex = new WebexCore({credentials: user1.token});
559
592
 
560
- return user1.webex.people.get('me')
593
+ return user1.webex.people
594
+ .get('me')
561
595
  .then((person) => {
562
596
  actor1 = person;
563
597
 
@@ -568,17 +602,20 @@ describe('plugin-memberships', function () {
568
602
 
569
603
  return webex.memberships.create({
570
604
  roomId: room.id,
571
- personId: actor1.id
605
+ personId: actor1.id,
572
606
  });
573
607
  })
574
- .then(() => webex.messages.create({
575
- roomId: room.id,
576
- text: 'This is a test message'
577
- })
578
- .then((m) => {
579
- message = m;
580
- assert.isMessage(message);
581
- }));
608
+ .then(() =>
609
+ webex.messages
610
+ .create({
611
+ roomId: room.id,
612
+ text: 'This is a test message',
613
+ })
614
+ .then((m) => {
615
+ message = m;
616
+ assert.isMessage(message);
617
+ })
618
+ );
582
619
  });
583
620
 
584
621
  it('marks a message as read and verifies membership:updated event', () => {
@@ -591,18 +628,21 @@ describe('plugin-memberships', function () {
591
628
 
592
629
  debug(`${user1.displayName} marked message as read...`);
593
630
 
594
- return webex.memberships.listen()
595
- .then(() => user1.webex.memberships.updateLastSeen(message)
596
- .then(async (m) => {
597
- debug('membership seen');
598
- validateMembership(m);
599
- const event = await seenPromise;
600
-
601
- debug(`...${user.displayName} got the membership:seen event.`);
602
- assert.equal(event.data.lastSeenId, message.id,
603
- 'message:seen lastSeenID matches id of message that was acknlowledged');
604
- validateMembershipEvent(event, m, actor1, actor);
605
- }));
631
+ return webex.memberships.listen().then(() =>
632
+ user1.webex.memberships.updateLastSeen(message).then(async (m) => {
633
+ debug('membership seen');
634
+ validateMembership(m);
635
+ const event = await seenPromise;
636
+
637
+ debug(`...${user.displayName} got the membership:seen event.`);
638
+ assert.equal(
639
+ event.data.lastSeenId,
640
+ message.id,
641
+ 'message:seen lastSeenID matches id of message that was acknlowledged'
642
+ );
643
+ validateMembershipEvent(event, m, actor1, actor);
644
+ })
645
+ );
606
646
  });
607
647
  });
608
648
 
@@ -613,22 +653,24 @@ describe('plugin-memberships', function () {
613
653
  // We create it by sending a message to the test user
614
654
  before(() =>
615
655
  // Ensure that room is a one-on-one object
616
- webex.messages.create({
617
- toPersonId: user1.id,
618
- text: 'This message will create a 1-1 space'
619
- })
656
+ webex.messages
657
+ .create({
658
+ toPersonId: user1.id,
659
+ text: 'This message will create a 1-1 space',
660
+ })
620
661
  .then((message) => {
621
662
  roomId = message.roomId;
622
663
 
623
664
  // Get the test users membership
624
665
  return webex.memberships.list({
625
666
  roomId,
626
- personId: user.id
667
+ personId: user.id,
627
668
  });
628
669
  })
629
670
  .then((memberships) => {
630
671
  membership = memberships.items[0];
631
- }));
672
+ })
673
+ );
632
674
 
633
675
  it('hides a space and validates the membership is updated', () => {
634
676
  const updatedEventPromise = new Promise((resolve) => {
@@ -638,40 +680,51 @@ describe('plugin-memberships', function () {
638
680
  });
639
681
  });
640
682
 
641
- return webex.memberships.listen()
642
- .then(() => {
643
- debug(`Hiding my membership in 1-1 space with ID: ${roomId}...`);
644
- membership.isRoomHidden = true;
645
-
646
- return webex.memberships.update(membership)
647
- .then(async (m) => {
648
- debug('memberships.update() request returned OK. Waiting for memberships:updated event');
649
- assert(m.isRoomHidden, 'membership returned from meberships.update() did not have isRoomHidden set to true');
650
- const event = await updatedEventPromise;
683
+ return webex.memberships.listen().then(() => {
684
+ debug(`Hiding my membership in 1-1 space with ID: ${roomId}...`);
685
+ membership.isRoomHidden = true;
651
686
 
652
- assert(event.data.isRoomHidden, 'memberships:updated event did not have isRoomHidden set to true');
653
- validateMembershipEvent(event, m, actor);
654
- })
655
- .catch((e) => assert.fail(`Updating room to hidden failed: ${e.message}`));
656
- });
687
+ return webex.memberships
688
+ .update(membership)
689
+ .then(async (m) => {
690
+ debug(
691
+ 'memberships.update() request returned OK. Waiting for memberships:updated event'
692
+ );
693
+ assert(
694
+ m.isRoomHidden,
695
+ 'membership returned from meberships.update() did not have isRoomHidden set to true'
696
+ );
697
+ const event = await updatedEventPromise;
698
+
699
+ assert(
700
+ event.data.isRoomHidden,
701
+ 'memberships:updated event did not have isRoomHidden set to true'
702
+ );
703
+ validateMembershipEvent(event, m, actor);
704
+ })
705
+ .catch((e) => assert.fail(`Updating room to hidden failed: ${e.message}`));
706
+ });
657
707
  });
658
708
  });
659
709
 
660
710
  describe('#remove()', () => {
661
711
  let membership;
662
712
 
663
- before(() => webex.rooms.create({title: 'Membership F'})
664
- .then((r) => {
665
- room = r;
713
+ before(() =>
714
+ webex.rooms
715
+ .create({title: 'Membership F'})
716
+ .then((r) => {
717
+ room = r;
666
718
 
667
- return webex.memberships.create({
668
- roomId: room.id,
669
- personId: user1.id
670
- });
671
- })
672
- .then((m) => {
673
- membership = m;
674
- }));
719
+ return webex.memberships.create({
720
+ roomId: room.id,
721
+ personId: user1.id,
722
+ });
723
+ })
724
+ .then((m) => {
725
+ membership = m;
726
+ })
727
+ );
675
728
 
676
729
  it('deletes a single membership', () => {
677
730
  const deletedEventPromise = new Promise((resolve) => {
@@ -681,11 +734,13 @@ describe('plugin-memberships', function () {
681
734
  });
682
735
  });
683
736
 
684
- return webex.memberships.listen()
685
- .then(() => webex.memberships.remove(membership)
686
- .catch((reason) => {
737
+ return webex.memberships
738
+ .listen()
739
+ .then(() =>
740
+ webex.memberships.remove(membership).catch((reason) => {
687
741
  webex.logger.error('Failed to delete membership', reason);
688
- }))
742
+ })
743
+ )
689
744
  .then(async (body) => {
690
745
  debug('member deleted');
691
746
  assert.notOk(body);
@@ -712,10 +767,8 @@ describe('plugin-memberships', function () {
712
767
  function validateMembership(membership, isModerator = false) {
713
768
  assert.isDefined(membership);
714
769
  if ('isModerator' in membership) {
715
- assert.equal(membership.isModerator, isModerator,
716
- 'unexpected isModerator status');
717
- }
718
- else {
770
+ assert.equal(membership.isModerator, isModerator, 'unexpected isModerator status');
771
+ } else {
719
772
  // moderator status not returned for membership:seen events
720
773
  assert.exists(membership.lastSeenId);
721
774
  // fudge the moderator field so we can do the general check
@@ -735,41 +788,47 @@ function validateMembership(membership, isModerator = false) {
735
788
  * @returns {void}
736
789
  */
737
790
  function validateMembershipEvent(event, membership, actor, creator = actor) {
738
- assert.isTrue(event.resource === SDK_EVENT.EXTERNAL.RESOURCE.MEMBERSHIPS,
739
- 'not a membership event');
791
+ assert.isTrue(
792
+ event.resource === SDK_EVENT.EXTERNAL.RESOURCE.MEMBERSHIPS,
793
+ 'not a membership event'
794
+ );
740
795
  assert.isDefined(event.event, 'membership event type not set');
741
796
  assert.isDefined(event.created, 'event listener created date not set');
742
- assert.equal(event.createdBy, creator.id,
743
- 'event listener createdBy not set to our actor');
744
- assert.equal(event.orgId, actor.orgId,
745
- 'event listener orgId not === to our actor\'s');
797
+ assert.equal(event.createdBy, creator.id, 'event listener createdBy not set to our actor');
798
+ assert.equal(event.orgId, actor.orgId, "event listener orgId not === to our actor's");
746
799
  assert.equal(event.ownedBy, 'creator', 'event listener not owned by creator');
747
800
  assert.equal(event.status, 'active', 'event listener status not active');
748
- assert.equal(event.actorId, actor.id,
749
- 'event actorId not equal to our actor\'s id');
801
+ assert.equal(event.actorId, actor.id, "event actorId not equal to our actor's id");
750
802
 
751
803
  // Ensure event data matches data returned from function call
752
804
  // Skip this until we figure out how conversations converts the internal test user UUID
753
- assert.equal(event.data.id, membership.id,
754
- 'event/membership.id not equal');
755
- assert.equal(event.data.roomId, membership.roomId,
756
- 'event/membership.roomId not equal');
757
- assert.equal(event.data.personId, membership.personId,
758
- 'event/membership.personId not equal');
759
- assert.equal(event.data.personOrgId, membership.personOrgId,
760
- 'event/membership.personId not equal');
761
- assert.equal(event.data.personEmail, membership.personEmail,
762
- 'event/membership.personEmail not equal');
763
- assert.equal(event.data.personDisplayName, membership.personDisplayName,
764
- 'event/membership.personDisplayName not equal');
765
- assert.equal(event.data.roomType, membership.roomType,
766
- 'event/membership.roomType not equal');
767
- assert.equal(event.data.isHidden, membership.isHidden,
768
- 'event/membership.isHidden not equal');
805
+ assert.equal(event.data.id, membership.id, 'event/membership.id not equal');
806
+ assert.equal(event.data.roomId, membership.roomId, 'event/membership.roomId not equal');
807
+ assert.equal(event.data.personId, membership.personId, 'event/membership.personId not equal');
808
+ assert.equal(
809
+ event.data.personOrgId,
810
+ membership.personOrgId,
811
+ 'event/membership.personId not equal'
812
+ );
813
+ assert.equal(
814
+ event.data.personEmail,
815
+ membership.personEmail,
816
+ 'event/membership.personEmail not equal'
817
+ );
818
+ assert.equal(
819
+ event.data.personDisplayName,
820
+ membership.personDisplayName,
821
+ 'event/membership.personDisplayName not equal'
822
+ );
823
+ assert.equal(event.data.roomType, membership.roomType, 'event/membership.roomType not equal');
824
+ assert.equal(event.data.isHidden, membership.isHidden, 'event/membership.isHidden not equal');
769
825
  if (event.event !== 'seen') {
770
826
  // moderator status not returned on membership:seen events
771
- assert.equal(event.data.isModerator, membership.isModerator,
772
- 'event/membership.isModerator not equal');
827
+ assert.equal(
828
+ event.data.isModerator,
829
+ membership.isModerator,
830
+ 'event/membership.isModerator not equal'
831
+ );
773
832
  }
774
833
  debug(`membership:${event.event} event validated`);
775
834
  }
@@ -787,12 +846,9 @@ function validateMembershipEvent(event, membership, actor, creator = actor) {
787
846
  function validateRoomsUpdatedEvent(event, room, isLocked) {
788
847
  const {data} = event;
789
848
 
790
- assert((room.id === data.id),
791
- 'rooms:updated event did not have the expected roomId');
792
- assert((room.type === data.type),
793
- 'rooms:updated event did not have the expected room type');
794
- assert((data.isLocked === isLocked),
795
- 'rooms:updated did not have expected isLocked value');
849
+ assert(room.id === data.id, 'rooms:updated event did not have the expected roomId');
850
+ assert(room.type === data.type, 'rooms:updated event did not have the expected room type');
851
+ assert(data.isLocked === isLocked, 'rooms:updated did not have expected isLocked value');
796
852
 
797
853
  debug(`rooms:${event.event} event validated`);
798
854
  }