@webex/plugin-meetings 2.59.8 → 2.60.0-next.2

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 (528) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +41 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +357 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +215 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +22 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +51 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +44 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1047 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +77 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +64 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  22. package/dist/common/browser-detection.js +2 -3
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +3 -4
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.js +50 -0
  37. package/dist/common/errors/no-meeting-info.js.map +1 -0
  38. package/dist/common/errors/parameter.js +3 -4
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +1 -2
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +1 -2
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  45. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  46. package/dist/common/errors/reconnection-in-progress.js +1 -2
  47. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  48. package/dist/common/errors/reconnection.js +1 -2
  49. package/dist/common/errors/reconnection.js.map +1 -1
  50. package/dist/common/errors/stats.js +1 -2
  51. package/dist/common/errors/stats.js.map +1 -1
  52. package/dist/common/errors/webex-errors.js +48 -28
  53. package/dist/common/errors/webex-errors.js.map +1 -1
  54. package/dist/common/errors/webex-meetings-error.js +1 -2
  55. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  56. package/dist/common/events/events-scope.js +1 -2
  57. package/dist/common/events/events-scope.js.map +1 -1
  58. package/dist/common/events/events.js +1 -2
  59. package/dist/common/events/events.js.map +1 -1
  60. package/dist/common/events/trigger-proxy.js +1 -2
  61. package/dist/common/events/trigger-proxy.js.map +1 -1
  62. package/dist/common/events/util.js +1 -2
  63. package/dist/common/events/util.js.map +1 -1
  64. package/dist/common/logs/logger-config.js +1 -2
  65. package/dist/common/logs/logger-config.js.map +1 -1
  66. package/dist/common/logs/logger-proxy.js +2 -3
  67. package/dist/common/logs/logger-proxy.js.map +1 -1
  68. package/dist/common/logs/request.js +8 -5
  69. package/dist/common/logs/request.js.map +1 -1
  70. package/dist/common/queue.js +22 -9
  71. package/dist/common/queue.js.map +1 -1
  72. package/dist/config.js +8 -11
  73. package/dist/config.js.map +1 -1
  74. package/dist/constants.js +437 -435
  75. package/dist/constants.js.map +1 -1
  76. package/dist/controls-options-manager/constants.js +3 -6
  77. package/dist/controls-options-manager/constants.js.map +1 -1
  78. package/dist/controls-options-manager/enums.js +15 -6
  79. package/dist/controls-options-manager/enums.js.map +1 -1
  80. package/dist/controls-options-manager/index.js +127 -38
  81. package/dist/controls-options-manager/index.js.map +1 -1
  82. package/dist/controls-options-manager/types.js +7 -0
  83. package/dist/controls-options-manager/types.js.map +1 -0
  84. package/dist/controls-options-manager/util.js +309 -19
  85. package/dist/controls-options-manager/util.js.map +1 -1
  86. package/dist/index.js +116 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/interpretation/collection.js +22 -0
  89. package/dist/interpretation/collection.js.map +1 -0
  90. package/dist/interpretation/index.js +365 -0
  91. package/dist/interpretation/index.js.map +1 -0
  92. package/dist/interpretation/siLanguage.js +24 -0
  93. package/dist/interpretation/siLanguage.js.map +1 -0
  94. package/dist/locus-info/controlsUtils.js +100 -11
  95. package/dist/locus-info/controlsUtils.js.map +1 -1
  96. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  97. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  98. package/dist/locus-info/fullState.js +1 -2
  99. package/dist/locus-info/fullState.js.map +1 -1
  100. package/dist/locus-info/hostUtils.js +1 -2
  101. package/dist/locus-info/hostUtils.js.map +1 -1
  102. package/dist/locus-info/index.js +425 -84
  103. package/dist/locus-info/index.js.map +1 -1
  104. package/dist/locus-info/infoUtils.js +13 -5
  105. package/dist/locus-info/infoUtils.js.map +1 -1
  106. package/dist/locus-info/mediaSharesUtils.js +58 -3
  107. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  108. package/dist/locus-info/parser.js +253 -80
  109. package/dist/locus-info/parser.js.map +1 -1
  110. package/dist/locus-info/selfUtils.js +97 -13
  111. package/dist/locus-info/selfUtils.js.map +1 -1
  112. package/dist/media/index.js +106 -319
  113. package/dist/media/index.js.map +1 -1
  114. package/dist/media/properties.js +96 -153
  115. package/dist/media/properties.js.map +1 -1
  116. package/dist/media/util.js +1 -22
  117. package/dist/media/util.js.map +1 -1
  118. package/dist/mediaQualityMetrics/config.js +498 -493
  119. package/dist/mediaQualityMetrics/config.js.map +1 -1
  120. package/dist/meeting/in-meeting-actions.js +92 -3
  121. package/dist/meeting/in-meeting-actions.js.map +1 -1
  122. package/dist/meeting/index.js +4628 -2971
  123. package/dist/meeting/index.js.map +1 -1
  124. package/dist/meeting/locusMediaRequest.js +291 -0
  125. package/dist/meeting/locusMediaRequest.js.map +1 -0
  126. package/dist/meeting/muteState.js +224 -133
  127. package/dist/meeting/muteState.js.map +1 -1
  128. package/dist/meeting/request.js +297 -199
  129. package/dist/meeting/request.js.map +1 -1
  130. package/dist/meeting/request.type.js +7 -0
  131. package/dist/meeting/request.type.js.map +1 -0
  132. package/dist/meeting/state.js +1 -2
  133. package/dist/meeting/state.js.map +1 -1
  134. package/dist/meeting/util.js +605 -435
  135. package/dist/meeting/util.js.map +1 -1
  136. package/dist/meeting-info/collection.js +3 -4
  137. package/dist/meeting-info/collection.js.map +1 -1
  138. package/dist/meeting-info/index.js +74 -7
  139. package/dist/meeting-info/index.js.map +1 -1
  140. package/dist/meeting-info/meeting-info-v2.js +200 -63
  141. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  142. package/dist/meeting-info/request.js +1 -2
  143. package/dist/meeting-info/request.js.map +1 -1
  144. package/dist/meeting-info/util.js +2 -3
  145. package/dist/meeting-info/util.js.map +1 -1
  146. package/dist/meeting-info/utilv2.js +39 -41
  147. package/dist/meeting-info/utilv2.js.map +1 -1
  148. package/dist/meetings/collection.js +42 -4
  149. package/dist/meetings/collection.js.map +1 -1
  150. package/dist/meetings/index.js +477 -123
  151. package/dist/meetings/index.js.map +1 -1
  152. package/dist/meetings/meetings.types.js +7 -0
  153. package/dist/meetings/meetings.types.js.map +1 -0
  154. package/dist/meetings/request.js +4 -3
  155. package/dist/meetings/request.js.map +1 -1
  156. package/dist/meetings/util.js +107 -6
  157. package/dist/meetings/util.js.map +1 -1
  158. package/dist/member/index.js +54 -2
  159. package/dist/member/index.js.map +1 -1
  160. package/dist/member/member.types.js +3 -4
  161. package/dist/member/member.types.js.map +1 -1
  162. package/dist/member/types.js +23 -0
  163. package/dist/member/types.js.map +1 -0
  164. package/dist/member/util.js +131 -29
  165. package/dist/member/util.js.map +1 -1
  166. package/dist/members/collection.js +11 -2
  167. package/dist/members/collection.js.map +1 -1
  168. package/dist/members/index.js +174 -10
  169. package/dist/members/index.js.map +1 -1
  170. package/dist/members/request.js +108 -41
  171. package/dist/members/request.js.map +1 -1
  172. package/dist/members/types.js +14 -0
  173. package/dist/members/types.js.map +1 -0
  174. package/dist/members/util.js +327 -234
  175. package/dist/members/util.js.map +1 -1
  176. package/dist/metrics/constants.js +15 -9
  177. package/dist/metrics/constants.js.map +1 -1
  178. package/dist/metrics/index.js +4 -452
  179. package/dist/metrics/index.js.map +1 -1
  180. package/dist/multistream/mediaRequestManager.js +344 -0
  181. package/dist/multistream/mediaRequestManager.js.map +1 -0
  182. package/dist/multistream/receiveSlot.js +200 -0
  183. package/dist/multistream/receiveSlot.js.map +1 -0
  184. package/dist/multistream/receiveSlotManager.js +174 -0
  185. package/dist/multistream/receiveSlotManager.js.map +1 -0
  186. package/dist/multistream/remoteMedia.js +268 -0
  187. package/dist/multistream/remoteMedia.js.map +1 -0
  188. package/dist/multistream/remoteMediaGroup.js +267 -0
  189. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  190. package/dist/multistream/remoteMediaManager.js +1211 -0
  191. package/dist/multistream/remoteMediaManager.js.map +1 -0
  192. package/dist/multistream/sendSlotManager.js +236 -0
  193. package/dist/multistream/sendSlotManager.js.map +1 -0
  194. package/dist/networkQualityMonitor/index.js +5 -4
  195. package/dist/networkQualityMonitor/index.js.map +1 -1
  196. package/dist/personal-meeting-room/index.js +2 -3
  197. package/dist/personal-meeting-room/index.js.map +1 -1
  198. package/dist/personal-meeting-room/request.js +2 -3
  199. package/dist/personal-meeting-room/request.js.map +1 -1
  200. package/dist/personal-meeting-room/util.js +1 -2
  201. package/dist/personal-meeting-room/util.js.map +1 -1
  202. package/dist/reachability/index.js +265 -72
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +18 -10
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reactions/constants.js +12 -0
  207. package/dist/reactions/constants.js.map +1 -0
  208. package/dist/reactions/reactions.js +4 -6
  209. package/dist/reactions/reactions.js.map +1 -1
  210. package/dist/reactions/reactions.type.js +21 -23
  211. package/dist/reactions/reactions.type.js.map +1 -1
  212. package/dist/reconnection-manager/index.js +281 -229
  213. package/dist/reconnection-manager/index.js.map +1 -1
  214. package/dist/recording-controller/enums.js +4 -5
  215. package/dist/recording-controller/enums.js.map +1 -1
  216. package/dist/recording-controller/index.js +57 -46
  217. package/dist/recording-controller/index.js.map +1 -1
  218. package/dist/recording-controller/util.js +10 -10
  219. package/dist/recording-controller/util.js.map +1 -1
  220. package/dist/roap/index.js +101 -235
  221. package/dist/roap/index.js.map +1 -1
  222. package/dist/roap/request.js +126 -180
  223. package/dist/roap/request.js.map +1 -1
  224. package/dist/roap/turnDiscovery.js +115 -105
  225. package/dist/roap/turnDiscovery.js.map +1 -1
  226. package/dist/rtcMetrics/constants.js +11 -0
  227. package/dist/rtcMetrics/constants.js.map +1 -0
  228. package/dist/rtcMetrics/index.js +140 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +2 -85
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +402 -424
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +117 -83
  235. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  236. package/dist/transcription/index.js +1 -2
  237. package/dist/transcription/index.js.map +1 -1
  238. package/dist/webinar/collection.js +43 -0
  239. package/dist/webinar/collection.js.map +1 -0
  240. package/dist/webinar/index.js +68 -0
  241. package/dist/webinar/index.js.map +1 -0
  242. package/package.json +34 -25
  243. package/src/annotation/annotation.types.ts +50 -0
  244. package/src/annotation/constants.ts +36 -0
  245. package/src/annotation/index.ts +328 -0
  246. package/src/breakouts/README.md +220 -0
  247. package/src/breakouts/breakout.ts +188 -0
  248. package/src/breakouts/collection.ts +19 -0
  249. package/src/breakouts/edit-lock-error.ts +25 -0
  250. package/src/breakouts/events.ts +56 -0
  251. package/src/breakouts/index.ts +925 -0
  252. package/src/breakouts/request.ts +55 -0
  253. package/src/breakouts/utils.ts +57 -0
  254. package/src/common/errors/no-meeting-info.ts +24 -0
  255. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  256. package/src/common/errors/webex-errors.ts +36 -12
  257. package/src/common/logs/logger-proxy.ts +1 -1
  258. package/src/common/logs/request.ts +5 -1
  259. package/src/common/queue.ts +22 -8
  260. package/src/config.ts +5 -7
  261. package/src/constants.ts +271 -93
  262. package/src/controls-options-manager/enums.ts +12 -0
  263. package/src/controls-options-manager/index.ts +116 -21
  264. package/src/controls-options-manager/types.ts +59 -0
  265. package/src/controls-options-manager/util.ts +294 -14
  266. package/src/index.ts +40 -0
  267. package/src/interpretation/README.md +60 -0
  268. package/src/interpretation/collection.ts +19 -0
  269. package/src/interpretation/index.ts +332 -0
  270. package/src/interpretation/siLanguage.ts +18 -0
  271. package/src/locus-info/controlsUtils.ts +110 -0
  272. package/src/locus-info/index.ts +449 -61
  273. package/src/locus-info/infoUtils.ts +14 -2
  274. package/src/locus-info/mediaSharesUtils.ts +64 -0
  275. package/src/locus-info/parser.ts +258 -47
  276. package/src/locus-info/selfUtils.ts +85 -2
  277. package/src/media/index.ts +153 -370
  278. package/src/media/properties.ts +106 -136
  279. package/src/media/util.ts +0 -21
  280. package/src/mediaQualityMetrics/config.ts +379 -377
  281. package/src/meeting/in-meeting-actions.ts +172 -0
  282. package/src/meeting/index.ts +3861 -2504
  283. package/src/meeting/locusMediaRequest.ts +313 -0
  284. package/src/meeting/muteState.ts +224 -138
  285. package/src/meeting/request.ts +207 -127
  286. package/src/meeting/request.type.ts +13 -0
  287. package/src/meeting/util.ts +590 -423
  288. package/src/meeting-info/index.ts +81 -8
  289. package/src/meeting-info/meeting-info-v2.ts +163 -13
  290. package/src/meeting-info/util.ts +1 -1
  291. package/src/meeting-info/utilv2.ts +28 -28
  292. package/src/meetings/collection.ts +33 -0
  293. package/src/meetings/index.ts +477 -124
  294. package/src/meetings/meetings.types.ts +12 -0
  295. package/src/meetings/request.ts +2 -0
  296. package/src/meetings/util.ts +116 -5
  297. package/src/member/index.ts +52 -1
  298. package/src/member/types.ts +38 -0
  299. package/src/member/util.ts +139 -28
  300. package/src/members/collection.ts +8 -0
  301. package/src/members/index.ts +196 -7
  302. package/src/members/request.ts +97 -17
  303. package/src/members/types.ts +29 -0
  304. package/src/members/util.ts +333 -240
  305. package/src/metrics/constants.ts +13 -6
  306. package/src/metrics/index.ts +1 -471
  307. package/src/multistream/mediaRequestManager.ts +440 -0
  308. package/src/multistream/receiveSlot.ts +184 -0
  309. package/src/multistream/receiveSlotManager.ts +166 -0
  310. package/src/multistream/remoteMedia.ts +254 -0
  311. package/src/multistream/remoteMediaGroup.ts +284 -0
  312. package/src/multistream/remoteMediaManager.ts +1145 -0
  313. package/src/multistream/sendSlotManager.ts +170 -0
  314. package/src/networkQualityMonitor/index.ts +6 -6
  315. package/src/reachability/index.ts +238 -45
  316. package/src/reachability/request.ts +17 -8
  317. package/src/reactions/constants.ts +4 -0
  318. package/src/reactions/reactions.ts +4 -4
  319. package/src/reactions/reactions.type.ts +30 -4
  320. package/src/reconnection-manager/index.ts +167 -154
  321. package/src/recording-controller/index.ts +20 -3
  322. package/src/recording-controller/util.ts +26 -9
  323. package/src/roap/index.ts +98 -241
  324. package/src/roap/request.ts +74 -148
  325. package/src/roap/turnDiscovery.ts +62 -56
  326. package/src/rtcMetrics/constants.ts +3 -0
  327. package/src/rtcMetrics/index.ts +124 -0
  328. package/src/statsAnalyzer/global.ts +1 -84
  329. package/src/statsAnalyzer/index.ts +470 -522
  330. package/src/statsAnalyzer/mqaUtil.ts +117 -112
  331. package/src/webinar/collection.ts +31 -0
  332. package/src/webinar/index.ts +62 -0
  333. package/test/integration/spec/converged-space-meetings.js +233 -0
  334. package/test/integration/spec/journey.js +320 -264
  335. package/test/integration/spec/space-meeting.js +77 -4
  336. package/test/unit/spec/annotation/index.ts +418 -0
  337. package/test/unit/spec/breakouts/breakout.ts +237 -0
  338. package/test/unit/spec/breakouts/collection.ts +15 -0
  339. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  340. package/test/unit/spec/breakouts/events.ts +89 -0
  341. package/test/unit/spec/breakouts/index.ts +1790 -0
  342. package/test/unit/spec/breakouts/request.ts +104 -0
  343. package/test/unit/spec/breakouts/utils.js +72 -0
  344. package/test/unit/spec/common/queue.js +31 -2
  345. package/test/unit/spec/controls-options-manager/index.js +163 -0
  346. package/test/unit/spec/controls-options-manager/util.js +576 -60
  347. package/test/unit/spec/fixture/locus.js +1 -0
  348. package/test/unit/spec/interpretation/collection.ts +15 -0
  349. package/test/unit/spec/interpretation/index.ts +589 -0
  350. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  351. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  352. package/test/unit/spec/locus-info/index.js +1390 -16
  353. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  354. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  355. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  356. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  357. package/test/unit/spec/locus-info/parser.js +116 -35
  358. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  359. package/test/unit/spec/media/index.ts +274 -0
  360. package/test/unit/spec/media/properties.ts +75 -84
  361. package/test/unit/spec/meeting/in-meeting-actions.ts +84 -0
  362. package/test/unit/spec/meeting/index.js +8269 -3145
  363. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  364. package/test/unit/spec/meeting/muteState.js +409 -213
  365. package/test/unit/spec/meeting/request.js +512 -42
  366. package/test/unit/spec/meeting/utils.js +741 -24
  367. package/test/unit/spec/meeting-info/index.js +300 -0
  368. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  369. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  370. package/test/unit/spec/meetings/collection.js +26 -0
  371. package/test/unit/spec/meetings/index.js +1201 -210
  372. package/test/unit/spec/meetings/utils.js +202 -2
  373. package/test/unit/spec/member/index.js +38 -8
  374. package/test/unit/spec/member/util.js +499 -29
  375. package/test/unit/spec/members/index.js +597 -3
  376. package/test/unit/spec/members/request.js +206 -27
  377. package/test/unit/spec/members/utils.js +210 -0
  378. package/test/unit/spec/metrics/index.js +1 -50
  379. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  380. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  381. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  382. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  383. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  384. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  385. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  386. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  387. package/test/unit/spec/reachability/index.ts +598 -24
  388. package/test/unit/spec/reachability/request.js +68 -0
  389. package/test/unit/spec/reconnection-manager/index.js +145 -22
  390. package/test/unit/spec/recording-controller/index.js +293 -218
  391. package/test/unit/spec/recording-controller/util.js +223 -96
  392. package/test/unit/spec/roap/index.ts +200 -76
  393. package/test/unit/spec/roap/request.ts +232 -0
  394. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  395. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  396. package/test/unit/spec/stats-analyzer/index.js +188 -174
  397. package/test/unit/spec/webinar/collection.ts +13 -0
  398. package/test/unit/spec/webinar/index.ts +60 -0
  399. package/test/utils/constants.js +9 -0
  400. package/test/utils/integrationTestUtils.js +46 -0
  401. package/test/utils/testUtils.js +0 -45
  402. package/test/utils/webex-config.js +4 -0
  403. package/test/utils/webex-test-users.js +7 -3
  404. package/dist/common/browser-detection.d.ts +0 -9
  405. package/dist/common/collection.d.ts +0 -48
  406. package/dist/common/config.d.ts +0 -2
  407. package/dist/common/errors/captcha-error.d.ts +0 -15
  408. package/dist/common/errors/intent-to-join.d.ts +0 -16
  409. package/dist/common/errors/join-meeting.d.ts +0 -17
  410. package/dist/common/errors/media.d.ts +0 -15
  411. package/dist/common/errors/parameter.d.ts +0 -15
  412. package/dist/common/errors/password-error.d.ts +0 -15
  413. package/dist/common/errors/permission.d.ts +0 -14
  414. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  415. package/dist/common/errors/reconnection.d.ts +0 -15
  416. package/dist/common/errors/stats.d.ts +0 -15
  417. package/dist/common/errors/webex-errors.d.ts +0 -81
  418. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  419. package/dist/common/events/events-scope.d.ts +0 -17
  420. package/dist/common/events/events.d.ts +0 -12
  421. package/dist/common/events/trigger-proxy.d.ts +0 -2
  422. package/dist/common/events/util.d.ts +0 -2
  423. package/dist/common/logs/logger-config.d.ts +0 -2
  424. package/dist/common/logs/logger-proxy.d.ts +0 -2
  425. package/dist/common/logs/request.d.ts +0 -34
  426. package/dist/common/queue.d.ts +0 -32
  427. package/dist/config.d.ts +0 -73
  428. package/dist/constants.d.ts +0 -926
  429. package/dist/controls-options-manager/constants.d.ts +0 -4
  430. package/dist/controls-options-manager/enums.d.ts +0 -5
  431. package/dist/controls-options-manager/index.d.ts +0 -120
  432. package/dist/controls-options-manager/util.d.ts +0 -7
  433. package/dist/index.d.ts +0 -4
  434. package/dist/locus-info/controlsUtils.d.ts +0 -2
  435. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  436. package/dist/locus-info/fullState.d.ts +0 -2
  437. package/dist/locus-info/hostUtils.d.ts +0 -2
  438. package/dist/locus-info/index.d.ts +0 -269
  439. package/dist/locus-info/infoUtils.d.ts +0 -2
  440. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  441. package/dist/locus-info/parser.d.ts +0 -212
  442. package/dist/locus-info/selfUtils.d.ts +0 -2
  443. package/dist/media/index.d.ts +0 -32
  444. package/dist/media/properties.d.ts +0 -108
  445. package/dist/media/util.d.ts +0 -2
  446. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  447. package/dist/meeting/effectsState.d.ts +0 -42
  448. package/dist/meeting/effectsState.js +0 -260
  449. package/dist/meeting/effectsState.js.map +0 -1
  450. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  451. package/dist/meeting/index.d.ts +0 -1622
  452. package/dist/meeting/muteState.d.ts +0 -116
  453. package/dist/meeting/request.d.ts +0 -255
  454. package/dist/meeting/state.d.ts +0 -9
  455. package/dist/meeting/util.d.ts +0 -2
  456. package/dist/meeting-info/collection.d.ts +0 -20
  457. package/dist/meeting-info/index.d.ts +0 -57
  458. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  459. package/dist/meeting-info/request.d.ts +0 -22
  460. package/dist/meeting-info/util.d.ts +0 -2
  461. package/dist/meeting-info/utilv2.d.ts +0 -2
  462. package/dist/meetings/collection.d.ts +0 -23
  463. package/dist/meetings/index.d.ts +0 -296
  464. package/dist/meetings/request.d.ts +0 -27
  465. package/dist/meetings/util.d.ts +0 -18
  466. package/dist/member/index.d.ts +0 -147
  467. package/dist/member/member.types.d.ts +0 -11
  468. package/dist/member/util.d.ts +0 -2
  469. package/dist/members/collection.d.ts +0 -24
  470. package/dist/members/index.d.ts +0 -298
  471. package/dist/members/request.d.ts +0 -50
  472. package/dist/members/util.d.ts +0 -2
  473. package/dist/metrics/config.d.ts +0 -169
  474. package/dist/metrics/config.js +0 -289
  475. package/dist/metrics/config.js.map +0 -1
  476. package/dist/metrics/constants.d.ts +0 -59
  477. package/dist/metrics/index.d.ts +0 -152
  478. package/dist/networkQualityMonitor/index.d.ts +0 -70
  479. package/dist/peer-connection-manager/index.d.ts +0 -6
  480. package/dist/peer-connection-manager/index.js +0 -671
  481. package/dist/peer-connection-manager/index.js.map +0 -1
  482. package/dist/peer-connection-manager/util.d.ts +0 -6
  483. package/dist/peer-connection-manager/util.js +0 -110
  484. package/dist/peer-connection-manager/util.js.map +0 -1
  485. package/dist/personal-meeting-room/index.d.ts +0 -47
  486. package/dist/personal-meeting-room/request.d.ts +0 -14
  487. package/dist/personal-meeting-room/util.d.ts +0 -2
  488. package/dist/reachability/index.d.ts +0 -139
  489. package/dist/reachability/request.d.ts +0 -35
  490. package/dist/reactions/reactions.d.ts +0 -4
  491. package/dist/reactions/reactions.type.d.ts +0 -32
  492. package/dist/reconnection-manager/index.d.ts +0 -112
  493. package/dist/recording-controller/enums.d.ts +0 -7
  494. package/dist/recording-controller/index.d.ts +0 -193
  495. package/dist/recording-controller/util.d.ts +0 -13
  496. package/dist/roap/collection.d.ts +0 -10
  497. package/dist/roap/collection.js +0 -63
  498. package/dist/roap/collection.js.map +0 -1
  499. package/dist/roap/handler.d.ts +0 -47
  500. package/dist/roap/handler.js +0 -279
  501. package/dist/roap/handler.js.map +0 -1
  502. package/dist/roap/index.d.ts +0 -116
  503. package/dist/roap/request.d.ts +0 -35
  504. package/dist/roap/state.d.ts +0 -9
  505. package/dist/roap/state.js +0 -127
  506. package/dist/roap/state.js.map +0 -1
  507. package/dist/roap/turnDiscovery.d.ts +0 -81
  508. package/dist/roap/util.d.ts +0 -2
  509. package/dist/roap/util.js +0 -76
  510. package/dist/roap/util.js.map +0 -1
  511. package/dist/statsAnalyzer/global.d.ts +0 -118
  512. package/dist/statsAnalyzer/index.d.ts +0 -193
  513. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  514. package/dist/transcription/index.d.ts +0 -64
  515. package/src/index.js +0 -15
  516. package/src/meeting/effectsState.ts +0 -209
  517. package/src/metrics/config.ts +0 -485
  518. package/src/peer-connection-manager/index.ts +0 -847
  519. package/src/peer-connection-manager/util.ts +0 -119
  520. package/src/roap/collection.ts +0 -62
  521. package/src/roap/handler.ts +0 -294
  522. package/src/roap/state.ts +0 -156
  523. package/src/roap/util.ts +0 -100
  524. package/test/unit/spec/meeting/effectsState.js +0 -281
  525. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  526. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  527. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  528. package/test/unit/spec/roap/util.js +0 -30
