@webex/plugin-meetings 2.59.8-next.2 → 2.60.0-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.
Files changed (433) 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 +1 -2
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +1 -2
  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 +9 -12
  73. package/dist/config.js.map +1 -1
  74. package/dist/constants.js +437 -433
  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 +14 -6
  79. package/dist/controls-options-manager/enums.js.map +1 -1
  80. package/dist/controls-options-manager/index.js +126 -37
  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 +95 -6
  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 +408 -67
  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 +251 -78
  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 +90 -3
  121. package/dist/meeting/in-meeting-actions.js.map +1 -1
  122. package/dist/meeting/index.js +4579 -2951
  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 +295 -197
  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 +602 -432
  135. package/dist/meeting/util.js.map +1 -1
  136. package/dist/meeting-info/collection.js +1 -2
  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 +197 -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 +25 -12
  147. package/dist/meeting-info/utilv2.js.map +1 -1
  148. package/dist/meetings/collection.js +23 -2
  149. package/dist/meetings/collection.js.map +1 -1
  150. package/dist/meetings/index.js +464 -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 +172 -8
  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 +14 -7
  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 +258 -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 +272 -220
  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 +115 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +2 -93
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +374 -374
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +100 -66
  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 +27 -18
  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 +7 -9
  261. package/src/constants.ts +263 -89
  262. package/src/controls-options-manager/enums.ts +11 -1
  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 +168 -0
  282. package/src/meeting/index.ts +3801 -2457
  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 +159 -13
  290. package/src/meeting-info/util.ts +1 -1
  291. package/src/meeting-info/utilv2.ts +22 -9
  292. package/src/meetings/collection.ts +20 -0
  293. package/src/meetings/index.ts +466 -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 +12 -4
  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 +124 -107
  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 -240
  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 +100 -0
  328. package/src/statsAnalyzer/global.ts +1 -92
  329. package/src/statsAnalyzer/index.ts +429 -447
  330. package/src/statsAnalyzer/mqaUtil.ts +105 -103
  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 +82 -0
  362. package/test/unit/spec/meeting/index.js +7420 -3125
  363. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  364. package/test/unit/spec/meeting/muteState.js +407 -212
  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 +500 -6
  369. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  370. package/test/unit/spec/meetings/collection.js +14 -0
  371. package/test/unit/spec/meetings/index.js +1012 -209
  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 +528 -27
  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 +130 -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 -77
  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 +73 -0
  396. package/test/unit/spec/stats-analyzer/index.js +205 -50
  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/meeting/effectsState.js +0 -260
  405. package/dist/meeting/effectsState.js.map +0 -1
  406. package/dist/metrics/config.js +0 -289
  407. package/dist/metrics/config.js.map +0 -1
  408. package/dist/peer-connection-manager/index.js +0 -671
  409. package/dist/peer-connection-manager/index.js.map +0 -1
  410. package/dist/peer-connection-manager/util.js +0 -110
  411. package/dist/peer-connection-manager/util.js.map +0 -1
  412. package/dist/roap/collection.js +0 -63
  413. package/dist/roap/collection.js.map +0 -1
  414. package/dist/roap/handler.js +0 -279
  415. package/dist/roap/handler.js.map +0 -1
  416. package/dist/roap/state.js +0 -127
  417. package/dist/roap/state.js.map +0 -1
  418. package/dist/roap/util.js +0 -76
  419. package/dist/roap/util.js.map +0 -1
  420. package/src/index.js +0 -15
  421. package/src/meeting/effectsState.ts +0 -209
  422. package/src/metrics/config.ts +0 -485
  423. package/src/peer-connection-manager/index.ts +0 -847
  424. package/src/peer-connection-manager/util.ts +0 -119
  425. package/src/roap/collection.ts +0 -62
  426. package/src/roap/handler.ts +0 -294
  427. package/src/roap/state.ts +0 -156
  428. package/src/roap/util.ts +0 -100
  429. package/test/unit/spec/meeting/effectsState.js +0 -281
  430. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  431. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  432. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  433. package/test/unit/spec/roap/util.js +0 -30
@@ -3,21 +3,27 @@ import {assert} from '@webex/test-helper-chai';
3
3
  import MockWebex from '@webex/test-helper-mock-webex';
