@webex/plugin-meetings 2.60.1-next.9 → 2.60.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 (539) hide show
  1. package/README.md +8 -58
  2. package/dist/common/browser-detection.js +3 -2
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js +4 -3
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/config.js +2 -1
  7. package/dist/common/config.js.map +1 -1
  8. package/dist/common/errors/captcha-error.js +2 -1
  9. package/dist/common/errors/captcha-error.js.map +1 -1
  10. package/dist/common/errors/intent-to-join.js +2 -1
  11. package/dist/common/errors/intent-to-join.js.map +1 -1
  12. package/dist/common/errors/join-meeting.js +2 -1
  13. package/dist/common/errors/join-meeting.js.map +1 -1
  14. package/dist/common/errors/media.js +2 -1
  15. package/dist/common/errors/media.js.map +1 -1
  16. package/dist/common/errors/parameter.js +4 -3
  17. package/dist/common/errors/parameter.js.map +1 -1
  18. package/dist/common/errors/password-error.js +2 -1
  19. package/dist/common/errors/password-error.js.map +1 -1
  20. package/dist/common/errors/permission.js +2 -1
  21. package/dist/common/errors/permission.js.map +1 -1
  22. package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
  23. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  24. package/dist/common/errors/reconnection-in-progress.js +2 -1
  25. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  26. package/dist/common/errors/reconnection.js +2 -1
  27. package/dist/common/errors/reconnection.js.map +1 -1
  28. package/dist/common/errors/stats.js +2 -1
  29. package/dist/common/errors/stats.js.map +1 -1
  30. package/dist/common/errors/webex-errors.d.ts +8 -20
  31. package/dist/common/errors/webex-errors.js +28 -48
  32. package/dist/common/errors/webex-errors.js.map +1 -1
  33. package/dist/common/errors/webex-meetings-error.js +2 -1
  34. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  35. package/dist/common/events/events-scope.js +2 -1
  36. package/dist/common/events/events-scope.js.map +1 -1
  37. package/dist/common/events/events.js +2 -1
  38. package/dist/common/events/events.js.map +1 -1
  39. package/dist/common/events/trigger-proxy.js +2 -1
  40. package/dist/common/events/trigger-proxy.js.map +1 -1
  41. package/dist/common/events/util.js +2 -1
  42. package/dist/common/events/util.js.map +1 -1
  43. package/dist/common/logs/logger-config.js +2 -1
  44. package/dist/common/logs/logger-config.js.map +1 -1
  45. package/dist/common/logs/logger-proxy.js +3 -2
  46. package/dist/common/logs/logger-proxy.js.map +1 -1
  47. package/dist/common/logs/request.d.ts +1 -3
  48. package/dist/common/logs/request.js +5 -8
  49. package/dist/common/logs/request.js.map +1 -1
  50. package/dist/common/queue.d.ts +7 -9
  51. package/dist/common/queue.js +9 -22
  52. package/dist/common/queue.js.map +1 -1
  53. package/dist/config.d.ts +7 -6
  54. package/dist/config.js +10 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +100 -234
  57. package/dist/constants.js +444 -433
  58. package/dist/constants.js.map +1 -1
  59. package/dist/controls-options-manager/constants.js +6 -3
  60. package/dist/controls-options-manager/constants.js.map +1 -1
  61. package/dist/controls-options-manager/enums.d.ts +1 -11
  62. package/dist/controls-options-manager/enums.js +6 -15
  63. package/dist/controls-options-manager/enums.js.map +1 -1
  64. package/dist/controls-options-manager/index.d.ts +1 -17
  65. package/dist/controls-options-manager/index.js +38 -127
  66. package/dist/controls-options-manager/index.js.map +1 -1
  67. package/dist/controls-options-manager/util.d.ts +7 -1
  68. package/dist/controls-options-manager/util.js +19 -309
  69. package/dist/controls-options-manager/util.js.map +1 -1
  70. package/dist/index.d.ts +3 -6
  71. package/dist/index.js +5 -121
  72. package/dist/index.js.map +1 -1
  73. package/dist/locus-info/controlsUtils.js +11 -100
  74. package/dist/locus-info/controlsUtils.js.map +1 -1
  75. package/dist/locus-info/embeddedAppsUtils.js +4 -3
  76. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  77. package/dist/locus-info/fullState.js +2 -1
  78. package/dist/locus-info/fullState.js.map +1 -1
  79. package/dist/locus-info/hostUtils.js +2 -1
  80. package/dist/locus-info/hostUtils.js.map +1 -1
  81. package/dist/locus-info/index.d.ts +4 -57
  82. package/dist/locus-info/index.js +84 -425
  83. package/dist/locus-info/index.js.map +1 -1
  84. package/dist/locus-info/infoUtils.js +5 -13
  85. package/dist/locus-info/infoUtils.js.map +1 -1
  86. package/dist/locus-info/mediaSharesUtils.js +3 -58
  87. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  88. package/dist/locus-info/parser.d.ts +6 -66
  89. package/dist/locus-info/parser.js +80 -253
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +13 -97
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.d.ts +0 -2
  94. package/dist/media/index.js +319 -107
  95. package/dist/media/index.js.map +1 -1
  96. package/dist/media/properties.d.ts +53 -38
  97. package/dist/media/properties.js +153 -96
  98. package/dist/media/properties.js.map +1 -1
  99. package/dist/media/util.js +22 -1
  100. package/dist/media/util.js.map +1 -1
  101. package/dist/mediaQualityMetrics/config.d.ts +230 -234
  102. package/dist/mediaQualityMetrics/config.js +498 -302
  103. package/dist/mediaQualityMetrics/config.js.map +1 -1
  104. package/dist/meeting/effectsState.d.ts +42 -0
  105. package/dist/meeting/effectsState.js +260 -0
  106. package/dist/meeting/effectsState.js.map +1 -0
  107. package/dist/meeting/in-meeting-actions.d.ts +0 -88
  108. package/dist/meeting/in-meeting-actions.js +3 -94
  109. package/dist/meeting/in-meeting-actions.js.map +1 -1
  110. package/dist/meeting/index.d.ts +520 -705
  111. package/dist/meeting/index.js +3083 -5041
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.d.ts +25 -93
  114. package/dist/meeting/muteState.js +133 -224
  115. package/dist/meeting/muteState.js.map +1 -1
  116. package/dist/meeting/request.d.ts +47 -82
  117. package/dist/meeting/request.js +199 -304
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/state.js +2 -1
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.d.ts +1 -118
  122. package/dist/meeting/util.js +435 -676
  123. package/dist/meeting/util.js.map +1 -1
  124. package/dist/meeting-info/collection.js +4 -3
  125. package/dist/meeting-info/collection.js.map +1 -1
  126. package/dist/meeting-info/index.d.ts +1 -13
  127. package/dist/meeting-info/index.js +7 -74
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
  130. package/dist/meeting-info/meeting-info-v2.js +63 -200
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +2 -1
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +3 -2
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +41 -39
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.d.ts +0 -17
  139. package/dist/meetings/collection.js +4 -42
  140. package/dist/meetings/collection.js.map +1 -1
  141. package/dist/meetings/index.d.ts +20 -114
  142. package/dist/meetings/index.js +133 -540
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +3 -4
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +6 -107
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.d.ts +1 -13
  149. package/dist/member/index.js +2 -45
  150. package/dist/member/index.js.map +1 -1
  151. package/dist/member/member.types.js +4 -3
  152. package/dist/member/member.types.js.map +1 -1
  153. package/dist/member/util.js +29 -120
  154. package/dist/member/util.js.map +1 -1
  155. package/dist/members/collection.d.ts +0 -5
  156. package/dist/members/collection.js +2 -11
  157. package/dist/members/collection.js.map +1 -1
  158. package/dist/members/index.d.ts +11 -56
  159. package/dist/members/index.js +47 -174
  160. package/dist/members/index.js.map +1 -1
  161. package/dist/members/request.d.ts +11 -67
  162. package/dist/members/request.js +54 -102
  163. package/dist/members/request.js.map +1 -1
  164. package/dist/members/types.js +4 -3
  165. package/dist/members/types.js.map +1 -1
  166. package/dist/members/util.d.ts +1 -214
  167. package/dist/members/util.js +284 -327
  168. package/dist/members/util.js.map +1 -1
  169. package/dist/metrics/config.d.ts +169 -0
  170. package/dist/metrics/config.js +289 -0
  171. package/dist/metrics/config.js.map +1 -0
  172. package/dist/metrics/constants.d.ts +6 -15
  173. package/dist/metrics/constants.js +9 -17
  174. package/dist/metrics/constants.js.map +1 -1
  175. package/dist/metrics/index.d.ts +111 -4
  176. package/dist/metrics/index.js +452 -4
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/networkQualityMonitor/index.js +4 -5
  179. package/dist/networkQualityMonitor/index.js.map +1 -1
  180. package/dist/peer-connection-manager/index.d.ts +6 -0
  181. package/dist/peer-connection-manager/index.js +671 -0
  182. package/dist/peer-connection-manager/index.js.map +1 -0
  183. package/dist/peer-connection-manager/util.d.ts +6 -0
  184. package/dist/peer-connection-manager/util.js +110 -0
  185. package/dist/peer-connection-manager/util.js.map +1 -0
  186. package/dist/personal-meeting-room/index.js +3 -2
  187. package/dist/personal-meeting-room/index.js.map +1 -1
  188. package/dist/personal-meeting-room/request.js +3 -2
  189. package/dist/personal-meeting-room/request.js.map +1 -1
  190. package/dist/personal-meeting-room/util.js +2 -1
  191. package/dist/personal-meeting-room/util.js.map +1 -1
  192. package/dist/reachability/index.d.ts +95 -61
  193. package/dist/reachability/index.js +392 -304
  194. package/dist/reachability/index.js.map +1 -1
  195. package/dist/reachability/request.d.ts +3 -7
  196. package/dist/reachability/request.js +10 -18
  197. package/dist/reachability/request.js.map +1 -1
  198. package/dist/reactions/reactions.d.ts +2 -2
  199. package/dist/reactions/reactions.js +6 -4
  200. package/dist/reactions/reactions.js.map +1 -1
  201. package/dist/reactions/reactions.type.d.ts +3 -23
  202. package/dist/reactions/reactions.type.js +23 -21
  203. package/dist/reactions/reactions.type.js.map +1 -1
  204. package/dist/reconnection-manager/index.d.ts +8 -32
  205. package/dist/reconnection-manager/index.js +232 -285
  206. package/dist/reconnection-manager/index.js.map +1 -1
  207. package/dist/recording-controller/enums.js +5 -4
  208. package/dist/recording-controller/enums.js.map +1 -1
  209. package/dist/recording-controller/index.d.ts +1 -15
  210. package/dist/recording-controller/index.js +46 -57
  211. package/dist/recording-controller/index.js.map +1 -1
  212. package/dist/recording-controller/util.d.ts +4 -5
  213. package/dist/recording-controller/util.js +10 -10
  214. package/dist/recording-controller/util.js.map +1 -1
  215. package/dist/roap/collection.d.ts +10 -0
  216. package/dist/roap/collection.js +63 -0
  217. package/dist/roap/collection.js.map +1 -0
  218. package/dist/roap/handler.d.ts +47 -0
  219. package/dist/roap/handler.js +279 -0
  220. package/dist/roap/handler.js.map +1 -0
  221. package/dist/roap/index.d.ts +47 -9
  222. package/dist/roap/index.js +238 -100
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.d.ts +12 -18
  225. package/dist/roap/request.js +180 -126
  226. package/dist/roap/request.js.map +1 -1
  227. package/dist/roap/state.d.ts +9 -0
  228. package/dist/roap/state.js +127 -0
  229. package/dist/roap/state.js.map +1 -0
  230. package/dist/roap/turnDiscovery.d.ts +16 -27
  231. package/dist/roap/turnDiscovery.js +105 -115
  232. package/dist/roap/turnDiscovery.js.map +1 -1
  233. package/dist/roap/util.d.ts +2 -0
  234. package/dist/roap/util.js +76 -0
  235. package/dist/roap/util.js.map +1 -0
  236. package/dist/statsAnalyzer/global.d.ts +83 -1
  237. package/dist/statsAnalyzer/global.js +85 -2
  238. package/dist/statsAnalyzer/global.js.map +1 -1
  239. package/dist/statsAnalyzer/index.d.ts +30 -50
  240. package/dist/statsAnalyzer/index.js +511 -436
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +90 -130
  244. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  245. package/dist/transcription/index.js +2 -1
  246. package/dist/transcription/index.js.map +1 -1
  247. package/package.json +26 -39
  248. package/src/common/errors/webex-errors.ts +12 -36
  249. package/src/common/logs/logger-proxy.ts +1 -1
  250. package/src/common/logs/request.ts +1 -5
  251. package/src/common/queue.ts +8 -22
  252. package/src/config.ts +7 -6
  253. package/src/constants.ts +100 -265
  254. package/src/controls-options-manager/enums.ts +0 -12
  255. package/src/controls-options-manager/index.ts +21 -116
  256. package/src/controls-options-manager/util.ts +14 -294
  257. package/src/index.js +15 -0
  258. package/src/locus-info/controlsUtils.ts +0 -110
  259. package/src/locus-info/index.ts +61 -450
  260. package/src/locus-info/infoUtils.ts +2 -14
  261. package/src/locus-info/mediaSharesUtils.ts +0 -64
  262. package/src/locus-info/parser.ts +47 -258
  263. package/src/locus-info/selfUtils.ts +2 -85
  264. package/src/media/index.ts +370 -153
  265. package/src/media/properties.ts +136 -106
  266. package/src/media/util.ts +21 -0
  267. package/src/mediaQualityMetrics/config.ts +377 -244
  268. package/src/meeting/effectsState.ts +209 -0
  269. package/src/meeting/in-meeting-actions.ts +0 -176
  270. package/src/meeting/index.ts +2581 -4306
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -214
  273. package/src/meeting/util.ts +423 -687
  274. package/src/meeting-info/index.ts +8 -81
  275. package/src/meeting-info/meeting-info-v2.ts +13 -163
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +28 -28
  278. package/src/meetings/collection.ts +0 -33
  279. package/src/meetings/index.ts +136 -531
  280. package/src/meetings/request.ts +0 -2
  281. package/src/meetings/util.ts +5 -116
  282. package/src/member/index.ts +1 -43
  283. package/src/member/util.ts +28 -125
  284. package/src/members/collection.ts +0 -8
  285. package/src/members/index.ts +52 -187
  286. package/src/members/request.ts +27 -87
  287. package/src/members/util.ts +291 -332
  288. package/src/metrics/config.ts +485 -0
  289. package/src/metrics/constants.ts +6 -15
  290. package/src/metrics/index.ts +471 -1
  291. package/src/networkQualityMonitor/index.ts +6 -6
  292. package/src/peer-connection-manager/index.ts +847 -0
  293. package/src/peer-connection-manager/util.ts +119 -0
  294. package/src/reachability/index.ts +347 -246
  295. package/src/reachability/request.ts +8 -17
  296. package/src/reactions/reactions.ts +4 -4
  297. package/src/reactions/reactions.type.ts +4 -30
  298. package/src/reconnection-manager/index.ts +156 -168
  299. package/src/recording-controller/index.ts +3 -20
  300. package/src/recording-controller/util.ts +9 -26
  301. package/src/roap/collection.ts +62 -0
  302. package/src/roap/handler.ts +294 -0
  303. package/src/roap/index.ts +241 -96
  304. package/src/roap/request.ts +148 -74
  305. package/src/roap/state.ts +156 -0
  306. package/src/roap/turnDiscovery.ts +56 -62
  307. package/src/roap/util.ts +100 -0
  308. package/src/statsAnalyzer/global.ts +84 -1
  309. package/src/statsAnalyzer/index.ts +645 -479
  310. package/src/statsAnalyzer/mqaUtil.ts +126 -128
  311. package/test/integration/spec/journey.js +264 -320
  312. package/test/integration/spec/space-meeting.js +4 -77
  313. package/test/unit/spec/common/queue.js +2 -31
  314. package/test/unit/spec/controls-options-manager/index.js +0 -163
  315. package/test/unit/spec/controls-options-manager/util.js +60 -576
  316. package/test/unit/spec/fixture/locus.js +0 -1
  317. package/test/unit/spec/locus-info/controlsUtils.js +30 -323
  318. package/test/unit/spec/locus-info/index.js +15 -1437
  319. package/test/unit/spec/locus-info/infoUtils.js +16 -54
  320. package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
  321. package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
  322. package/test/unit/spec/locus-info/parser.js +35 -116
  323. package/test/unit/spec/locus-info/selfUtils.js +0 -275
  324. package/test/unit/spec/media/properties.ts +84 -75
  325. package/test/unit/spec/meeting/effectsState.js +281 -0
  326. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
  327. package/test/unit/spec/meeting/index.js +2313 -8384
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +43 -523
  330. package/test/unit/spec/meeting/utils.js +24 -834
  331. package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
  332. package/test/unit/spec/meeting-info/utilv2.js +0 -21
  333. package/test/unit/spec/meetings/collection.js +0 -26
  334. package/test/unit/spec/meetings/index.js +232 -1445
  335. package/test/unit/spec/meetings/utils.js +2 -202
  336. package/test/unit/spec/member/index.js +9 -32
  337. package/test/unit/spec/member/util.js +61 -499
  338. package/test/unit/spec/members/index.js +5 -394
  339. package/test/unit/spec/members/request.js +27 -206
  340. package/test/unit/spec/members/utils.js +38 -173
  341. package/test/unit/spec/metrics/index.js +50 -1
  342. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  343. package/test/unit/spec/peerconnection-manager/index.js +218 -0
  344. package/test/unit/spec/peerconnection-manager/utils.js +49 -0
  345. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
  346. package/test/unit/spec/reachability/index.ts +24 -532
  347. package/test/unit/spec/reconnection-manager/index.js +24 -163
  348. package/test/unit/spec/recording-controller/index.js +218 -293
  349. package/test/unit/spec/recording-controller/util.js +96 -223
  350. package/test/unit/spec/roap/index.ts +77 -187
  351. package/test/unit/spec/roap/turnDiscovery.ts +48 -86
  352. package/test/unit/spec/roap/util.js +30 -0
  353. package/test/unit/spec/stats-analyzer/index.js +165 -644
  354. package/test/utils/testUtils.js +45 -0
  355. package/test/utils/webex-config.js +0 -4
  356. package/test/utils/webex-test-users.js +3 -7
  357. package/dist/annotation/annotation.types.d.ts +0 -42
  358. package/dist/annotation/annotation.types.js +0 -7
  359. package/dist/annotation/annotation.types.js.map +0 -1
  360. package/dist/annotation/constants.d.ts +0 -31
  361. package/dist/annotation/constants.js +0 -41
  362. package/dist/annotation/constants.js.map +0 -1
  363. package/dist/annotation/index.d.ts +0 -117
  364. package/dist/annotation/index.js +0 -357
  365. package/dist/annotation/index.js.map +0 -1
  366. package/dist/breakouts/breakout.d.ts +0 -8
  367. package/dist/breakouts/breakout.js +0 -215
  368. package/dist/breakouts/breakout.js.map +0 -1
  369. package/dist/breakouts/collection.d.ts +0 -5
  370. package/dist/breakouts/collection.js +0 -22
  371. package/dist/breakouts/collection.js.map +0 -1
  372. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  373. package/dist/breakouts/edit-lock-error.js +0 -51
  374. package/dist/breakouts/edit-lock-error.js.map +0 -1
  375. package/dist/breakouts/events.d.ts +0 -8
  376. package/dist/breakouts/events.js +0 -44
  377. package/dist/breakouts/events.js.map +0 -1
  378. package/dist/breakouts/index.d.ts +0 -5
  379. package/dist/breakouts/index.js +0 -1047
  380. package/dist/breakouts/index.js.map +0 -1
  381. package/dist/breakouts/request.d.ts +0 -22
  382. package/dist/breakouts/request.js +0 -77
  383. package/dist/breakouts/request.js.map +0 -1
  384. package/dist/breakouts/utils.d.ts +0 -15
  385. package/dist/breakouts/utils.js +0 -64
  386. package/dist/breakouts/utils.js.map +0 -1
  387. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  388. package/dist/common/errors/no-meeting-info.js +0 -50
  389. package/dist/common/errors/no-meeting-info.js.map +0 -1
  390. package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
  391. package/dist/controls-options-manager/types.d.ts +0 -43
  392. package/dist/controls-options-manager/types.js +0 -7
  393. package/dist/controls-options-manager/types.js.map +0 -1
  394. package/dist/interceptors/index.d.ts +0 -2
  395. package/dist/interceptors/index.js +0 -15
  396. package/dist/interceptors/index.js.map +0 -1
  397. package/dist/interceptors/locusRetry.d.ts +0 -27
  398. package/dist/interceptors/locusRetry.js +0 -94
  399. package/dist/interceptors/locusRetry.js.map +0 -1
  400. package/dist/interpretation/collection.d.ts +0 -5
  401. package/dist/interpretation/collection.js +0 -22
  402. package/dist/interpretation/collection.js.map +0 -1
  403. package/dist/interpretation/index.d.ts +0 -5
  404. package/dist/interpretation/index.js +0 -365
  405. package/dist/interpretation/index.js.map +0 -1
  406. package/dist/interpretation/siLanguage.d.ts +0 -5
  407. package/dist/interpretation/siLanguage.js +0 -24
  408. package/dist/interpretation/siLanguage.js.map +0 -1
  409. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  410. package/dist/meeting/locusMediaRequest.js +0 -291
  411. package/dist/meeting/locusMediaRequest.js.map +0 -1
  412. package/dist/meeting/request.type.d.ts +0 -11
  413. package/dist/meeting/request.type.js +0 -7
  414. package/dist/meeting/request.type.js.map +0 -1
  415. package/dist/meeting/voicea-meeting.d.ts +0 -20
  416. package/dist/meeting/voicea-meeting.js +0 -201
  417. package/dist/meeting/voicea-meeting.js.map +0 -1
  418. package/dist/meetings/meetings.types.d.ts +0 -4
  419. package/dist/meetings/meetings.types.js +0 -7
  420. package/dist/meetings/meetings.types.js.map +0 -1
  421. package/dist/member/types.d.ts +0 -32
  422. package/dist/member/types.js +0 -23
  423. package/dist/member/types.js.map +0 -1
  424. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  425. package/dist/multistream/mediaRequestManager.js +0 -344
  426. package/dist/multistream/mediaRequestManager.js.map +0 -1
  427. package/dist/multistream/receiveSlot.d.ts +0 -68
  428. package/dist/multistream/receiveSlot.js +0 -200
  429. package/dist/multistream/receiveSlot.js.map +0 -1
  430. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  431. package/dist/multistream/receiveSlotManager.js +0 -174
  432. package/dist/multistream/receiveSlotManager.js.map +0 -1
  433. package/dist/multistream/remoteMedia.d.ts +0 -72
  434. package/dist/multistream/remoteMedia.js +0 -268
  435. package/dist/multistream/remoteMedia.js.map +0 -1
  436. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  437. package/dist/multistream/remoteMediaGroup.js +0 -267
  438. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  439. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  440. package/dist/multistream/remoteMediaManager.js +0 -1211
  441. package/dist/multistream/remoteMediaManager.js.map +0 -1
  442. package/dist/multistream/sendSlotManager.d.ts +0 -61
  443. package/dist/multistream/sendSlotManager.js +0 -236
  444. package/dist/multistream/sendSlotManager.js.map +0 -1
  445. package/dist/reachability/clusterReachability.d.ts +0 -109
  446. package/dist/reachability/clusterReachability.js +0 -357
  447. package/dist/reachability/clusterReachability.js.map +0 -1
  448. package/dist/reachability/util.d.ts +0 -8
  449. package/dist/reachability/util.js +0 -29
  450. package/dist/reachability/util.js.map +0 -1
  451. package/dist/reactions/constants.d.ts +0 -3
  452. package/dist/reactions/constants.js +0 -12
  453. package/dist/reactions/constants.js.map +0 -1
  454. package/dist/rtcMetrics/constants.d.ts +0 -4
  455. package/dist/rtcMetrics/constants.js +0 -11
  456. package/dist/rtcMetrics/constants.js.map +0 -1
  457. package/dist/rtcMetrics/index.d.ts +0 -54
  458. package/dist/rtcMetrics/index.js +0 -140
  459. package/dist/rtcMetrics/index.js.map +0 -1
  460. package/dist/webinar/collection.d.ts +0 -16
  461. package/dist/webinar/collection.js +0 -43
  462. package/dist/webinar/collection.js.map +0 -1
  463. package/dist/webinar/index.d.ts +0 -5
  464. package/dist/webinar/index.js +0 -68
  465. package/dist/webinar/index.js.map +0 -1
  466. package/src/annotation/annotation.types.ts +0 -50
  467. package/src/annotation/constants.ts +0 -36
  468. package/src/annotation/index.ts +0 -328
  469. package/src/breakouts/README.md +0 -220
  470. package/src/breakouts/breakout.ts +0 -188
  471. package/src/breakouts/collection.ts +0 -19
  472. package/src/breakouts/edit-lock-error.ts +0 -25
  473. package/src/breakouts/events.ts +0 -56
  474. package/src/breakouts/index.ts +0 -925
  475. package/src/breakouts/request.ts +0 -55
  476. package/src/breakouts/utils.ts +0 -57
  477. package/src/common/errors/no-meeting-info.ts +0 -24
  478. package/src/controls-options-manager/types.ts +0 -59
  479. package/src/index.ts +0 -44
  480. package/src/interceptors/index.ts +0 -3
  481. package/src/interceptors/locusRetry.ts +0 -67
  482. package/src/interpretation/README.md +0 -60
  483. package/src/interpretation/collection.ts +0 -19
  484. package/src/interpretation/index.ts +0 -332
  485. package/src/interpretation/siLanguage.ts +0 -18
  486. package/src/meeting/locusMediaRequest.ts +0 -313
  487. package/src/meeting/request.type.ts +0 -13
  488. package/src/meeting/voicea-meeting.ts +0 -161
  489. package/src/meetings/meetings.types.ts +0 -12
  490. package/src/member/types.ts +0 -38
  491. package/src/multistream/mediaRequestManager.ts +0 -440
  492. package/src/multistream/receiveSlot.ts +0 -184
  493. package/src/multistream/receiveSlotManager.ts +0 -166
  494. package/src/multistream/remoteMedia.ts +0 -254
  495. package/src/multistream/remoteMediaGroup.ts +0 -284
  496. package/src/multistream/remoteMediaManager.ts +0 -1145
  497. package/src/multistream/sendSlotManager.ts +0 -170
  498. package/src/reachability/clusterReachability.ts +0 -320
  499. package/src/reachability/util.ts +0 -24
  500. package/src/reactions/constants.ts +0 -4
  501. package/src/rtcMetrics/constants.ts +0 -3
  502. package/src/rtcMetrics/index.ts +0 -124
  503. package/src/webinar/collection.ts +0 -31
  504. package/src/webinar/index.ts +0 -62
  505. package/test/integration/spec/converged-space-meetings.js +0 -233
  506. package/test/unit/spec/annotation/index.ts +0 -418
  507. package/test/unit/spec/breakouts/breakout.ts +0 -237
  508. package/test/unit/spec/breakouts/collection.ts +0 -15
  509. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  510. package/test/unit/spec/breakouts/events.ts +0 -89
  511. package/test/unit/spec/breakouts/index.ts +0 -1790
  512. package/test/unit/spec/breakouts/request.ts +0 -104
  513. package/test/unit/spec/breakouts/utils.js +0 -72
  514. package/test/unit/spec/interceptors/locusRetry.ts +0 -131
  515. package/test/unit/spec/interpretation/collection.ts +0 -15
  516. package/test/unit/spec/interpretation/index.ts +0 -589
  517. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  518. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  519. package/test/unit/spec/media/index.ts +0 -290
  520. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  521. package/test/unit/spec/meeting-info/index.js +0 -300
  522. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  523. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  524. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  525. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  526. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  527. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  528. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  529. package/test/unit/spec/reachability/clusterReachability.ts +0 -279
  530. package/test/unit/spec/reachability/request.js +0 -68
  531. package/test/unit/spec/reachability/util.ts +0 -40
  532. package/test/unit/spec/roap/request.ts +0 -255
  533. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  534. package/test/unit/spec/webinar/collection.ts +0 -13
  535. package/test/unit/spec/webinar/index.ts +0 -60
  536. package/test/utils/constants.js +0 -9
  537. package/test/utils/integrationTestUtils.js +0 -46
  538. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  539. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -1,229 +1,102 @@