@@ -10,11 +10,19 @@ import chaiAsPromised from 'chai-as-promised';
10
10
  import {Credentials} from '@webex/webex-core';
11
11
  import Support from '@webex/internal-plugin-support';
12
12
  import MockWebex from '@webex/test-helper-mock-webex';
13
-
14
- import Meetings from '@webex/plugin-meetings';
15
13
  import ParameterError from '@webex/plugin-meetings/src/common/errors/parameter';
14
+ import Meetings from '@webex/plugin-meetings';
16
15
  import Members from '@webex/plugin-meetings/src/members';
17
16
  import MembersUtil from '@webex/plugin-meetings/src/members/util';
17
+ import * as MembersRequestImport from '@webex/plugin-meetings/src/members/request';
18
+ import Trigger from '@webex/plugin-meetings/src/common/events/trigger-proxy';
19
+ import {EVENT_TRIGGERS} from '@webex/plugin-meetings/src/constants';
20
+ import {
21
+ ReclaimHostEmptyWrongKeyError,
22
+ ReclaimHostIsHostAlreadyError,
23
+ ReclaimHostNotAllowedError,
24
+ ReclaimHostNotSupportedError,
25
+ } from '../../../../src/common/errors/reclaim-host-role-errors';
18
26
 
19
27
  const {assert} = chai;
