@webex/plugin-meetings 3.0.0-stream-classes.4 → 3.0.0-test.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.
Files changed (239) hide show
  1. package/README.md +12 -0
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/no-meeting-info.js +51 -0
  5. package/dist/common/errors/no-meeting-info.js.map +1 -0
  6. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  7. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  8. package/dist/common/errors/webex-errors.js +23 -3
  9. package/dist/common/errors/webex-errors.js.map +1 -1
  10. package/dist/common/logs/request.js +5 -1
  11. package/dist/common/logs/request.js.map +1 -1
  12. package/dist/config.js +1 -1
  13. package/dist/config.js.map +1 -1
  14. package/dist/constants.js +69 -9
  15. package/dist/constants.js.map +1 -1
  16. package/dist/index.js +11 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/interceptors/index.js +15 -0
  19. package/dist/interceptors/index.js.map +1 -0
  20. package/dist/interceptors/locusRetry.js +93 -0
  21. package/dist/interceptors/locusRetry.js.map +1 -0
  22. package/dist/interpretation/index.js +16 -2
  23. package/dist/interpretation/index.js.map +1 -1
  24. package/dist/interpretation/siLanguage.js +1 -1
  25. package/dist/locus-info/index.js +40 -11
  26. package/dist/locus-info/index.js.map +1 -1
  27. package/dist/locus-info/mediaSharesUtils.js +15 -1
  28. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  29. package/dist/locus-info/parser.js +42 -21
  30. package/dist/locus-info/parser.js.map +1 -1
  31. package/dist/media/index.js +10 -6
  32. package/dist/media/index.js.map +1 -1
  33. package/dist/media/properties.js +13 -3
  34. package/dist/media/properties.js.map +1 -1
  35. package/dist/mediaQualityMetrics/config.js +135 -330
  36. package/dist/mediaQualityMetrics/config.js.map +1 -1
  37. package/dist/meeting/in-meeting-actions.js +4 -0
  38. package/dist/meeting/in-meeting-actions.js.map +1 -1
  39. package/dist/meeting/index.js +2187 -1074
  40. package/dist/meeting/index.js.map +1 -1
  41. package/dist/meeting/muteState.js +37 -25
  42. package/dist/meeting/muteState.js.map +1 -1
  43. package/dist/meeting/request.js +34 -19
  44. package/dist/meeting/request.js.map +1 -1
  45. package/dist/meeting/util.js +71 -0
  46. package/dist/meeting/util.js.map +1 -1
  47. package/dist/meeting-info/index.js +48 -23
  48. package/dist/meeting-info/index.js.map +1 -1
  49. package/dist/meeting-info/meeting-info-v2.js +25 -4
  50. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  51. package/dist/meeting-info/utilv2.js +1 -1
  52. package/dist/meeting-info/utilv2.js.map +1 -1
  53. package/dist/meetings/collection.js +17 -0
  54. package/dist/meetings/collection.js.map +1 -1
  55. package/dist/meetings/index.js +142 -57
  56. package/dist/meetings/index.js.map +1 -1
  57. package/dist/meetings/util.js +2 -6
  58. package/dist/meetings/util.js.map +1 -1
  59. package/dist/member/index.js +9 -0
  60. package/dist/member/index.js.map +1 -1
  61. package/dist/member/util.js +11 -0
  62. package/dist/member/util.js.map +1 -1
  63. package/dist/members/index.js +17 -1
  64. package/dist/members/index.js.map +1 -1
  65. package/dist/members/types.js.map +1 -1
  66. package/dist/members/util.js +15 -4
  67. package/dist/members/util.js.map +1 -1
  68. package/dist/metrics/constants.js +15 -1
  69. package/dist/metrics/constants.js.map +1 -1
  70. package/dist/multistream/mediaRequestManager.js +1 -1
  71. package/dist/multistream/mediaRequestManager.js.map +1 -1
  72. package/dist/multistream/remoteMediaGroup.js +16 -2
  73. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  74. package/dist/multistream/remoteMediaManager.js +222 -73
  75. package/dist/multistream/remoteMediaManager.js.map +1 -1
  76. package/dist/multistream/sendSlotManager.js +22 -0
  77. package/dist/multistream/sendSlotManager.js.map +1 -1
  78. package/dist/reachability/clusterReachability.js +356 -0
  79. package/dist/reachability/clusterReachability.js.map +1 -0
  80. package/dist/reachability/index.js +262 -432
  81. package/dist/reachability/index.js.map +1 -1
  82. package/dist/reachability/request.js +1 -1
  83. package/dist/reachability/request.js.map +1 -1
  84. package/dist/reachability/util.js +29 -0
  85. package/dist/reachability/util.js.map +1 -0
  86. package/dist/reconnection-manager/index.js +113 -96
  87. package/dist/reconnection-manager/index.js.map +1 -1
  88. package/dist/roap/index.js +57 -25
  89. package/dist/roap/index.js.map +1 -1
  90. package/dist/roap/request.js +5 -13
  91. package/dist/roap/request.js.map +1 -1
  92. package/dist/roap/turnDiscovery.js +173 -81
  93. package/dist/roap/turnDiscovery.js.map +1 -1
  94. package/dist/rtcMetrics/index.js +68 -6
  95. package/dist/rtcMetrics/index.js.map +1 -1
  96. package/dist/statsAnalyzer/index.js +338 -289
  97. package/dist/statsAnalyzer/index.js.map +1 -1
  98. package/dist/statsAnalyzer/mqaUtil.js +296 -156
  99. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  100. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  101. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  102. package/dist/types/common/errors/webex-errors.d.ts +13 -1
  103. package/dist/types/common/logs/request.d.ts +2 -0
  104. package/dist/types/config.d.ts +1 -1
  105. package/dist/types/constants.d.ts +66 -13
  106. package/dist/types/index.d.ts +1 -1
  107. package/dist/types/interceptors/index.d.ts +2 -0
  108. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  109. package/dist/types/locus-info/index.d.ts +1 -1
  110. package/dist/types/locus-info/parser.d.ts +3 -2
  111. package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
  112. package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
  113. package/dist/types/meeting/index.d.ts +285 -34
  114. package/dist/types/meeting/locusMediaRequest.d.ts +1 -2
  115. package/dist/types/meeting/muteState.d.ts +2 -8
  116. package/dist/types/meeting/request.d.ts +4 -1
  117. package/dist/types/meeting/util.d.ts +25 -1
  118. package/dist/types/meeting-info/index.d.ts +7 -0
  119. package/dist/types/meeting-info/meeting-info-v2.d.ts +1 -0
  120. package/dist/types/meetings/collection.d.ts +9 -0
  121. package/dist/types/meetings/index.d.ts +42 -14
  122. package/dist/types/member/index.d.ts +1 -0
  123. package/dist/types/members/types.d.ts +1 -0
  124. package/dist/types/members/util.d.ts +5 -0
  125. package/dist/types/metrics/constants.d.ts +15 -0
  126. package/dist/types/multistream/mediaRequestManager.d.ts +2 -0
  127. package/dist/types/multistream/remoteMediaGroup.d.ts +2 -0
  128. package/dist/types/multistream/remoteMediaManager.d.ts +25 -1
  129. package/dist/types/multistream/sendSlotManager.d.ts +9 -0
  130. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  131. package/dist/types/reachability/index.d.ts +59 -112
  132. package/dist/types/reachability/request.d.ts +1 -1
  133. package/dist/types/reachability/util.d.ts +8 -0
  134. package/dist/types/reconnection-manager/index.d.ts +10 -0
  135. package/dist/types/roap/index.d.ts +2 -1
  136. package/dist/types/roap/request.d.ts +2 -1
  137. package/dist/types/roap/turnDiscovery.d.ts +21 -4
  138. package/dist/types/rtcMetrics/index.d.ts +15 -1
  139. package/dist/types/statsAnalyzer/index.d.ts +28 -11
  140. package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
  141. package/dist/types/webinar/collection.d.ts +16 -0
  142. package/dist/types/webinar/index.d.ts +5 -0
  143. package/dist/webinar/collection.js +44 -0
  144. package/dist/webinar/collection.js.map +1 -0
  145. package/dist/webinar/index.js +69 -0
  146. package/dist/webinar/index.js.map +1 -0
  147. package/package.json +3 -2
  148. package/src/common/errors/no-meeting-info.ts +24 -0
  149. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  150. package/src/common/errors/webex-errors.ts +19 -2
  151. package/src/common/logs/request.ts +5 -1
  152. package/src/config.ts +1 -1
  153. package/src/constants.ts +71 -6
  154. package/src/index.ts +5 -0
  155. package/src/interceptors/index.ts +3 -0
  156. package/src/interceptors/locusRetry.ts +67 -0
  157. package/src/interpretation/index.ts +18 -1
  158. package/src/locus-info/index.ts +52 -16
  159. package/src/locus-info/mediaSharesUtils.ts +16 -0
  160. package/src/locus-info/parser.ts +47 -21
  161. package/src/media/index.ts +8 -6
  162. package/src/media/properties.ts +17 -2
  163. package/src/mediaQualityMetrics/config.ts +103 -238
  164. package/src/meeting/in-meeting-actions.ts +8 -0
  165. package/src/meeting/index.ts +1510 -529
  166. package/src/meeting/muteState.ts +34 -20
  167. package/src/meeting/request.ts +19 -1
  168. package/src/meeting/util.ts +97 -0
  169. package/src/meeting-info/index.ts +47 -20
  170. package/src/meeting-info/meeting-info-v2.ts +27 -5
  171. package/src/meeting-info/utilv2.ts +1 -1
  172. package/src/meetings/collection.ts +13 -0
  173. package/src/meetings/index.ts +112 -31
  174. package/src/meetings/util.ts +2 -8
  175. package/src/member/index.ts +9 -0
  176. package/src/member/util.ts +14 -0
  177. package/src/members/index.ts +29 -2
  178. package/src/members/types.ts +1 -0
  179. package/src/members/util.ts +15 -1
  180. package/src/metrics/constants.ts +14 -0
  181. package/src/multistream/mediaRequestManager.ts +4 -1
  182. package/src/multistream/remoteMediaGroup.ts +19 -0
  183. package/src/multistream/remoteMediaManager.ts +141 -18
  184. package/src/multistream/sendSlotManager.ts +29 -0
  185. package/src/reachability/clusterReachability.ts +320 -0
  186. package/src/reachability/index.ts +221 -382
  187. package/src/reachability/request.ts +1 -1
  188. package/src/reachability/util.ts +24 -0
  189. package/src/reconnection-manager/index.ts +87 -83
  190. package/src/roap/index.ts +60 -24
  191. package/src/roap/request.ts +3 -16
  192. package/src/roap/turnDiscovery.ts +112 -39
  193. package/src/rtcMetrics/index.ts +71 -5
  194. package/src/statsAnalyzer/index.ts +430 -427
  195. package/src/statsAnalyzer/mqaUtil.ts +317 -168
  196. package/src/webinar/collection.ts +31 -0
  197. package/src/webinar/index.ts +62 -0
  198. package/test/integration/spec/converged-space-meetings.js +7 -7
  199. package/test/integration/spec/journey.js +86 -104
  200. package/test/integration/spec/space-meeting.js +9 -9
  201. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  202. package/test/unit/spec/interpretation/index.ts +36 -3
  203. package/test/unit/spec/locus-info/index.js +205 -12
  204. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  205. package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
  206. package/test/unit/spec/locus-info/parser.js +54 -13
  207. package/test/unit/spec/media/index.ts +20 -4
  208. package/test/unit/spec/media/properties.ts +2 -2
  209. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  210. package/test/unit/spec/meeting/index.js +4027 -1075
  211. package/test/unit/spec/meeting/muteState.js +219 -67
  212. package/test/unit/spec/meeting/request.js +63 -12
  213. package/test/unit/spec/meeting/utils.js +93 -0
  214. package/test/unit/spec/meeting-info/index.js +180 -61
  215. package/test/unit/spec/meeting-info/meetinginfov2.js +196 -53
  216. package/test/unit/spec/meetings/collection.js +12 -0
  217. package/test/unit/spec/meetings/index.js +619 -206
  218. package/test/unit/spec/meetings/utils.js +35 -12
  219. package/test/unit/spec/member/index.js +8 -7
  220. package/test/unit/spec/member/util.js +32 -0
  221. package/test/unit/spec/members/index.js +130 -17
  222. package/test/unit/spec/members/utils.js +26 -0
  223. package/test/unit/spec/multistream/mediaRequestManager.ts +20 -2
  224. package/test/unit/spec/multistream/remoteMediaGroup.ts +80 -1
  225. package/test/unit/spec/multistream/remoteMediaManager.ts +210 -3
  226. package/test/unit/spec/multistream/sendSlotManager.ts +50 -18
  227. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  228. package/test/unit/spec/reachability/index.ts +505 -135
  229. package/test/unit/spec/reachability/util.ts +40 -0
  230. package/test/unit/spec/reconnection-manager/index.js +74 -17
  231. package/test/unit/spec/roap/index.ts +181 -61
  232. package/test/unit/spec/roap/request.ts +27 -3
  233. package/test/unit/spec/roap/turnDiscovery.ts +362 -101
  234. package/test/unit/spec/rtcMetrics/index.ts +57 -3
  235. package/test/unit/spec/stats-analyzer/index.js +1225 -12
  236. package/test/unit/spec/webinar/collection.ts +13 -0
  237. package/test/unit/spec/webinar/index.ts +60 -0
  238. package/test/utils/integrationTestUtils.js +4 -4
  239. package/test/utils/webex-test-users.js +12 -4