1
1
  import RecordingUtil from '@webex/plugin-meetings/src/recording-controller/util';
2
2
  import RecordingAction from '@webex/plugin-meetings/src/recording-controller/enums';
3
- import {SELF_POLICY} from '@webex/plugin-meetings/src/constants';
4
-
5
- import {assert} from 'chai';
3
+ import { assert } from 'chai';
6
4
 
7
5
  describe('plugin-meetings', () => {
8
- describe('recording-controller tests', () => {
9
- describe('recording util tests', () => {
10
- let locusInfo;
11
-
12
- beforeEach(() => {
13
- locusInfo = {
14
- parsedLocus: {
15
- info: {
16
- userDisplayHints: [],
17
- },
18
- },
19
- };
20
- });
21
-
22
- describe('canUserStart', () => {
23
- it('can start recording when the correct display hint is present', () => {
24
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_START');
25
-
26
- assert.equal(
27
- RecordingUtil.canUserStart(locusInfo.parsedLocus.info.userDisplayHints),
28
- true
29
- );
30
- });
31
-
32
- it('can start recording when the correct display hint is present and the policy is true', () => {
33
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_START');
34
-
35
- assert.equal(
36
- RecordingUtil.canUserStart(locusInfo.parsedLocus.info.userDisplayHints, {
37
- [SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD]: true,
38
- }),
39
- true
40
- );
41
- });
42
-
43
- it('rejects when correct display hint is not present', () => {
44
- assert.equal(
45
- RecordingUtil.canUserStart(locusInfo.parsedLocus.info.userDisplayHints),
46
- false
47
- );
48
- });
49
-
50
- it('rejects when correct display hint is present but policy is false', () => {
51
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_START');
52
-
53
- assert.equal(
54
- RecordingUtil.canUserStart(locusInfo.parsedLocus.info.userDisplayHints, {
55
- [SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD]: false,
56
- }),
57
- false
58
- );
59
- });
60
- });
61
-
62
- describe('canUserPause', () => {
63
- it('can pause recording when the correct display hint is present', () => {
64
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_PAUSE');
65
-
66
- assert.equal(
67
- RecordingUtil.canUserPause(locusInfo.parsedLocus.info.userDisplayHints),
68
- true
69
- );
70
- });
71
-
72
- it('can pause recording when the correct display hint is present and the policy is true', () => {
73
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_PAUSE');
74
-
75
- assert.equal(
76
- RecordingUtil.canUserPause(locusInfo.parsedLocus.info.userDisplayHints, {
77
- [SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD]: true,
78
- }),
79
- true
80
- );
81
- });
82
-
83
- it('rejects when correct display hint is not present', () => {
84
- assert.equal(
85
- RecordingUtil.canUserPause(locusInfo.parsedLocus.info.userDisplayHints),
86
- false
87
- );
88
- });
89
-
90
- it('rejects when correct display hint is present but the policy is false', () => {
91
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_PAUSE');
92
-
93
- assert.equal(
94
- RecordingUtil.canUserPause(locusInfo.parsedLocus.info.userDisplayHints, {
95
- [SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD]: false,
96
- }),
97
- false
98
- );
99
- });
100
- });
101
-
102
- describe('canUserStop', () => {
103
- it('can stop recording when the correct display hint is present', () => {
104
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_STOP');
105
-
106
- assert.equal(
107
- RecordingUtil.canUserStop(locusInfo.parsedLocus.info.userDisplayHints),
108
- true
109
- );
110
- });
111
-
112
- it('can stop recording when the correct display hint is present and the policy is true', () => {
113
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_STOP', {
114
- [SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD]: true,
115
- });
116
-
117
- assert.equal(
118
- RecordingUtil.canUserStop(locusInfo.parsedLocus.info.userDisplayHints),
119
- true
120
- );
121
- });
122
-
123
- it('rejects when correct display hint is not present', () => {
124
- assert.equal(
125
- RecordingUtil.canUserStop(locusInfo.parsedLocus.info.userDisplayHints),
126
- false
127
- );
128
- });
129
-
130
- it('rejects when correct display hint is present but the policy is false', () => {
131
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_STOP', {
132
- [SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD]: true,
133
- });
134
-
135
- assert.equal(
136
- RecordingUtil.canUserStop(locusInfo.parsedLocus.info.userDisplayHints, {
137
- [SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD]: false,
138
- }),
139
- false
140
- );
141
- });
142
- });
143
-
144
- describe('canUserResume', () => {
145
- it('can start recording when the correct display hint is present', () => {
146
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_RESUME');
147
-
148
- assert.equal(
149
- RecordingUtil.canUserResume(locusInfo.parsedLocus.info.userDisplayHints),
150
- true
151
- );
152
- });
153
-
154
- it('can start recording when the correct display hint is present and the policy is true', () => {
155
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_RESUME');
156
-
157
- assert.equal(
158
- RecordingUtil.canUserResume(locusInfo.parsedLocus.info.userDisplayHints, {
159
- [SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD]: true,
160
- }),
161
- true
162
- );
163
- });
164
-
165
- it('rejects when correct display hint is not present', () => {
166
- assert.equal(
167
- RecordingUtil.canUserResume(locusInfo.parsedLocus.info.userDisplayHints),
168
- false
169
- );
170
- });
171
-
172
- it('rejects when correct display hint is present but the policy is false', () => {
173
- locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_RESUME');
174
-
175
- assert.equal(
176
- RecordingUtil.canUserResume(locusInfo.parsedLocus.info.userDisplayHints, {
177
- [SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD]: false,
178
- }),
179
- false
180
- );
181
- });
182
- });
183
-
184
- describe('deriveRecordingStates', () => {
185
- it('gets the correct values for a start recording action', () => {
186
- assert.deepEqual(RecordingUtil.deriveRecordingStates(RecordingAction.Start), {
187
- recording: true,
188
- paused: false,
189
- });
190
- });
191
-
192
- it('gets the correct values for a stop recording action', () => {
193
- assert.deepEqual(RecordingUtil.deriveRecordingStates(RecordingAction.Stop), {
194
- recording: false,
195
- paused: false,
196
- });
197
- });
198
-
199
- it('gets the correct values for a resume recording action', () => {
200
- assert.deepEqual(RecordingUtil.deriveRecordingStates(RecordingAction.Resume), {
201
- recording: true,
202
- paused: false,
203
- });
204
- });
205
-
206
- it('gets the correct values for a paused recording action', () => {
207
- assert.deepEqual(RecordingUtil.deriveRecordingStates(RecordingAction.Pause), {
208
- recording: true,
209
- paused: true,
210
- });
211
- });
212
- });
213
-
214
- describe('extractLocusId', () => {
215
- it('gets the correct id from the url param', () => {
216
- assert.equal(RecordingUtil.extractLocusId('test/id'), 'id');
217
- });
218
-
219
- it('works with empty string parameters passed', () => {
220
- assert.equal(RecordingUtil.extractLocusId(''), '');
221
- });
222
-
223
- it('works with no parameters passed', () => {
224
- assert.isUndefined(RecordingUtil.extractLocusId(undefined));
6
+ describe('recording-controller tests', () => {
7
+ describe('recording util tests', () => {
8
+
9
+ let locusInfo;
10
+
11
+ beforeEach(() => {
12
+ locusInfo = {
13
+ parsedLocus: {
14
+ info: {
15
+ userDisplayHints: [],
16
+ },
17
+ },
18
+ };
19
+ });
20
+
21
+ describe('canUserStart', () => {
22
+ it('can start recording when the correct display hint is present', () => {
23
+ locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_START');
24
+
25
+ assert.equal(RecordingUtil.canUserStart(locusInfo.parsedLocus.info.userDisplayHints), true);
26
+ });
27
+
28
+ it('rejects when correct display hint is not present', () => {
29
+ assert.equal(RecordingUtil.canUserStart(locusInfo.parsedLocus.info.userDisplayHints), false);
30
+ });
31
+ });
32
+
33
+ describe('canUserPause', () => {
34
+ it('can pause recording when the correct display hint is present', () => {
35
+ locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_PAUSE');
36
+
37
+ assert.equal(RecordingUtil.canUserPause(locusInfo.parsedLocus.info.userDisplayHints), true);
38
+ });
39
+
40
+ it('rejects when correct display hint is not present', () => {
41
+ assert.equal(RecordingUtil.canUserPause(locusInfo.parsedLocus.info.userDisplayHints), false);
42
+ });
43
+ });
44
+
45
+ describe('canUserStop', () => {
46
+ it('can stop recording when the correct display hint is present', () => {
47
+ locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_STOP');
48
+
49
+ assert.equal(RecordingUtil.canUserStop(locusInfo.parsedLocus.info.userDisplayHints), true);
50
+ });
51
+
52
+ it('rejects when correct display hint is not present', () => {
53
+ assert.equal(RecordingUtil.canUserStop(locusInfo.parsedLocus.info.userDisplayHints), false);
54
+ });
55
+ });
56
+
57
+ describe('canUserResume', () => {
58
+ it('can start recording when the correct display hint is present', () => {
59
+ locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_RESUME');
60
+
61
+ assert.equal(RecordingUtil.canUserResume(locusInfo.parsedLocus.info.userDisplayHints), true);
62
+ });
63
+
64
+ it('rejects when correct display hint is not present', () => {
65
+ assert.equal(RecordingUtil.canUserResume(locusInfo.parsedLocus.info.userDisplayHints), false);
66
+ });
67
+ });
68
+
69
+ describe('deriveRecordingStates', () => {
70
+ it('gets the correct values for a start recording action', () => {
71
+ assert.deepEqual(RecordingUtil.deriveRecordingStates(RecordingAction.Start), {recording: true, paused: false});
72
+ });
73
+
74
+ it('gets the correct values for a stop recording action', () => {
75
+ assert.deepEqual(RecordingUtil.deriveRecordingStates(RecordingAction.Stop), {recording: false, paused: false});
76
+ });
77
+
78
+ it('gets the correct values for a resume recording action', () => {
79
+ assert.deepEqual(RecordingUtil.deriveRecordingStates(RecordingAction.Resume), {recording: true, paused: false});
80
+ });
81
+
82
+ it('gets the correct values for a paused recording action', () => {
83
+ assert.deepEqual(RecordingUtil.deriveRecordingStates(RecordingAction.Pause), {recording: true, paused: true});
84
+ });
85
+ });
86
+
87
+ describe('extractLocusId', () => {
88
+ it('gets the correct id from the url param', () => {
89
+ assert.equal(RecordingUtil.extractLocusId('test/id'), 'id');
90
+ });
91
+
92
+ it('works with empty string parameters passed', () => {
93
+ assert.equal(RecordingUtil.extractLocusId(''), '');
94
+ });
95
+
96
+ it('works with no parameters passed', () => {
97
+ assert.isUndefined(RecordingUtil.extractLocusId(undefined));
98
+ });
99
+ });
225
100
  });
226
- });
227
101
  });
228
- });
229
- });
102
+ });
@@ -1,55 +1,49 @@
1
1
  import {assert} from '@webex/test-helper-chai';