4
4
  import Meetings from '@webex/plugin-meetings';
5
5
  import MeetingRequest from '@webex/plugin-meetings/src/meeting/request';
6
+ import uuid from 'uuid';
7
+ import { merge } from 'lodash';
8
+ import {IP_VERSION} from '@webex/plugin-meetings/src/constants';
9
+ import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
10
+
6
11
 
7
12
  describe('plugin-meetings', () => {
8
13
  let meetingsRequest;
14
+ let locusDeltaRequestSpy;
15
+ let webex;
16
+ const geoHintInfoDefaults = {countryCode: 'US', regionCode: 'WEST-COAST', clientAddress: '127.0.0.1'};
17
+ let anonymizeIpSpy;
9
18
 
10
19
  beforeEach(() => {
11
- const webex = new MockWebex({
20
+ webex = new MockWebex({
12
21
  children: {
13
22
  meetings: Meetings,
14
23
  },
15
24
  });
16
25
 
17
- webex.meetings.clientRegion = {
18
- countryCode: 'US',
19
- regionCode: 'WEST-COAST',
20
- };
26
+ webex.meetings.geoHintInfo = {...geoHintInfoDefaults};
21
27
 
22
28
  webex.internal = {
23
29
  services: {
@@ -26,17 +32,52 @@ describe('plugin-meetings', () => {
26
32
  },
27
33
  };
28
34
 
35
+ webex.boundedStorage.get = sinon
36
+ .mock()
37
+ .returns(Promise.resolve(JSON.stringify({anycastEntryPoint: 'aws-eu-west-1'})));
38
+
39
+ const request = sinon.mock().returns(Promise.resolve({}));
40
+
29
41
  meetingsRequest = new MeetingRequest(
30
- {},
42
+ {
43
+ meeting: {
44
+ request,
45
+ locusInfo: {
46
+ sequence: {},
47
+ },
48
+ },
49
+ },
31
50
  {
32
51
  parent: webex,
33
52
  }
34
53
  );
35
54
 
36
- meetingsRequest.request = sinon.mock().returns(Promise.resolve({}));
55
+ meetingsRequest.request = request;
56
+ locusDeltaRequestSpy = sinon.spy(meetingsRequest, 'locusDeltaRequest');
57
+ anonymizeIpSpy = sinon.spy(CallDiagnosticUtils, 'anonymizeIPAddress');
37
58
  });
38
59
 
60
+ afterEach(() => {
61
+ anonymizeIpSpy.restore();
62
+ });
63
+
64
+ const checkRequest = (expectedParams) => {
65
+ assert.calledOnceWithExactly(locusDeltaRequestSpy, expectedParams);
66
+ assert.calledOnceWithExactly(
67
+ meetingsRequest.request,
68
+ merge(expectedParams, {body: {sequence: {}}})
69
+ );
70
+ };
71
+
39
72
  describe('meeting request library', () => {
73
+ beforeEach(() => {
74
+ sinon.stub(uuid, 'v4').returns('12345');
75
+ });
76
+
77
+ afterEach(() => {
78
+ uuid.v4.restore();
79
+ });
80
+
40
81
  describe('#sendDTMF', () => {
41
82
  it('sends a POST to the sendDtmf locus endpoint', async () => {
42
83
  const locusUrl = 'locusURL';
@@ -48,12 +89,18 @@ describe('plugin-meetings', () => {
48
89
  deviceUrl,
49
90
  tones,
50
91
  });
51
- const requestParams = meetingsRequest.request.getCall(0).args[0];
52
92
 
53
- assert.equal(requestParams.method, 'POST');
54
- assert.equal(requestParams.uri, `${locusUrl}/sendDtmf`);
55
- assert.equal(requestParams.body.dtmf.tones, tones);
56
- assert.equal(requestParams.body.deviceUrl, deviceUrl);
93
+ checkRequest({
94
+ method: 'POST',
95
+ uri: `${locusUrl}/sendDtmf`,
96
+ body: {
97
+ deviceUrl: 'deviceUrl',
98
+ dtmf: {
99
+ correlationId: '12345',
100
+ tones: '1234',
101
+ },
102
+ },
103
+ });
57
104
  });
58
105
  });
59
106
 
@@ -70,14 +117,19 @@ describe('plugin-meetings', () => {
70
117
  main: {width: 640, height: 480},
71
118
  content: {width: 1280, height: 720},
72
119
  });
73
- const requestParams = meetingsRequest.request.getCall(0).args[0];
74
120
 
75
- assert.equal(requestParams.method, 'PUT');
76
- assert.equal(requestParams.uri, `${locusUrl}/controls`);
77
- assert.equal(requestParams.body.layout.type, layoutType);
78
- assert.equal(requestParams.body.layout.deviceUrl, deviceUrl);
79
- assert.deepEqual(requestParams.body.layout.layoutParams, {
80
- renderInfo: {main: {width: 640, height: 480}, content: {width: 1280, height: 720}},
121
+ checkRequest({
122
+ method: 'PUT',
123
+ uri: `${locusUrl}/controls`,
124
+ body: {
125
+ layout: {
126
+ deviceUrl,
127
+ type: layoutType,
128
+ layoutParams: {
129
+ renderInfo: {main: {width: 640, height: 480}, content: {width: 1280, height: 720}},
130
+ },
131
+ },
132
+ },
81
133
  });
82
134
  });
83
135
 
@@ -149,8 +201,41 @@ describe('plugin-meetings', () => {
149
201
  assert.equal(requestParams.body.device.countryCode, 'US');
150
202
  assert.equal(requestParams.body.permissionToken, 'permission-token');
151
203
  assert.equal(requestParams.body.device.regionCode, 'WEST-COAST');
204
+ assert.include(requestParams.body.device.localIp, '127.0.0');
205
+
206
+ assert.calledOnceWithExactly(anonymizeIpSpy, '127.0.0.1');
152
207
  });
153
208
 
209
+ describe('clientAddress geoHintInfo undefined', () => {
210
+ beforeEach(() => {
211
+ webex.meetings.geoHintInfo = {};
212
+ });
213
+
214
+ // reset
215
+ afterEach(() => {
216
+ webex.meetings.geoHintInfo = {...geoHintInfoDefaults};
217
+ });
218
+
219
+ it('doesnt send the clientAddress if not available as localIp', async () => {
220
+ const locusUrl = 'locusURL';
221
+ const deviceUrl = 'deviceUrl';
222
+ const correlationId = 'random-uuid';
223
+ const roapMessage = 'roap-message';
224
+ const permissionToken = 'permission-token';
225
+
226
+ await meetingsRequest.joinMeeting({
227
+ locusUrl,
228
+ deviceUrl,
229
+ correlationId,
230
+ roapMessage,
231
+ permissionToken,
232
+ });
233
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
234
+
235
+ assert.equal(requestParams.body.device.localIp, undefined);
236
+ });
237
+ })
238
+
154
239
  it('sends /call with meetingNumber if inviteeAddress does not exist', async () => {
155
240
  const deviceUrl = 'deviceUrl';
156
241
  const correlationId = 'random-uuid';
@@ -190,6 +275,111 @@ describe('plugin-meetings', () => {
190
275
  assert.equal(requestParams.uri, 'locusUrl/loci/call?alternateRedirect=true');
191
276
  assert.equal(requestParams.body.invitee.address, 'sipUrl');
192
277
  });
278
+
279
+ it('sends uses the locusClusterUrl if available', async () => {
280
+ const deviceUrl = 'deviceUrl';
281
+ const correlationId = 'random-uuid';
282
+ const roapMessage = 'roap-message';
283
+ const inviteeAddress = 'sipUrl';
284
+ const locusClusterUrl = 'locusClusterUrl';
285
+
286
+ await meetingsRequest.joinMeeting({
287
+ deviceUrl,
288
+ correlationId,
289
+ roapMessage,
290
+ locusClusterUrl,
291
+ inviteeAddress,
292
+ });
293
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
294
+
295
+ assert.equal(requestParams.method, 'POST');
296
+ assert.equal(
297
+ requestParams.uri,
298
+ 'https://locusClusterUrl/locus/api/v1/loci/call?alternateRedirect=true'
299
+ );
300
+ });
301
+
302
+ it('adds deviceCapabilities to request when breakouts are supported', async () => {
303
+ await meetingsRequest.joinMeeting({
304
+ breakoutsSupported: true,
305
+ });
306
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
307
+
308
+ assert.deepEqual(requestParams.body.deviceCapabilities, ['BREAKOUTS_SUPPORTED']);
309
+ });
310
+
311
+ it('adds deviceCapabilities to request when live annotation are supported', async () => {
312
+ await meetingsRequest.joinMeeting({
313
+ liveAnnotationSupported: true,
314
+ });
315
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
316
+ assert.deepEqual(requestParams.body.deviceCapabilities, ['ANNOTATION_ON_SHARE_SUPPORTED']);
317
+ });
318
+ it('adds deviceCapabilities to request when breakouts and live annotation are supported', async () => {
319
+ await meetingsRequest.joinMeeting({
320
+ liveAnnotationSupported: true,
321
+ breakoutsSupported: true,
322
+ });
323
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
324
+ assert.deepEqual(requestParams.body.deviceCapabilities, [
325
+ 'BREAKOUTS_SUPPORTED',
326
+ 'ANNOTATION_ON_SHARE_SUPPORTED',
327
+ ]);
328
+ });
329
+ it('does not add deviceCapabilities to request when breakouts and live annotation are not supported', async () => {
330
+ await meetingsRequest.joinMeeting({});
331
+
332
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
333
+
334
+ assert.deepEqual(requestParams.body.deviceCapabilities, undefined);
335
+ });
336
+
337
+ it('adds deviceCapabilities and locale to request when they are provided', async () => {
338
+ await meetingsRequest.joinMeeting({
339
+ locale: 'en_UK',
340
+ deviceCapabilities: ['SERVER_AUDIO_ANNOUNCEMENT_SUPPORTED'],
341
+ });
342
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
343
+
344
+ assert.deepEqual(requestParams.body.deviceCapabilities, [
345
+ 'SERVER_AUDIO_ANNOUNCEMENT_SUPPORTED',
346
+ ]);
347
+ assert.deepEqual(requestParams.body.locale, 'en_UK');
348
+ });
349
+
350
+ it('does not add deviceCapabilities and locale to request when they are not provided', async () => {
351
+ await meetingsRequest.joinMeeting({});
352
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
353
+
354
+ assert.deepEqual(requestParams.body.deviceCapabilities, undefined);
355
+ assert.deepEqual(requestParams.body.locale, undefined);
356
+ });
357
+
358
+ it('includes joinCookie and ipver correctly', async () => {
359
+ const locusUrl = 'locusURL';
360
+ const deviceUrl = 'deviceUrl';
361
+ const correlationId = 'random-uuid';
362
+ const roapMessage = 'roap-message';
363
+ const permissionToken = 'permission-token';
364
+
365
+ await meetingsRequest.joinMeeting({
366
+ locusUrl,
367
+ deviceUrl,
368
+ correlationId,
369
+ roapMessage,
370
+ permissionToken,
371
+ ipVersion: IP_VERSION.ipv4_and_ipv6
372
+ });
373
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
374
+
375
+ assert.equal(requestParams.method, 'POST');
376
+ assert.equal(requestParams.uri, `${locusUrl}/participant?alternateRedirect=true`);
377
+ assert.deepEqual(requestParams.body.clientMediaPreferences, {
378
+ "joinCookie": {anycastEntryPoint: "aws-eu-west-1"},
379
+ "preferTranscoding": true,
380
+ "ipver": 1
381
+ });
382
+ });
193
383
  });
194
384
 
195
385
  describe('#pstn', () => {
@@ -205,14 +395,20 @@ describe('plugin-meetings', () => {
205
395
  correlationId,
206
396
  dialInUrl,
207
397
  });
208
- const requestParams = meetingsRequest.request.getCall(0).args[0];
209
398
 
210
- assert.equal(requestParams.method, 'POST');
211
- assert.equal(requestParams.uri, `${locusUrl}/participant`);
212
- assert.equal(requestParams.body.device.url, dialInUrl);
213
- assert.equal(requestParams.body.device.deviceType, 'PROVISIONAL');
214
- assert.equal(requestParams.body.device.provisionalType, 'DIAL_IN');
215
- assert.equal(requestParams.body.device.clientUrl, 'clientUrl');
399
+ checkRequest({
400
+ method: 'POST',
401
+ uri: `${locusUrl}/participant`,
402
+ body: {
403
+ device: {
404
+ url: dialInUrl,
405
+ deviceType: 'PROVISIONAL',
406
+ provisionalType: 'DIAL_IN',
407
+ clientUrl,
408
+ },
409
+ correlationId,
410
+ },
411
+ });
216
412
  });
217
413
 
218
414
  it('sends dial out pstn request', async () => {
@@ -229,15 +425,21 @@ describe('plugin-meetings', () => {
229
425
  dialOutUrl,
230
426
  phoneNumber,
231
427
  });
232
- const requestParams = meetingsRequest.request.getCall(0).args[0];
233
428
 
234
- assert.equal(requestParams.method, 'POST');
235
- assert.equal(requestParams.uri, `${locusUrl}/participant`);
236
- assert.equal(requestParams.body.device.url, dialOutUrl);
237
- assert.equal(requestParams.body.device.deviceType, 'PROVISIONAL');
238
- assert.equal(requestParams.body.device.provisionalType, 'DIAL_OUT');
239
- assert.equal(requestParams.body.device.clientUrl, 'clientUrl');
240
- assert.equal(requestParams.body.device.dialoutAddress, phoneNumber);
429
+ checkRequest({
430
+ method: 'POST',
431
+ uri: `${locusUrl}/participant`,
432
+ body: {
433
+ device: {
434
+ url: dialOutUrl,
435
+ deviceType: 'PROVISIONAL',
436
+ provisionalType: 'DIAL_OUT',
437
+ clientUrl,
438
+ dialoutAddress: phoneNumber,
439
+ },
440
+ correlationId,
441
+ },
442
+ });
241
443
  });
242
444
 
243
445
  it('sends disconnect phone audio request', async () => {
@@ -252,12 +454,92 @@ describe('plugin-meetings', () => {
252
454
  correlationId,
253
455
  phoneUrl,
254
456
  });
255
- const requestParams = meetingsRequest.request.getCall(0).args[0];
256
457
 
257
- assert.equal(requestParams.method, 'PUT');
258
- assert.equal(requestParams.uri, `${locusUrl}/participant/${selfId}/leave`);
259
- assert.equal(requestParams.body.device.url, phoneUrl);
260
- assert.equal(requestParams.body.device.deviceType, 'PROVISIONAL');
458
+ checkRequest({
459
+ method: 'PUT',
460
+ uri: `${locusUrl}/participant/${selfId}/leave`,
461
+ body: {
462
+ device: {
463
+ url: phoneUrl,
464
+ deviceType: 'PROVISIONAL',
465
+ },
466
+ correlationId,
467
+ },
468
+ });
469
+ });
470
+ });
471
+
472
+ describe('#leaveMeeting', () => {
473
+ it('sends the request to leave the meeting', async () => {
474
+ const locusUrl = 'locusUrl';
475
+ const selfId = 'selfId';
476
+ const correlationId = 'random-uuid';
477
+ const resourceId = 'resourceId';
478
+ const deviceUrl = 'deviceUrl';
479
+
480
+ meetingsRequest.config.meetings.deviceType = 'deviceType';
481
+
482
+ await meetingsRequest.leaveMeeting({
483
+ locusUrl,
484
+ selfId,
485
+ deviceUrl,
486
+ resourceId,
487
+ correlationId,
488
+ });
489
+
490
+ checkRequest({
491
+ method: 'PUT',
492
+ uri: 'locusUrl/participant/selfId/leave',
493
+ body: {
494
+ device: {deviceType: 'deviceType', url: 'deviceUrl'},
495
+ usingResource: 'resourceId',
496
+ correlationId: 'random-uuid',
497
+ },
498
+ });
499
+ });
500
+ });
501
+
502
+ describe('#acknowledgeMeeting', () => {
503
+ it('sends the request to acknowledge the meeting', async () => {
504
+ const locusUrl = 'locusUrl';
505
+ const correlationId = 'random-uuid';
506
+ const deviceUrl = 'deviceUrl';
507
+
508
+ meetingsRequest.config.meetings.deviceType = 'deviceType';
509
+
510
+ await meetingsRequest.acknowledgeMeeting({
511
+ locusUrl,
512
+ deviceUrl,
513
+ correlationId,
514
+ });
515
+
516
+ checkRequest({
517
+ method: 'PUT',
518
+ uri: 'locusUrl/participant/alert',
519
+ body: {
520
+ device: {deviceType: 'deviceType', url: 'deviceUrl'},
521
+ correlationId: 'random-uuid',
522
+ },
523
+ });
524
+ });
525
+ });
526
+
527
+ describe('#lockMeeting', () => {
528
+ it('sends request to lock the meeting', async () => {
529
+ const locusUrl = 'locusURL';
530
+
531
+ await meetingsRequest.lockMeeting({
532
+ locusUrl,
533
+ lock: true,
534
+ });
535
+
536
+ checkRequest({
537
+ method: 'PATCH',
538
+ uri: `${locusUrl}/controls`,
539
+ body: {
540
+ lock: {locked: true},
541
+ },
542
+ });
261
543
  });
262
544
  });
263
545
 
@@ -268,10 +550,11 @@ describe('plugin-meetings', () => {
268
550
  await meetingsRequest.endMeetingForAll({
269
551
  locusUrl,
270
552
  });
271
- const requestParams = meetingsRequest.request.getCall(0).args[0];
272
553
 
273
- assert.equal(requestParams.method, 'POST');
274
- assert.equal(requestParams.uri, `${locusUrl}/end`);
554
+ checkRequest({
555
+ method: 'POST',
556
+ uri: `${locusUrl}/end`,
557
+ });
275
558
  });
276
559
  });
277
560
 
@@ -313,5 +596,192 @@ describe('plugin-meetings', () => {
313
596
  assert.equal(requestParams.body.reaction, reaction);
314
597
  });
315
598
  });
599
+
600
+ describe('#toggleReactions', () => {
601
+ it('sends request to toggleReactions', async () => {
602
+ const locusUrl = 'locusUrl';
603
+ const requestingParticipantId = 'requestingParticipantId';
604
+
605
+ await meetingsRequest.toggleReactions({
606
+ enable: true,
607
+ locusUrl,
608
+ requestingParticipantId,
609
+ });
610
+
611
+ checkRequest({
612
+ method: 'PUT',
613
+ uri: `${locusUrl}/controls`,
614
+ body: {
615
+ reactions: {
616
+ enabled: true,
617
+ },
618
+ requestingParticipantId,
619
+ },
620
+ });
621
+ });
622
+ });
623
+
624
+ describe('#prepareLeaveMeetingRequestOptions', () => {
625
+ it('returns expected result', async () => {
626
+ const result = meetingsRequest.prepareLeaveMeetingRequestOptions({
627
+ locusUrl: 'locusUrl',
628
+ selfId: 'selfId',
629
+ correlationId: 'correlationId',
630
+ resourceId: 'resourceId',
631
+ deviceUrl: 'deviceUrl',
632
+ });
633
+
634
+ assert.deepEqual(result, {
635
+ body: {
636
+ correlationId: 'correlationId',
637
+ device: {
638
+ deviceType: undefined,
639
+ url: 'deviceUrl',
640
+ },
641
+ usingResource: 'resourceId',
642
+ },
643
+ method: 'PUT',
644
+ uri: 'locusUrl/participant/selfId/leave',
645
+ });
646
+ });
647
+ });
648
+
649
+ describe('#buildLeaveMeetingRequestOptions', () => {
650
+ it('calls expected functions and returns expected result', async () => {
651
+ // return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
652
+ const prepareLeaveMeetingRequestOptionsSpy = sinon.spy(
653
+ meetingsRequest,
654
+ 'prepareLeaveMeetingRequestOptions'
655
+ );
656
+ const buildLocusDeltaRequestOptionsSpy = sinon.spy(
657
+ meetingsRequest,
658
+ 'buildLocusDeltaRequestOptions'
659
+ );
660
+
661
+ const inputOpts = {
662
+ locusUrl: 'locusUrl',
663
+ selfId: 'selfId',
664
+ correlationId: 'correlationId',
665
+ resourceId: 'resourceId',
666
+ deviceUrl: 'deviceUrl',
667
+ };
668
+
669
+ const result = meetingsRequest.buildLeaveMeetingRequestOptions(inputOpts);
670
+
671
+ assert.calledOnceWithExactly(prepareLeaveMeetingRequestOptionsSpy, inputOpts);
672
+ assert.calledOnceWithExactly(buildLocusDeltaRequestOptionsSpy, {
673
+ method: 'PUT',
674
+ uri: 'locusUrl/participant/selfId/leave',
675
+ body: {
676
+ device: {deviceType: undefined, url: 'deviceUrl'},
677
+ usingResource: 'resourceId',
678
+ correlationId: 'correlationId',
679
+ },
680
+ });
681
+
682
+ assert.deepEqual(result, {
683
+ body: {
684
+ correlationId: 'correlationId',
685
+ device: {
686
+ deviceType: undefined,
687
+ url: 'deviceUrl',
688
+ },
689
+ sequence: {},
690
+ usingResource: 'resourceId',
691
+ },
692
+ method: 'PUT',
693
+ uri: 'locusUrl/participant/selfId/leave',
694
+ });
695
+ });
696
+ });
697
+ });
698
+
699
+ describe('#declineMeeting', () => {
700
+ it('sends a request to decline the meeting', async () => {
701
+ const reason = 'reason';
702
+ const deviceUrl = 'deviceUrl';
703
+ const locusUrl = 'locusUrl';
704
+ meetingsRequest.config.meetings.deviceType = 'deviceType';
705
+
706
+ await meetingsRequest.declineMeeting({
707
+ locusUrl,
708
+ deviceUrl,
709
+ reason,
710
+ });
711
+
712
+ const expectedBody = {
713
+ device: {
714
+ deviceType: 'deviceType',
715
+ url: deviceUrl,
716
+ },
717
+ reason,
718
+ };
719
+
720
+ checkRequest({
721
+ method: 'PUT',
722
+ uri: `${locusUrl}/participant/decline`,
723
+ body: expectedBody,
724
+ });
725
+ });
726
+ });
727
+
728
+ describe('#getLocusStatusByUrl', () => {
729
+ it('check locus status', async () => {
730
+ const locusUrl = 'locusUrl';
731
+
732
+ await meetingsRequest.getLocusStatusByUrl(locusUrl);
733
+ assert.deepEqual(meetingsRequest.request.getCall(0).args[0], {
734
+ method: 'GET',
735
+ uri: locusUrl,
736
+ });
737
+ });
738
+ });
739
+
740
+ describe('#changeMeetingFloor', () => {
741
+ it('change meeting floor', async () => {
742
+ const options = {
743
+ disposition: 'GRANTED',
744
+ personUrl: 'personUrl',
745
+ deviceUrl: 'deviceUrl',
746
+ resourceId: 'resourceId',
747
+ resourceUrl: 'resourceUrl',
748
+ uri: 'optionsUrl',
749
+ annotationInfo: {
750
+ version: '1',
751
+ policy: 'Approval',
752
+ },
753
+ };
754
+
755
+ const expectBody = {
756
+ annotation: {
757
+ policy: 'Approval',
758
+ version: '1',
759
+ },
760
+ floor: {
761
+ beneficiary: {
762
+ devices: [
763
+ {
764
+ deviceType: undefined,
765
+ url: 'deviceUrl',
766
+ },
767
+ ],
768
+ url: 'personUrl',
769
+ },
770
+ disposition: 'GRANTED',
771
+ requester: {
772
+ url: 'personUrl',
773
+ },
774
+ },
775
+ resourceUrl: 'resourceUrl',
776
+ };
777
+
778
+ await meetingsRequest.changeMeetingFloor(options);
779
+
780
+ assert.deepEqual(meetingsRequest.request.getCall(0).args[0], {
781
+ method: 'PUT',
782
+ uri: 'optionsUrl',
783
+ body: expectBody,
784
+ });
785
+ });
316
786
  });
317
787
  });