@@ -5,6 +5,7 @@
5
5
  import sinon from 'sinon';
6
6
  import {assert} from '@webex/test-helper-chai';
7
7
  import LocusDeltaParser from '@webex/plugin-meetings/src/locus-info/parser';
8
+ import Metrics from '@webex/plugin-meetings/src/metrics';
8
9
 
9
10
  import basicSequenceComparisons from './lib/BasicSeqCmp.json';
10
11
  import sequenceComparisons from './lib/SeqCmp';
@@ -50,9 +51,11 @@ describe('locus-info/parser', () => {
50
51
  });
51
52
 
52
53
  describe('delta sequence comparisons', () => {
53
- const {DESYNC, USE_CURRENT, USE_INCOMING} = LocusDeltaParser.loci;
54
+ const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = LocusDeltaParser.loci;
54
55
  const {extractComparisonState: extract} = LocusDeltaParser;
55
56
 
57
+ sinon.stub(Metrics, 'sendBehavioralMetric');
58
+
56
59
  function translate(action) {
57
60
  switch (action) {
58
61
  case 'ACCEPT_NEW':
@@ -61,6 +64,10 @@ describe('locus-info/parser', () => {
61
64
  return USE_CURRENT;
62
65
  case 'DESYNC':
63
66
  return DESYNC;
67
+ case 'WAIT':
68
+ return WAIT;
69
+ case 'LOCUS_URL_CHANGED':
70
+ return LOCUS_URL_CHANGED;
64
71
  default:
65
72
  throw new Error(`${action} not recognized`);
66
73
  }
@@ -73,10 +80,12 @@ describe('locus-info/parser', () => {
73
80
 
74
81
  const current = {
75
82
  sequence: sequenceComparisons.sequences[currentKey],
83
+ url: sequenceComparisons.update_actions[key].currentUrl,
76
84
  };
77
85
  const incoming = {
78
86
  sequence: sequenceComparisons.sequences[incomingKey],
79
87
  baseSequence: sequenceComparisons.sequences[baseKey],
88
+ url: sequenceComparisons.update_actions[key].incomingUrl,
80
89
  };
81
90
  const comparison = LocusDeltaParser.compare(current, incoming);
82
91
  const action = extract(comparison);
@@ -87,6 +96,8 @@ describe('locus-info/parser', () => {
87
96
  assert.equal(action, translate(result));
88
97
  });
89
98
  });
99
+
100
+ Metrics.sendBehavioralMetric.restore();
90
101
  });
91
102
  });
92
103
 
@@ -106,7 +117,7 @@ describe('locus-info/parser', () => {
106
117
  return burst;
107
118
  })();
108
119
 
109
- parser.onDeltaAction = true;
120
+ parser.onDeltaAction = sinon.stub();
110
121
  parser.processDeltaEvent = function () {
111
122
  const fakeLoci = this.queue.dequeue();
112
123
 
@@ -133,7 +144,11 @@ describe('locus-info/parser', () => {
133
144
  });
134
145
 
135
146
  describe('Processes delta events correctly', () => {
136
- const NEW_LOCI = 'NEW LOCI';
147
+ const CURRENT_LOCI = {sequence: {entries: [100]}, url: 'CURRENT LOCI', baseSequence: {
148
+ "entries": [100], "rangeStart": 100, "rangeEnd": 100}};
149
+ const NEW_LOCI = {sequence: {entries: [200]}, url: 'NEW LOCI', baseSequence: {
150
+ "entries": [200], "rangeStart": 200, "rangeEnd": 200}};
151
+
137
152
  let sandbox = null;
138
153
  let parser;
139
154
 
@@ -142,6 +157,7 @@ describe('locus-info/parser', () => {
142
157
  parser = new LocusDeltaParser();
143
158
  sandbox.stub(parser, 'isValidLocus').returns(true);
144
159
  parser.queue.dequeue = sandbox.stub().returns(NEW_LOCI);
160
+ parser.onDeltaAction = sandbox.stub();
145
161
  });
146
162
 
147
163
  afterEach(() => {
@@ -153,7 +169,7 @@ describe('locus-info/parser', () => {
153
169
  const {DESYNC} = LocusDeltaParser.loci;
154
170
 
155
171
  parser.pause = sandbox.stub();
156
- LocusDeltaParser.compare = sandbox.stub().returns(DESYNC);
172
+ sandbox.stub(LocusDeltaParser, 'compare').returns(DESYNC);
157
173
 
158
174
  parser.processDeltaEvent();
159
175
 
@@ -164,7 +180,7 @@ describe('locus-info/parser', () => {
164
180
  const {USE_INCOMING} = LocusDeltaParser.loci;
165
181
 
166
182
  parser.workingCopy = null;
167
- LocusDeltaParser.compare = sandbox.stub().returns(USE_INCOMING);
183
+ sandbox.stub(LocusDeltaParser, 'compare').returns(USE_INCOMING);
168
184
 
169
185
  parser.processDeltaEvent();
170
186
 
@@ -175,8 +191,7 @@ describe('locus-info/parser', () => {
175
191
  const {USE_INCOMING} = LocusDeltaParser.loci;
176
192
  const lociComparison = USE_INCOMING;
177
193
 
178
- LocusDeltaParser.compare = sandbox.stub().returns(lociComparison);
179
- parser.onDeltaAction = sandbox.stub();
194
+ sandbox.stub(LocusDeltaParser, 'compare').returns(lociComparison);
180
195
 
181
196
  parser.processDeltaEvent();
182
197
 
@@ -186,7 +201,7 @@ describe('locus-info/parser', () => {
186
201
  it('should call nextEvent()', () => {
187
202
  const {USE_INCOMING} = LocusDeltaParser.loci;
188
203
 
189
- LocusDeltaParser.compare = sandbox.stub().returns(USE_INCOMING);
204
+ sandbox.stub(LocusDeltaParser, 'compare').returns(USE_INCOMING);
190
205
  parser.nextEvent = sandbox.stub();
191
206
 
192
207
  parser.processDeltaEvent();
@@ -197,7 +212,8 @@ describe('locus-info/parser', () => {
197
212
  it('should not call compare() if locus is invalid', () => {
198
213
  const {USE_INCOMING} = LocusDeltaParser.loci;
199
214
 
200
- LocusDeltaParser.compare = sandbox.stub().returns(USE_INCOMING);
215
+ sandbox.stub(LocusDeltaParser, 'compare').returns(USE_INCOMING);
216
+
201
217
  // restore the original method
202
218
  parser.isValidLocus.restore();
203
219
  parser.isValidLocus.bind(parser);
@@ -208,9 +224,8 @@ describe('locus-info/parser', () => {
208
224
  });
209
225
 
210
226
  it('processDeltaEvent() should take next item in queue', () => {
211
- // restore the original method
212
- parser.queue.dequeue = sandbox.stub();
213
-
227
+ parser.workingCopy = CURRENT_LOCI;
228
+
214
229
  parser.processDeltaEvent();
215
230
 
216
231
  assert.calledOnce(parser.queue.dequeue);
@@ -228,7 +243,7 @@ describe('locus-info/parser', () => {
228
243
  assert.equal(comparisonResults, expectedResults);
229
244
  });
230
245
 
231
- it('shoud be able to unpack comparison results', () => {
246
+ it('should be able to unpack comparison results', () => {
232
247
  const {extractComparisonState: extract} = LocusDeltaParser;
233
248
 
234
249
  const comparisonResults = 'value04:value03:value:02:value01';
@@ -236,6 +251,32 @@ describe('locus-info/parser', () => {
236
251
 
237
252
  assert.equal(lastResult, 'value04');
238
253
  });
254
+
255
+ it('replaces current loci when the locus URL changes and incoming sequence is later, even when baseSequence doesn\'t match', () => {
256
+ const {USE_INCOMING} = LocusDeltaParser.loci;
257
+
258
+ parser.queue.dequeue = sandbox.stub().returns(NEW_LOCI);
259
+ parser.onDeltaAction = sandbox.stub();
260
+ parser.workingCopy = CURRENT_LOCI;
261
+ parser.triggerSync = sandbox.stub();
262
+
263
+ parser.processDeltaEvent();
264
+
265
+ assert.equal(parser.workingCopy, NEW_LOCI);
266
+ });
267
+
268
+ it('does not replace current loci when the locus URL changes but incoming sequence is not later', () => {
269
+ const {USE_INCOMING} = LocusDeltaParser.loci;
270
+ const laterLoci = {...CURRENT_LOCI, sequence: {entries: [300]}};
271
+
272
+ parser.queue.dequeue = sandbox.stub().returns(NEW_LOCI);
273
+ parser.onDeltaAction = sandbox.stub();
274
+ parser.workingCopy = laterLoci;
275
+
276
+ parser.processDeltaEvent();
277
+
278
+ assert.equal(parser.workingCopy, laterLoci);
279
+ });
239
280
  });
240
281
 
241
282
  describe('Full Locus handling', () => {
@@ -16,16 +16,32 @@ describe('createMediaConnection', () => {
16
16
  id: 'any fake track'
17
17
  }
18
18
  const fakeAudioStream = {
19
- outputTrack: fakeTrack,
19
+ outputStream: {
20
+ getTracks: () => {
21
+ return [fakeTrack];
22
+ }
23
+ }
20
24
  };
21
25
  const fakeVideoStream = {
22
- outputTrack: fakeTrack,
26
+ outputStream: {
27
+ getTracks: () => {
28
+ return [fakeTrack];
29
+ }
30
+ }
23
31
  };
24
32
  const fakeShareVideoStream = {
25
- outputTrack: fakeTrack,
33
+ outputStream: {
34
+ getTracks: () => {
35
+ return [fakeTrack];
36
+ }
37
+ }
26
38
  };
27
39
  const fakeShareAudioStream = {
28
- outputTrack: fakeTrack,
40
+ outputStream: {
41
+ getTracks: () => {
42
+ return [fakeTrack];
43
+ }
44
+ }
29
45
  };
30
46
  afterEach(() => {
31
47
  sinon.restore();
@@ -4,7 +4,7 @@ import {ConnectionState, Event} from '@webex/internal-media-core';
4
4
  import MediaProperties from '@webex/plugin-meetings/src/media/properties';
5
5
  import MediaUtil from '@webex/plugin-meetings/src/media/util';
6
6
  import testUtils from '../../../utils/testUtils';
7
- import {PC_BAIL_TIMEOUT} from '@webex/plugin-meetings/src/constants';
7
+ import {ICE_AND_DTLS_CONNECTION_TIMEOUT} from '@webex/plugin-meetings/src/constants';
8
8
  import {Defer} from '@webex/common';
9
9
 
10
10
  describe('MediaProperties', () => {
@@ -52,7 +52,7 @@ describe('MediaProperties', () => {
52
52
  assert.equal(promiseResolved, false);
53
53
  assert.equal(promiseRejected, false);
54
54
 
55
- await clock.tickAsync(PC_BAIL_TIMEOUT);
55
+ await clock.tickAsync(ICE_AND_DTLS_CONNECTION_TIMEOUT);
56
56
  await testUtils.flushPromises();
57
57
 
58
58
  assert.equal(promiseResolved, false);
@@ -67,12 +67,14 @@ describe('plugin-meetings', () => {
67
67
  canShareDesktop: null,
68
68
  canShareContent: null,
69
69
  canTransferFile: null,
70
+ canChat: null,
70
71
  canDoVideo: null,
71
72
  canAnnotate: null,
72
73
  canUseVoip: null,
73
74
  supportHQV: null,
74
75
  supportHDV: null,
75
76
  canShareWhiteBoard: null,
77
+ enforceVirtualBackground: null,
76
78
  ...expected,
77
79
  };
78
80
 
@@ -145,12 +147,14 @@ describe('plugin-meetings', () => {
145
147
  'canShareDesktop',
146
148
  'canShareContent',
147
149
  'canTransferFile',
150
+ 'canChat',
148
151
  'canDoVideo',
149
152
  'canAnnotate',
150
153
  'canUseVoip',
151
154
  'supportHQV',
152
155
  'supportHDV',
153
156
  'canShareWhiteBoard',
157
+ 'enforceVirtualBackground',
154
158
  ].forEach((key) => {
155
159
  it(`get and set for ${key} work as expected`, () => {
156
160
  const inMeetingActions = new InMeetingActions();