20
28
 
@@ -80,6 +88,8 @@ describe('plugin-meetings', () => {
80
88
  describe('members', () => {
81
89
  const sandbox = sinon.createSandbox();
82
90
  let createMembers;
91
+ let meeting;
92
+ let membersRequestSpy;
83
93
 
84
94
  beforeEach(() => {
85
95
  webex = new MockWebex({
@@ -105,13 +115,31 @@ describe('plugin-meetings', () => {
105
115
 
106
116
  url1 = `https://example.com/${uuid.v4()}`;
107
117
 
108
- createMembers = (options) => new Members({locusUrl: options.url}, {parent: webex});
118
+ membersRequestSpy = sinon.spy(MembersRequestImport, 'default');
119
+
120
+ meeting = {
121
+ request: sinon.mock().returns(Promise.resolve()),
122
+ locusInfo: {
123
+ sequence: {}
124
+ }
125
+ }
126
+
127
+ createMembers = (options) => new Members({locusUrl: options.url, meeting}, {parent: webex});
109
128
  });
110
129
 
111
130
  afterEach(() => {
131
+ membersRequestSpy.restore();
112
132
  sandbox.restore();
113
133
  });
114
134
 
135
+ describe('constructor', () => {
136
+ it('passes the meeting to the MembersRequest', () => {
137
+ createMembers({});
138
+
139
+ assert.calledOnceWithExactly(membersRequestSpy, {meeting}, {parent: webex});
140
+ });
141
+ });
142
+
115
143
  describe('#addMembers', () => {
116
144
  it('should invoke isInvalidInvitee and generateAddMemberOptions from MembersUtil when addMember is called with valid params', async () => {
117
145
  sandbox.spy(MembersUtil, 'isInvalidInvitee');
@@ -131,6 +159,128 @@ describe('plugin-meetings', () => {
131
159
  });
132
160
  });
133
161
 
162
+ describe('#admitMembers', () => {
163
+ let members;
164
+ beforeEach(() => {
165
+ members = createMembers({url: url1});
166
+ members.membersRequest.admitMember = sinon.stub().returns(Promise.resolve(true));
167
+ });
168
+ it('should return error if param memberIds is not provided', async () => {
169
+ let error;
170
+ await members.admitMembers().catch((e) => {
171
+ error = e;
172
+ });
173
+ assert.deepEqual(error, new ParameterError('No member ids provided to admit.'));
174
+ });
175
+
176
+ it('should call membersRequest.admitMember as expected', async () => {
177
+ await members.admitMembers(['uuid']);
178
+ const arg1 = members.membersRequest.admitMember.getCall(0).args[0];
179
+ assert.equal(arg1.sessionLocusUrls, undefined);
180
+ assert.equal(arg1.locusUrl.includes('https://example.com/'), true);
181
+ assert.deepEqual(arg1.memberIds, ['uuid']);
182
+
183
+ const sessionLocusUrls = {
184
+ authorizingLocusUrl: 'authorizingLocusUrl',
185
+ mainLocusUrl: 'mainLocusUrl',
186
+ };
187
+ await members.admitMembers(['uuid'], sessionLocusUrls);
188
+ const arg2 = members.membersRequest.admitMember.getCall(1).args[0];
189
+ assert.equal(arg2.sessionLocusUrls, sessionLocusUrls);
190
+ assert.equal(arg1.locusUrl.includes('https://example.com/'), true);
191
+ assert.deepEqual(arg1.memberIds, ['uuid']);
192
+ });
193
+ });
194
+
195
+ describe('#muteMember', () => {
196
+ const testMuteMember = async (mute, isAudio) => {
197
+ sandbox.spy(MembersUtil, 'generateMuteMemberOptions');
198
+
199
+ const locusUrl = 'locus-url';
200
+ const members = createMembers({url: locusUrl});
201
+ const {membersRequest} = members;
202
+ sandbox.spy(membersRequest, 'muteMember');
203
+
204
+ const memberId = 'bob';
205
+
206
+ await members.muteMember(memberId, mute, isAudio);
207
+ assert.calledOnce(MembersUtil.generateMuteMemberOptions);
208
+ assert.calledWith(
209
+ MembersUtil.generateMuteMemberOptions,
210
+ memberId,
211
+ mute,
212
+ members.locusUrl,
213
+ isAudio
214
+ );
215
+
216
+ assert.calledOnce(membersRequest.muteMember);
217
+ assert.calledWith(membersRequest.muteMember, {memberId, muted: mute, locusUrl, isAudio});
218
+ };
219
+
220
+ it('invokes expected functions when muteMember is called for mute=true, isAudio=true', async () => {
221
+ testMuteMember(true, true);
222
+ });
223
+
224
+ it('invokes expected functions when muteMember is called for mute=true, isAudio=false', async () => {
225
+ testMuteMember(true, false);
226
+ });
227
+
228
+ it('invokes expected functions when muteMember is called for mute=false, isAudio=true', async () => {
229
+ testMuteMember(false, true);
230
+ });
231
+
232
+ it('invokes expected functions when muteMember is called for mute=false, isAudio=false', async () => {
233
+ testMuteMember(false, false);
234
+ });
235
+ });
236
+
237
+ describe('#clearMembers', () => {
238
+ it('should send clear event if clear members', () => {
239
+ const members = createMembers({url: url1});
240
+ members.membersCollection.setAll(fakeMembersCollection);
241
+ sinon.stub(Trigger, 'trigger');
242
+ members.clearMembers();
243
+ assert.deepEqual(members.membersCollection.members, {});
244
+ assert.calledWith(
245
+ Trigger.trigger,
246
+ members,
247
+ {
248
+ file: 'members',
249
+ function: 'clearMembers',
250
+ },
251
+ EVENT_TRIGGERS.MEMBERS_CLEAR,
252
+ {}
253
+ );
254
+ });
255
+ });
256
+ describe('#locusParticipantsUpdate', () => {
257
+ it('should send member update event with session info', () => {
258
+ const members = createMembers({url: url1});
259
+ const fakePayload = {
260
+ participants: {
261
+ forEach: sinon.stub(),
262
+ },
263
+ isReplace: true,
264
+ };
265
+
266
+ members.locusParticipantsUpdate(fakePayload);
267
+
268
+ assert.calledWith(
269
+ Trigger.trigger,
270
+ members,
271
+ {
272
+ file: 'members',
273
+ function: 'locusParticipantsUpdate',
274
+ },
275
+ EVENT_TRIGGERS.MEMBERS_UPDATE,
276
+ {
277
+ delta: {added: [], updated: []},
278
+ full: {},
279
+ isReplace: true,
280
+ }
281
+ );
282
+ });
283
+ });
134
284
  describe('#sendDialPadKey', () => {
135
285
  it('should throw a rejection when calling sendDialPadKey with no tones', async () => {
136
286
  const members = createMembers({url: url1});
@@ -192,6 +342,204 @@ describe('plugin-meetings', () => {
192
342
  });
193
343
  });
194
344
 
345
+ describe('#assignRoles', () => {
346
+ const fakeRoles = [
347
+ {type: 'PRESENTER', hasRole: true},
348
+ {type: 'MODERATOR', hasRole: false},
349
+ {type: 'COHOST', hasRole: true},
350
+ ];
351
+
352
+ const resolvedValue = "it worked";
353
+
354
+ const genericMessage = 'Generic error from the API';
355
+
356
+ const setup = (locusUrl, errorCode) => {
357
+ const members = createMembers({url: locusUrl});
358
+
359
+ const spies = {
360
+ generateRoleAssignmentMemberOptions: sandbox.spy(
361
+ MembersUtil,
362
+ 'generateRoleAssignmentMemberOptions'
363
+ ),
364
+ };
365
+
366
+ if (errorCode) {
367
+ spies.assignRolesMember = sandbox.stub(members.membersRequest, 'assignRolesMember').rejects({body: {errorCode}, message: genericMessage});
368
+ } else {
369
+ spies.assignRolesMember = sandbox.stub(members.membersRequest, 'assignRolesMember').resolves(resolvedValue);
370
+ }
371
+
372
+ return {members, spies};
373
+ };
374
+
375
+ const checkInvalid = async (resultPromise, expectedMessage, spies) => {
376
+ await assert.isRejected(resultPromise, ParameterError, expectedMessage);
377
+ assert.notCalled(spies.generateRoleAssignmentMemberOptions);
378
+ assert.notCalled(spies.assignRolesMember);
379
+ };
380
+
381
+ const checkError = async (error, expectedMemberId, expectedRoles, expectedLocusUrl, resultPromise, expectedMessage, spies) => {
382
+ await assert.isRejected(resultPromise, error, expectedMessage);
383
+ assert.calledOnceWithExactly(
384
+ spies.generateRoleAssignmentMemberOptions,
385
+ expectedMemberId,
386
+ expectedRoles,
387
+ expectedLocusUrl
388
+ );
389
+ assert.calledOnceWithExactly(spies.assignRolesMember, {
390
+ memberId: expectedMemberId,
391
+ roles: expectedRoles,
392
+ locusUrl: expectedLocusUrl,
393
+ });
394
+ };
395
+
396
+ const checkValid = async (
397
+ resultPromise,
398
+ spies,
399
+ expectedMemberId,
400
+ expectedRoles,
401
+ expectedLocusUrl
402
+ ) => {
403
+ const resolvedValue = await assert.isFulfilled(resultPromise);
404
+ assert.calledOnceWithExactly(
405
+ spies.generateRoleAssignmentMemberOptions,
406
+ expectedMemberId,
407
+ expectedRoles,
408
+ expectedLocusUrl
409
+ );
410
+ assert.calledOnceWithExactly(spies.assignRolesMember, {
411
+ memberId: expectedMemberId,
412
+ roles: expectedRoles,
413
+ locusUrl: expectedLocusUrl,
414
+ });
415
+ assert.strictEqual(resolvedValue, resolvedValue);
416
+ };
417
+
418
+ it('should not make a request if there is no member id', async () => {
419
+ const {members, spies} = setup(url1);
420
+
421
+ const resultPromise = members.assignRoles();
422
+
423
+ await checkInvalid(
424
+ resultPromise,
425
+ 'The member id must be defined to assign the roles to a member.',
426
+ spies,
427
+ );
428
+ });
429
+
430
+ it('should not make a request if there is no locus url', async () => {
431
+ const {members, spies} = setup();
432
+
433
+ const resultPromise = members.assignRoles(uuid.v4());
434
+
435
+ await checkInvalid(
436
+ resultPromise,
437
+ 'The associated locus url for this meetings members object must be defined.',
438
+ spies,
439
+ );
440
+ });
441
+
442
+ it('should not make a request if locus throws ReclaimHostNotSupportedError', async () => {
443
+ const memberId = uuid.v4();
444
+ const {members, spies} = setup(url1, 2400127);
445
+
446
+ const resultPromise = members.assignRoles(memberId, fakeRoles);
447
+
448
+ await checkError(
449
+ ReclaimHostNotSupportedError,
450
+ memberId,
451
+ fakeRoles,
452
+ url1,
453
+ resultPromise,
454
+ 'Non converged meetings, PSTN or SIP users in converged meetings are not supported currently.',
455
+ spies,
456
+ );
457
+ });
458
+
459
+ it('should not make a request if locus throws ReclaimHostNotAllowedError', async () => {
460
+ const memberId = uuid.v4();
461
+ const {members, spies} = setup(url1, 2403135);
462
+
463
+ const resultPromise = members.assignRoles(memberId, fakeRoles);
464
+
465
+ await checkError(
466
+ ReclaimHostNotAllowedError,
467
+ memberId,
468
+ fakeRoles,
469
+ url1,
470
+ resultPromise,
471
+ 'Reclaim Host Role Not Allowed For Other Participants. Participants cannot claim host role in PMR meeting, space instant meeting or escalated instant meeting. However, the original host still can reclaim host role when it manually makes another participant to be the host.',
472
+ spies,
473
+ );
474
+ });
475
+
476
+ it('should not make a request if locus throws ReclaimHostEmptyWrongKeyError', async () => {
477
+ const memberId = uuid.v4();
478
+ const {members, spies} = setup(url1, 2403136);
479
+
480
+ const resultPromise = members.assignRoles(memberId, fakeRoles);
481
+
482
+ await checkError(
483
+ ReclaimHostEmptyWrongKeyError,
484
+ memberId,
485
+ fakeRoles,
486
+ url1,
487
+ resultPromise,
488
+ 'Host Key Not Specified Or Matched. The original host can reclaim the host role without entering the host key. However, any other person who claims the host role must enter the host key to get it.',
489
+ spies,
490
+ );
491
+ });
492
+
493
+ it('should not make a request if locus throws ReclaimHostIsHostAlreadyError', async () => {
494
+ const memberId = uuid.v4();
495
+ const {members, spies} = setup(url1, 2409150);
496
+
497
+ const resultPromise = members.assignRoles(memberId, fakeRoles);
498
+
499
+ await checkError(
500
+ ReclaimHostIsHostAlreadyError,
501
+ memberId,
502
+ fakeRoles,
503
+ url1,
504
+ resultPromise,
505
+ 'Participant Having Host Role Already. Participant who sends request to reclaim host role has already a host role.',
506
+ spies,
507
+ );
508
+ });
509
+
510
+ it('should not make a request if locus throws a different error', async () => {
511
+ const memberId = uuid.v4();
512
+ const {members, spies} = setup(url1, 1234);
513
+
514
+ const resultPromise = members.assignRoles(memberId, fakeRoles);
515
+
516
+ await checkError(
517
+ {body: {errorCode: 1234}, message: genericMessage},
518
+ memberId,
519
+ fakeRoles,
520
+ url1,
521
+ resultPromise,
522
+ genericMessage,
523
+ spies,
524
+ );
525
+ });
526
+
527
+ it('should make the correct request when called with roles', async () => {
528
+ const memberId = uuid.v4();
529
+ const {members, spies} = setup(url1);
530
+
531
+ const resultPromise = members.assignRoles(memberId, fakeRoles);
532
+
533
+ await checkValid(
534
+ resultPromise,
535
+ spies,
536
+ memberId,
537
+ fakeRoles,
538
+ url1,
539
+ );
540
+ });
541
+ });
542
+
195
543
  describe('#raiseOrLowerHand', () => {
196
544
  const setup = (locusUrl) => {
197
545
  const members = createMembers({url: locusUrl});
@@ -360,5 +708,251 @@ describe('plugin-meetings', () => {
360
708
  await checkValid(resultPromise, spies, requestingMemberId, url1);
361
709
  });
362
710
  });
711
+
712
+ describe('#editDisplayName', () => {
713
+ const setup = (locusUrl) => {
714
+ const members = createMembers({url: locusUrl});
715
+
716
+ const spies = {
717
+ generateEditDisplayNameMemberOptions: sandbox.spy(
718
+ MembersUtil,
719
+ 'generateEditDisplayNameMemberOptions'
720
+ ),
721
+ editDisplayNameMember: sandbox.spy(members.membersRequest, 'editDisplayNameMember'),
722
+ };
723
+
724
+ return {members, spies};
725
+ };
726
+
727
+ const checkInvalid = async (resultPromise, expectedMessage, spies) => {
728
+ await assert.isRejected(resultPromise, ParameterError, expectedMessage);
729
+ assert.notCalled(spies.generateEditDisplayNameMemberOptions);
730
+ assert.notCalled(spies.editDisplayNameMember);
731
+ };
732
+
733
+ const checkValid = async (
734
+ resultPromise,
735
+ spies,
736
+ expectedMemberId,
737
+ expectedRequestingParticipantId,
738
+ expectedAlias,
739
+ expectedLocusUrl
740
+ ) => {
741
+ await assert.isFulfilled(resultPromise);
742
+ assert.calledOnceWithExactly(
743
+ spies.generateEditDisplayNameMemberOptions,
744
+ expectedMemberId,
745
+ expectedRequestingParticipantId,
746
+ expectedAlias,
747
+ expectedLocusUrl
748
+ );
749
+ assert.calledOnceWithExactly(spies.editDisplayNameMember, {
750
+ memberId: expectedMemberId,
751
+ requestingParticipantId: expectedRequestingParticipantId,
752
+ alias: expectedAlias,
753
+ locusUrl: expectedLocusUrl,
754
+ });
755
+ assert.strictEqual(resultPromise, spies.editDisplayNameMember.getCall(0).returnValue);
756
+ };
757
+
758
+ it('should not make a request if there is no memberId', async () => {
759
+ const {members, spies} = setup(url1);
760
+
761
+ const resultPromise = members.editDisplayName();
762
+
763
+ await checkInvalid(
764
+ resultPromise,
765
+ 'The member id must be defined to edit display name of the member.',
766
+ spies
767
+ );
768
+ });
769
+
770
+ it('should not make a request if there is no locus url', async () => {
771
+ const {members, spies} = setup();
772
+
773
+ const resultPromise = members.editDisplayName(uuid.v4());
774
+
775
+ await checkInvalid(
776
+ resultPromise,
777
+ 'The associated locus url for this meetings members object must be defined.',
778
+ spies
779
+ );
780
+ });
781
+
782
+ it('should make the correct request when called with respective parameters', async () => {
783
+ const requestingParticipantId = uuid.v4();
784
+ const memberId = uuid.v4();
785
+ const alias = 'aliasName';
786
+ const {members, spies} = setup(url1);
787
+
788
+ const resultPromise = members.editDisplayName(memberId, requestingParticipantId, alias);
789
+
790
+ await checkValid(resultPromise, spies, memberId, requestingParticipantId, alias, url1);
791
+ });
792
+ });
793
+
794
+ describe('findMemberByCsi()', () => {
795
+ let members;
796
+
797
+ // fake collection that contains all combinations of members data structure (with respect to CSIs)
798
+ const fakeCollection = {
799
+ oneWithoutDevices: {
800
+ participant: {},
801
+ },
802
+ oneWithEmptyDevices: {
803
+ participant: {
804
+ devices: [],
805
+ },
806
+ },
807
+ oneWithDevicesWithoutCsis: {
808
+ participant: {
809
+ devices: [
810
+ {
811
+ url: 'https://fakeURL1.com',
812
+ deviceType: 'SIP',
813
+ state: 'JOINED',
814
+ csis: [],
815
+ },
816
+ {
817
+ url: 'dialout:///fakeagain',
818
+ deviceType: 'PROVISIONAL',
819
+ state: 'JOINED',
820
+ },
821
+ ],
822
+ },
823
+ id: 'abc-123-abc-123',
824
+ status: 'IN_MEETING',
825
+ },
826
+ oneWithSomeCsis: {
827
+ participant: {
828
+ devices: [
829
+ {
830
+ url: 'https://fakeURL2.com',
831
+ deviceType: 'SIP',
832
+ state: 'JOINED',
833
+ csis: [1000, 1001, 1002],
834
+ },
835
+ {
836
+ url: 'https://fakeURL3.com',
837
+ deviceType: 'SIP',
838
+ state: 'JOINED',
839
+ csis: [2000, 2001, 2002],
840
+ },
841
+ ],
842
+ },
843
+ },
844
+ };
845
+
846
+ beforeEach(() => {
847
+ members = createMembers({url: url1});
848
+ members.membersCollection.setAll(fakeCollection);
849
+ });
850
+
851
+ it('returns undefined if member not found', () => {
852
+ assert.strictEqual(members.findMemberByCsi(123), undefined);
853
+ });
854
+
855
+ it('returns correct member when CSI matches the first device', () => {
856
+ assert.strictEqual(members.findMemberByCsi(1001), fakeCollection.oneWithSomeCsis);
857
+ });
858
+
859
+ it('returns correct member when CSI matches the second device', () => {
860
+ assert.strictEqual(members.findMemberByCsi(2001), fakeCollection.oneWithSomeCsis);
861
+ });
862
+ });
863
+
864
+ describe('getCsisForMember()', () => {
865
+ let members;
866
+
867
+ // fake collection that contains all combinations of members data structure (with respect to CSIs)
868
+ const fakeCollection = {
869
+ oneWithoutParticipant: {
870
+ id: 'oneWithoutParticipant',
871
+ },
872
+ oneWithoutDevices: {
873
+ id: 'oneWithoutDevices',
874
+ participant: {},
875
+ },
876
+ oneWithEmptyDevices: {
877
+ id: 'oneWithEmptyDevices',
878
+ participant: {
879
+ devices: [],
880
+ },
881
+ },
882
+ oneWithDevicesWithoutCsis: {
883
+ id: 'oneWithDevicesWithoutCsis',
884
+ participant: {
885
+ devices: [
886
+ {
887
+ url: 'https://fakeURL1.com',
888
+ deviceType: 'SIP',
889
+ state: 'JOINED',
890
+ mediaSessions: [],
891
+ },
892
+ {
893
+ url: 'dialout:///fakeagain',
894
+ deviceType: 'PROVISIONAL',
895
+ state: 'JOINED',
896
+ },
897
+ ],
898
+ },
899
+ status: 'IN_MEETING',
900
+ },
901
+ oneWithSomeCsis: {
902
+ id: 'oneWithSomeCsis',
903
+ participant: {
904
+ devices: [
905
+ {
906
+ url: 'https://fakeURL2.com',
907
+ deviceType: 'SIP',
908
+ state: 'JOINED',
909
+ mediaSessions: [
910
+ {mediaType: 'audio', mediaContent: 'main', csi: 1000},
911
+ {mediaType: 'video', mediaContent: 'main', csi: 1001},
912
+ {mediaType: 'video', mediaContent: 'content', csi: 1002},
913
+ ],
914
+ },
915
+ {
916
+ url: 'https://fakeURL3.com',
917
+ deviceType: 'SIP',
918
+ state: 'JOINED',
919
+ mediaSessions: [
920
+ {mediaType: 'audio', mediaContent: 'main', csi: 2000},
921
+ {mediaType: 'video', mediaContent: 'main', csi: 2001},
922
+ {mediaType: 'video', mediaContent: 'content', csi: 2002},
923
+ ],
924
+ },
925
+ ],
926
+ },
927
+ },
928
+ };
929
+
930
+ beforeEach(() => {
931
+ members = createMembers({url: url1});
932
+ members.membersCollection.setAll(fakeCollection);
933
+ });
934
+
935
+ it('returns empty array if member not found', () => {
936
+ assert.deepEqual(members.getCsisForMember('wrong id'), []);
937
+ });
938
+
939
+ it('returns empty array if member does not have CSIs', () => {
940
+ assert.deepEqual(members.getCsisForMember('oneWithoutParticipant'), []);
941
+ assert.deepEqual(members.getCsisForMember('oneWithoutDevices'), []);
942
+ assert.deepEqual(members.getCsisForMember('oneWithEmptyDevices'), []);
943
+ assert.deepEqual(members.getCsisForMember('oneWithDevicesWithoutCsis'), []);
944
+ });
945
+
946
+ it('returns empty array if mediaType and mediaContent do not match', () => {
947
+ assert.deepEqual(members.getCsisForMember('oneWithSomeCsis', 'audio', 'content'), []);
948
+ });
949
+
950
+ it('returns correct CSI values when there is a match', () => {
951
+ assert.deepEqual(
952
+ members.getCsisForMember('oneWithSomeCsis', 'video', 'main'),
953
+ [1001, 2001]
954
+ );
955
+ });
956
+ });
363
957
  });
364
958
  });