@webex/plugin-team-memberships 2.59.2 → 2.59.3-next.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.
@@ -1,240 +1,240 @@
1
- /*!
2
- * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
- */
4
-
5
- import '@webex/internal-plugin-device';
6
- import '@webex/plugin-logger';
7
- import '@webex/plugin-rooms';
8
- import '@webex/plugin-team-memberships';
9
- import '@webex/plugin-teams';
10
- import WebexCore from '@webex/webex-core';
11
- import {assert} from '@webex/test-helper-chai';
12
- import sinon from 'sinon';
13
- import testUsers from '@webex/test-helper-test-users';
14
-
15
- describe('plugin-team-memberships', function () {
16
- this.timeout(60000);
17
-
18
- let webex;
19
-
20
- before(() =>
21
- testUsers.create({count: 1}).then(([user]) => {
22
- webex = new WebexCore({credentials: user.token});
23
- })
24
- );
25
-
26
- describe('#teams', () => {
27
- describe('#memberships', () => {
28
- let team;
29
-
30
- const memberships = [];
31
-
32
- let user1;
33
-
34
- before(() =>
35
- testUsers.create({count: 1}).then((users) => {
36
- user1 = users[0];
37
- })
38
- );
39
-
40
- before(() =>
41
- webex.teams
42
- .create({
43
- name: 'Webex Team Test',
44
- })
45
- .then((t) => {
46
- team = t;
47
-
48
- return webex.rooms.create({
49
- title: 'Webex Team Room Test',
50
- teamId: team.id,
51
- });
52
- })
53
- );
54
-
55
- afterEach(() =>
56
- Promise.all(
57
- memberships.map((membership) =>
58
- webex.teamMemberships.remove(membership).catch((reason) => {
59
- console.error('Failed to delete membership', reason);
60
- })
61
- )
62
- ).then(() => {
63
- while (memberships.length) {
64
- memberships.pop();
65
- }
66
- })
67
- );
68
-
69
- describe('#create()', () => {
70
- it('adds a person to a team by user id', () =>
71
- webex.teamMemberships
72
- .create({
73
- personId: user1.id,
74
- teamId: team.id,
75
- })
76
- .then((membership) => {
77
- memberships.push(membership);
78
- assert.isTeamMembership(membership);
79
- assert.equal(membership.teamId, team.id);
80
- }));
81
-
82
- it('adds a person to a team by user email', () =>
83
- webex.teamMemberships
84
- .create({
85
- personEmail: user1.email,
86
- teamId: team.id,
87
- })
88
- .then((membership) => {
89
- memberships.push(membership);
90
- assert.isTeamMembership(membership);
91
- assert.equal(membership.teamId, team.id);
92
- }));
93
-
94
- it('adds a person to a team as a moderator', () =>
95
- webex.teamMemberships
96
- .create({
97
- personId: user1.id,
98
- teamId: team.id,
99
- isModerator: true,
100
- })
101
- .then((membership) => {
102
- memberships.push(membership);
103
- assert.isTeamMembership(membership);
104
- assert.equal(membership.teamId, team.id);
105
- assert.isTrue(membership.isModerator);
106
-
107
- // prevent this test from breaking other tests
108
- membership.isModerator = false;
109
-
110
- return webex.teamMemberships.update(membership);
111
- }));
112
- });
113
-
114
- describe('#get()', () => {
115
- it('retrieves a single team membership', () =>
116
- webex.teamMemberships
117
- .create({
118
- personId: user1.id,
119
- teamId: team.id,
120
- })
121
- .then((membership) =>
122
- webex.teamMemberships.get(membership).then((m) => {
123
- memberships.push(m);
124
- assert.isTeamMembership(m);
125
- // Skipping equality assertiong for now due to create date
126
- // mismatch
127
- // assert.deepEqual(m, membership);
128
- })
129
- ));
130
- });
131
-
132
- describe('#list()', () => {
133
- let user2, user3;
134
-
135
- before(() =>
136
- testUsers.create({count: 3}).then((users) => {
137
- [user2, user3] = users;
138
- })
139
- );
140
-
141
- before(() =>
142
- Promise.all([
143
- webex.teamMemberships.create({
144
- personId: user2.id,
145
- teamId: team.id,
146
- }),
147
- webex.teamMemberships.create({
148
- personId: user3.id,
149
- teamId: team.id,
150
- }),
151
- ])
152
- );
153
-
154
- it('retrieves all memberships for a team', () =>
155
- webex.teamMemberships
156
- .list({
157
- teamId: team.id,
158
- })
159
- .then((memberships) => {
160
- assert.isAbove(memberships.length, 2);
161
- for (const membership of memberships) {
162
- assert.isTeamMembership(membership);
163
- assert.equal(membership.teamId, team.id);
164
- }
165
- }));
166
-
167
- it('retrieves a bounded set of memberships for a team', () =>
168
- webex.teamMemberships
169
- .list({
170
- max: 1,
171
- teamId: team.id,
172
- })
173
- .then((memberships) => {
174
- const spy = sinon.spy();
175
-
176
- assert.lengthOf(memberships, 1);
177
-
178
- return (function f(page) {
179
- for (const membership of page) {
180
- assert.isTeamMembership(membership);
181
- spy(membership.id);
182
- }
183
-
184
- if (page.hasNext()) {
185
- return page.next().then(f);
186
- }
187
-
188
- return Promise.resolve();
189
- })(memberships).then(() => {
190
- assert.calledThrice(spy);
191
- });
192
- }));
193
- });
194
-
195
- describe('#update()', () => {
196
- it("updates the membership's moderator status", () =>
197
- webex.teamMemberships
198
- .create({
199
- personId: user1.id,
200
- teamId: team.id,
201
- })
202
- .then((membership) => {
203
- memberships.push(membership);
204
- assert.notOk(membership.isModerator);
205
- membership.isModerator = true;
206
-
207
- return webex.teamMemberships.update(membership);
208
- })
209
- .then((membership) => {
210
- assert.isTrue(membership.isModerator);
211
- membership.isModerator = false;
212
-
213
- return webex.teamMemberships.update(membership);
214
- })
215
- .then((membership) => assert.isFalse(membership.isModerator)));
216
- });
217
-
218
- describe('#remove()', () => {
219
- it('deletes a single membership', () =>
220
- webex.teamMemberships
221
- .create({
222
- personId: user1.id,
223
- teamId: team.id,
224
- })
225
- .then((membership) =>
226
- webex.teamMemberships
227
- .remove(membership)
228
- .then((body) => {
229
- assert.notOk(body);
230
-
231
- return webex.teamMemberships.list({teamId: team.id});
232
- })
233
- .then((memberships) => {
234
- assert.notInclude(memberships, membership);
235
- })
236
- ));
237
- });
238
- });
239
- });
240
- });
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ import '@webex/internal-plugin-device';
6
+ import '@webex/plugin-logger';
7
+ import '@webex/plugin-rooms';
8
+ import '@webex/plugin-team-memberships';
9
+ import '@webex/plugin-teams';
10
+ import WebexCore from '@webex/webex-core';
11
+ import {assert} from '@webex/test-helper-chai';
12
+ import sinon from 'sinon';
13
+ import testUsers from '@webex/test-helper-test-users';
14
+
15
+ describe('plugin-team-memberships', function () {
16
+ this.timeout(60000);
17
+
18
+ let webex;
19
+
20
+ before(() =>
21
+ testUsers.create({count: 1}).then(([user]) => {
22
+ webex = new WebexCore({credentials: user.token});
23
+ })
24
+ );
25
+
26
+ describe('#teams', () => {
27
+ describe('#memberships', () => {
28
+ let team;
29
+
30
+ const memberships = [];
31
+
32
+ let user1;
33
+
34
+ before(() =>
35
+ testUsers.create({count: 1}).then((users) => {
36
+ user1 = users[0];
37
+ })
38
+ );
39
+
40
+ before(() =>
41
+ webex.teams
42
+ .create({
43
+ name: 'Webex Team Test',
44
+ })
45
+ .then((t) => {
46
+ team = t;
47
+
48
+ return webex.rooms.create({
49
+ title: 'Webex Team Room Test',
50
+ teamId: team.id,
51
+ });
52
+ })
53
+ );
54
+
55
+ afterEach(() =>
56
+ Promise.all(
57
+ memberships.map((membership) =>
58
+ webex.teamMemberships.remove(membership).catch((reason) => {
59
+ console.error('Failed to delete membership', reason);
60
+ })
61
+ )
62
+ ).then(() => {
63
+ while (memberships.length) {
64
+ memberships.pop();
65
+ }
66
+ })
67
+ );
68
+
69
+ describe('#create()', () => {
70
+ it('adds a person to a team by user id', () =>
71
+ webex.teamMemberships
72
+ .create({
73
+ personId: user1.id,
74
+ teamId: team.id,
75
+ })
76
+ .then((membership) => {
77
+ memberships.push(membership);
78
+ assert.isTeamMembership(membership);
79
+ assert.equal(membership.teamId, team.id);
80
+ }));
81
+
82
+ it('adds a person to a team by user email', () =>
83
+ webex.teamMemberships
84
+ .create({
85
+ personEmail: user1.email,
86
+ teamId: team.id,
87
+ })
88
+ .then((membership) => {
89
+ memberships.push(membership);
90
+ assert.isTeamMembership(membership);
91
+ assert.equal(membership.teamId, team.id);
92
+ }));
93
+
94
+ it('adds a person to a team as a moderator', () =>
95
+ webex.teamMemberships
96
+ .create({
97
+ personId: user1.id,
98
+ teamId: team.id,
99
+ isModerator: true,
100
+ })
101
+ .then((membership) => {
102
+ memberships.push(membership);
103
+ assert.isTeamMembership(membership);
104
+ assert.equal(membership.teamId, team.id);
105
+ assert.isTrue(membership.isModerator);
106
+
107
+ // prevent this test from breaking other tests
108
+ membership.isModerator = false;
109
+
110
+ return webex.teamMemberships.update(membership);
111
+ }));
112
+ });
113
+
114
+ describe('#get()', () => {
115
+ it('retrieves a single team membership', () =>
116
+ webex.teamMemberships
117
+ .create({
118
+ personId: user1.id,
119
+ teamId: team.id,
120
+ })
121
+ .then((membership) =>
122
+ webex.teamMemberships.get(membership).then((m) => {
123
+ memberships.push(m);
124
+ assert.isTeamMembership(m);
125
+ // Skipping equality assertiong for now due to create date
126
+ // mismatch
127
+ // assert.deepEqual(m, membership);
128
+ })
129
+ ));
130
+ });
131
+
132
+ describe('#list()', () => {
133
+ let user2, user3;
134
+
135
+ before(() =>
136
+ testUsers.create({count: 3}).then((users) => {
137
+ [user2, user3] = users;
138
+ })
139
+ );
140
+
141
+ before(() =>
142
+ Promise.all([
143
+ webex.teamMemberships.create({
144
+ personId: user2.id,
145
+ teamId: team.id,
146
+ }),
147
+ webex.teamMemberships.create({
148
+ personId: user3.id,
149
+ teamId: team.id,
150
+ }),
151
+ ])
152
+ );
153
+
154
+ it('retrieves all memberships for a team', () =>
155
+ webex.teamMemberships
156
+ .list({
157
+ teamId: team.id,
158
+ })
159
+ .then((memberships) => {
160
+ assert.isAbove(memberships.length, 2);
161
+ for (const membership of memberships) {
162
+ assert.isTeamMembership(membership);
163
+ assert.equal(membership.teamId, team.id);
164
+ }
165
+ }));
166
+
167
+ it('retrieves a bounded set of memberships for a team', () =>
168
+ webex.teamMemberships
169
+ .list({
170
+ max: 1,
171
+ teamId: team.id,
172
+ })
173
+ .then((memberships) => {
174
+ const spy = sinon.spy();
175
+
176
+ assert.lengthOf(memberships, 1);
177
+
178
+ return (function f(page) {
179
+ for (const membership of page) {
180
+ assert.isTeamMembership(membership);
181
+ spy(membership.id);
182
+ }
183
+
184
+ if (page.hasNext()) {
185
+ return page.next().then(f);
186
+ }
187
+
188
+ return Promise.resolve();
189
+ })(memberships).then(() => {
190
+ assert.calledThrice(spy);
191
+ });
192
+ }));
193
+ });
194
+
195
+ describe('#update()', () => {
196
+ it("updates the membership's moderator status", () =>
197
+ webex.teamMemberships
198
+ .create({
199
+ personId: user1.id,
200
+ teamId: team.id,
201
+ })
202
+ .then((membership) => {
203
+ memberships.push(membership);
204
+ assert.notOk(membership.isModerator);
205
+ membership.isModerator = true;
206
+
207
+ return webex.teamMemberships.update(membership);
208
+ })
209
+ .then((membership) => {
210
+ assert.isTrue(membership.isModerator);
211
+ membership.isModerator = false;
212
+
213
+ return webex.teamMemberships.update(membership);
214
+ })
215
+ .then((membership) => assert.isFalse(membership.isModerator)));
216
+ });
217
+
218
+ describe('#remove()', () => {
219
+ it('deletes a single membership', () =>
220
+ webex.teamMemberships
221
+ .create({
222
+ personId: user1.id,
223
+ teamId: team.id,
224
+ })
225
+ .then((membership) =>
226
+ webex.teamMemberships
227
+ .remove(membership)
228
+ .then((body) => {
229
+ assert.notOk(body);
230
+
231
+ return webex.teamMemberships.list({teamId: team.id});
232
+ })
233
+ .then((memberships) => {
234
+ assert.notInclude(memberships, membership);
235
+ })
236
+ ));
237
+ });
238
+ });
239
+ });
240
+ });