2
2
  import sinon from 'sinon';
3
3
  import TurnDiscovery from '@webex/plugin-meetings/src/roap/turnDiscovery';
4
- import MockWebex from '@webex/test-helper-mock-webex';
4
+ import {ROAP} from '@webex/plugin-meetings/src/constants';
5
5
 
6
6
  import RoapRequest from '@webex/plugin-meetings/src/roap/request';
7
+ import RoapHandler from '@webex/plugin-meetings/src/roap/handler';
7
8
  import Roap from '@webex/plugin-meetings/src/roap/';
8
9
  import Meeting from '@webex/plugin-meetings/src/meeting';
9
- import MeetingUtil from '@webex/plugin-meetings/src/meeting/util';
10
- import Metrics from '@webex/plugin-meetings/src/metrics';
11
- import BEHAVIORAL_METRICS from '@webex/plugin-meetings/src/metrics/constants';
12
-
13
- import { IP_VERSION } from '../../../../src/constants';
14
10
 
15
11
  describe('Roap', () => {
16
12
  describe('doTurnDiscovery', () => {
17
- [false, true].forEach(function (isReconnecting) {
18
- [false, true, undefined].forEach(function (isForced) {
19
- it(`calls this.turnDiscovery.doTurnDiscovery() and forwards all the arguments when isReconnecting = ${isReconnecting} and isForced = ${isForced}`, async () => {
20
- const webex = new MockWebex({});
13
+ it('calls this.turnDiscovery.doTurnDiscovery() and forwards all the arguments', async () => {
14
+ const RESULT = {something: 'some value'};
15
+ const meeting = {id: 'some meeting id'} as Meeting;
21
16
 
22
- const RESULT = {something: 'some value'};
23
- const meeting = {id: 'some meeting id'} as Meeting;
17
+ const doTurnDiscoveryStub = sinon
18
+ .stub(TurnDiscovery.prototype, 'doTurnDiscovery')
19
+ .resolves(RESULT);
24
20
 
25
- const doTurnDiscoveryStub = sinon
26
- .stub(TurnDiscovery.prototype, 'doTurnDiscovery')
27
- .resolves(RESULT);
21
+ const roap = new Roap({}, {parent: 'fake'});
28
22
 
29
- const roap = new Roap({}, {parent: webex});
23
+ // call with isReconnecting: true
24
+ const result = await roap.doTurnDiscovery(meeting, true);
30
25
 
31
- const result = await roap.doTurnDiscovery(meeting, isReconnecting, isForced);
26
+ assert.calledOnceWithExactly(doTurnDiscoveryStub, meeting, true);
27
+ assert.deepEqual(result, RESULT);
32
28
 
33
- assert.calledOnceWithExactly(doTurnDiscoveryStub, meeting, isReconnecting, isForced);
34
- assert.deepEqual(result, RESULT);
29
+ doTurnDiscoveryStub.resetHistory();
35
30
 
36
- sinon.restore();
37
- });
38
- });
31
+ // and with isReconnecting: false
32
+ const result2 = await roap.doTurnDiscovery(meeting, false);
33
+
34
+ assert.calledOnceWithExactly(doTurnDiscoveryStub, meeting, false);
35
+ assert.deepEqual(result2, RESULT);
36
+
37
+ sinon.restore();
39
38
  });
40
39
  });
41
40
 
42
41
  describe('sendRoapMediaRequest', () => {
43
42
  let sendRoapStub;
43
+ let roapHandlerSubmitStub;
44
44
  let meeting;
45
45
 
46
- let webex;
47
- let roap;
48
-
49
- const fakeLocus = {id: 'fake locus'};
50
-
51
46
  beforeEach(() => {
52
- webex = new MockWebex({});
53
47
  meeting = {
54
48
  id: 'some meeting id',
55
49
  correlationId: 'correlation id',
@@ -61,180 +55,76 @@ describe('Roap', () => {
61
55
  video: {
62
56
  isLocallyMuted: () => false,
63
57
  },
64
- isMultistream: true,
65
58
  setRoapSeq: sinon.stub(),
66
- locusMediaRequest: {fake: true},
67
- webex: {meetings: {reachability: {isAnyPublicClusterReachable: () => true}}},
68
- updateMediaConnections: sinon.stub(),
69
- };
70
-
71
- sinon.stub(MeetingUtil, 'getIpVersion').returns(IP_VERSION.unknown);
72
- sinon.stub(Metrics, 'sendBehavioralMetric');
73
-
74
- sendRoapStub = sinon.stub(RoapRequest.prototype, 'sendRoap').resolves({});
75
- meeting.setRoapSeq.resetHistory();
76
-
77
- roap = new Roap({}, {parent: webex});
78
- sinon.stub(roap.turnDiscovery, 'isSkipped').resolves(false);
79
- });
80
-
81
- afterEach(() => {
82
- sinon.restore();
83
- });
84
-
85
- it(`sends roap OFFER`, async () => {
86
- await roap.sendRoapMediaRequest({
87
- meeting,
88
- sdp: 'sdp',
89
- seq: 2,
90
- tieBreaker: 4294967294,
91
- });
92
-
93
- const expectedRoapMessage = {
94
- messageType: 'OFFER',
95
- sdps: ['sdp'],
96
- version: '2',
97
- seq: 2,
98
- tieBreaker: 4294967294,
99
- headers: ['includeAnswerInHttpResponse', 'noOkInTransaction'],
100
- };
101
-
102
- assert.calledOnce(sendRoapStub);
103
- assert.calledWith(
104
- sendRoapStub,
105
- sinon.match({
106
- roapMessage: expectedRoapMessage,
107
- locusSelfUrl: meeting.selfUrl,
108
- mediaId: meeting.mediaId,
109
- meetingId: meeting.id,
110
- locusMediaRequest: meeting.locusMediaRequest,
111
- })
112
- );
113
- });
114
-
115
- it('reads SDP answer from the http response', async () => {
116
- const roapAnswer = {
117
- seq: 5,
118
- messageType: 'ANSWER',
119
- sdps: ['sdp answer'],
120
- errorType: 'error type', // normally ANSWER would not have errorType or errorCause (only error messages have these)
121
- errorCause: 'error cause', // but we're just testing here that all the fields are forwarded to the caller of sendRoapMediaRequest()
122
- headers: ['header1', 'header2'],
59
+ config: {experimental: {enableTurnDiscovery: false}},
60
+ webex: {meetings: {reachability: {isAnyClusterReachable: () => true}}},
123
61
  };
124
- const fakeMediaConnections = [
125
- {
126
- remoteSdp: JSON.stringify({
127
- roapMessage: roapAnswer,
128
- }),
129
- },
130
- ];
131
-
132
- sendRoapStub.resolves({
133
- mediaConnections: fakeMediaConnections,
134
- locus: fakeLocus,
135
- });
136
-
137
- const result = await roap.sendRoapMediaRequest({
138
- meeting,
139
- sdp: 'sdp',
140
- reconnect: false,
141
- seq: 1,
142
- tieBreaker: 4294967294,
143
- });
144
-
145
- assert.calledOnce(sendRoapStub);
146
- assert.calledOnceWithExactly(meeting.updateMediaConnections, fakeMediaConnections);
147
- assert.deepEqual(result, {
148
- locus: fakeLocus,
149
- roapAnswer: {
150
- seq: 5,
151
- messageType: 'ANSWER',
152
- sdp: 'sdp answer',
153
- errorType: 'error type',
154
- errorCause: 'error cause',
155
- headers: ['header1', 'header2'],
156
- },
157
- });
158
- });
159
-
160
- it('handles the case when there is no answer in the http response', async () => {
161
- const fakeMediaConnections = [
162
- {
163
- // this is the actual value Locus returns to us when they don't send Roap ANSWER in the http response
164
- remoteSdp:
165
- '{"audioMuted":false,"videoMuted":false,"csis":[],"dtmfReceiveSupported":true,"type":"SDP"}',
166
- },
167
- ];
168
-
169
- sendRoapStub.resolves({
170
- mediaConnections: fakeMediaConnections,
171
- locus: fakeLocus,
172
- });
173
62
 
174
- const result = await roap.sendRoapMediaRequest({
175
- meeting,
176
- sdp: 'sdp',
177
- reconnect: false,
178
- seq: 1,
179
- tieBreaker: 4294967294,
63
+ beforeEach(() => {
64
+ sendRoapStub = sinon.stub(RoapRequest.prototype, 'sendRoap').resolves({});
65
+ roapHandlerSubmitStub = sinon.stub(RoapHandler.prototype, 'submit');
66
+ meeting.setRoapSeq.resetHistory();
180
67
  });
181
68
 
182
- assert.calledOnce(sendRoapStub);
183
- assert.calledOnceWithExactly(meeting.updateMediaConnections, fakeMediaConnections);
184
- assert.deepEqual(result, {
185
- locus: fakeLocus,
186
- roapAnswer: undefined,
69
+ afterEach(() => {
70
+ sinon.restore();
187
71
  });
188
- assert.calledOnceWithExactly(
189
- Metrics.sendBehavioralMetric,
190
- BEHAVIORAL_METRICS.ROAP_HTTP_RESPONSE_MISSING,
191
- {
192
- correlationId: meeting.correlationId,
193
- messageType: 'ANSWER',
194
- isMultistream: meeting.isMultistream,
195
- }
196
- );
197
- });
198
72
 
199
- describe('does not crash when http response is missing things', () => {
200
73
  [
201
- {mediaConnections: undefined, title: 'mediaConnections are undefined'},
202
- {mediaConnections: [], title: 'mediaConnections are empty array'},
203
- {mediaConnections: [{}], title: 'mediaConnections[0] has no remoteSdp'},
204
- {
205
- mediaConnections: [{remoteSdp: '{}'}],
206
- title: 'mediaConnections[0].remoteSdp is an empty json',
207
- },
208
- ].forEach(({mediaConnections, title}) =>
209
- it(title, async () => {
210
- sendRoapStub.resolves({
211
- mediaConnections,
212
- locus: fakeLocus,
213
- });
214
-
215
- const result = await roap.sendRoapMediaRequest({
74
+ {reconnect: true, turnDiscoverySkipped: false, expectEmptyMediaId: false},
75
+ {reconnect: true, turnDiscoverySkipped: true, expectEmptyMediaId: true},
76
+ {reconnect: false, turnDiscoverySkipped: false, expectEmptyMediaId: false},
77
+ {reconnect: false, turnDiscoverySkipped: true, expectEmptyMediaId: false},
78
+ ].forEach(({reconnect, turnDiscoverySkipped, expectEmptyMediaId}) =>
79
+ it(`sends roap OFFER with ${expectEmptyMediaId ? 'empty ' : ''}mediaId when ${
80
+ reconnect ? '' : 'not '
81
+ }reconnecting and TURN discovery is ${
82
+ turnDiscoverySkipped ? 'skipped' : 'not skipped'
83
+ }`, async () => {
84
+ const roap = new Roap({}, {parent: 'fake'});
85
+
86
+ sinon.stub(roap.turnDiscovery, 'isSkipped').resolves(turnDiscoverySkipped);
87
+
88
+ await roap.sendRoapMediaRequest({
216
89
  meeting,
217
90
  sdp: 'sdp',
218
- reconnect: false,
219
- seq: 1,
220
- tieBreaker: 4294967294,
91
+ reconnect,
92
+ roapSeq: 1,
221
93
  });
222
94
 
95
+ const expectedRoapMessage = {
96
+ messageType: 'OFFER',
97
+ sdps: ['sdp'],
98
+ version: '2',
99
+ seq: 2,
100
+ tieBreaker: 4294967294,
101
+ };
102
+
223
103
  assert.calledOnce(sendRoapStub);
224
- assert.deepEqual(result, {
225
- locus: fakeLocus,
226
- roapAnswer: undefined,
104
+ assert.calledWith(sendRoapStub, {
105
+ roapMessage: expectedRoapMessage,
106
+ correlationId: meeting.correlationId,
107
+ locusSelfUrl: meeting.selfUrl,
108
+ mediaId: expectEmptyMediaId ? '' : meeting.mediaId,
109
+ audioMuted: meeting.audio?.isLocallyMuted(),
110
+ videoMuted: meeting.video?.isLocallyMuted(),
111
+ meetingId: meeting.id,
112
+ });
113
+
114
+ assert.calledTwice(roapHandlerSubmitStub);
115
+ assert.calledWith(roapHandlerSubmitStub, {
116
+ type: ROAP.SEND_ROAP_MSG,
117
+ msg: expectedRoapMessage,
118
+ correlationId: meeting.correlationId,
119
+ });
120
+ assert.calledWith(roapHandlerSubmitStub, {
121
+ type: ROAP.SEND_ROAP_MSG_SUCCESS,
122
+ seq: 2,
123
+ correlationId: meeting.correlationId,
227
124
  });
228
125
 
229
- assert.calledOnceWithExactly(
230
- Metrics.sendBehavioralMetric,
231
- BEHAVIORAL_METRICS.ROAP_HTTP_RESPONSE_MISSING,
232
- {
233
- correlationId: meeting.correlationId,
234
- messageType: 'ANSWER',
235
- isMultistream: meeting.isMultistream,
236
- }
237
- );
126
+ assert.calledOnce(meeting.setRoapSeq);
127
+ assert.calledWith(meeting.setRoapSeq, 2);
238
128
  })
239
129
  );
240
130
  });