@webex/plugin-meetings 3.6.0 → 3.7.0-ipv6-multi-turn-urls.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 (332) hide show
  1. package/README.md +2 -1
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/join-webinar-error.js +50 -0
  5. package/dist/common/errors/join-webinar-error.js.map +1 -0
  6. package/dist/config.js +4 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.js +54 -4
  9. package/dist/constants.js.map +1 -1
  10. package/dist/controls-options-manager/enums.js +1 -0
  11. package/dist/controls-options-manager/enums.js.map +1 -1
  12. package/dist/controls-options-manager/index.js +10 -3
  13. package/dist/controls-options-manager/index.js.map +1 -1
  14. package/dist/controls-options-manager/types.js.map +1 -1
  15. package/dist/controls-options-manager/util.js +12 -0
  16. package/dist/controls-options-manager/util.js.map +1 -1
  17. package/dist/index.js +7 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/interpretation/index.js +1 -1
  20. package/dist/interpretation/siLanguage.js +1 -1
  21. package/dist/locus-info/controlsUtils.js +28 -4
  22. package/dist/locus-info/controlsUtils.js.map +1 -1
  23. package/dist/locus-info/fullState.js +2 -1
  24. package/dist/locus-info/fullState.js.map +1 -1
  25. package/dist/locus-info/index.js +61 -3
  26. package/dist/locus-info/index.js.map +1 -1
  27. package/dist/locus-info/parser.js +5 -1
  28. package/dist/locus-info/parser.js.map +1 -1
  29. package/dist/media/index.js +29 -1
  30. package/dist/media/index.js.map +1 -1
  31. package/dist/meeting/in-meeting-actions.js +29 -1
  32. package/dist/meeting/in-meeting-actions.js.map +1 -1
  33. package/dist/meeting/index.js +807 -540
  34. package/dist/meeting/index.js.map +1 -1
  35. package/dist/meeting/locusMediaRequest.js +2 -6
  36. package/dist/meeting/locusMediaRequest.js.map +1 -1
  37. package/dist/meeting/muteState.js +5 -2
  38. package/dist/meeting/muteState.js.map +1 -1
  39. package/dist/meeting/request.js +21 -29
  40. package/dist/meeting/request.js.map +1 -1
  41. package/dist/meeting/util.js +98 -61
  42. package/dist/meeting/util.js.map +1 -1
  43. package/dist/meeting-info/meeting-info-v2.js +80 -17
  44. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  45. package/dist/meetings/index.js +29 -2
  46. package/dist/meetings/index.js.map +1 -1
  47. package/dist/members/index.js +3 -2
  48. package/dist/members/index.js.map +1 -1
  49. package/dist/members/util.js +13 -7
  50. package/dist/members/util.js.map +1 -1
  51. package/dist/metrics/constants.js +4 -1
  52. package/dist/metrics/constants.js.map +1 -1
  53. package/dist/multistream/remoteMedia.js +34 -15
  54. package/dist/multistream/remoteMedia.js.map +1 -1
  55. package/dist/reachability/clusterReachability.js +12 -15
  56. package/dist/reachability/clusterReachability.js.map +1 -1
  57. package/dist/reachability/index.js +433 -136
  58. package/dist/reachability/index.js.map +1 -1
  59. package/dist/{rtcMetrics/constants.js → reachability/reachability.types.js} +1 -5
  60. package/dist/reachability/reachability.types.js.map +1 -0
  61. package/dist/reachability/request.js +23 -9
  62. package/dist/reachability/request.js.map +1 -1
  63. package/dist/recording-controller/enums.js +8 -4
  64. package/dist/recording-controller/enums.js.map +1 -1
  65. package/dist/recording-controller/index.js +18 -9
  66. package/dist/recording-controller/index.js.map +1 -1
  67. package/dist/recording-controller/util.js +13 -9
  68. package/dist/recording-controller/util.js.map +1 -1
  69. package/dist/roap/index.js +5 -7
  70. package/dist/roap/index.js.map +1 -1
  71. package/dist/roap/request.js +45 -79
  72. package/dist/roap/request.js.map +1 -1
  73. package/dist/roap/turnDiscovery.js +3 -6
  74. package/dist/roap/turnDiscovery.js.map +1 -1
  75. package/dist/{common/errors/parameter.d.ts → types/common/errors/join-webinar-error.d.ts} +4 -5
  76. package/dist/types/config.d.ts +3 -0
  77. package/dist/types/constants.d.ts +43 -0
  78. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  79. package/dist/types/controls-options-manager/index.d.ts +2 -1
  80. package/dist/types/controls-options-manager/types.d.ts +2 -0
  81. package/dist/types/index.d.ts +2 -1
  82. package/dist/types/locus-info/index.d.ts +9 -0
  83. package/dist/types/meeting/in-meeting-actions.d.ts +28 -0
  84. package/dist/types/meeting/index.d.ts +34 -3
  85. package/dist/types/meeting/locusMediaRequest.d.ts +2 -3
  86. package/dist/types/meeting/muteState.d.ts +2 -1
  87. package/dist/types/meeting/request.d.ts +2 -2
  88. package/dist/types/meeting/util.d.ts +2 -2
  89. package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
  90. package/dist/types/meetings/index.d.ts +13 -1
  91. package/dist/types/members/index.d.ts +2 -1
  92. package/dist/types/members/util.d.ts +5 -1
  93. package/dist/types/metrics/constants.d.ts +3 -0
  94. package/dist/types/multistream/remoteMedia.d.ts +1 -0
  95. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  96. package/dist/types/reachability/index.d.ts +74 -35
  97. package/dist/types/reachability/reachability.types.d.ts +64 -0
  98. package/dist/types/reachability/request.d.ts +5 -1
  99. package/dist/types/recording-controller/enums.d.ts +5 -2
  100. package/dist/types/recording-controller/index.d.ts +1 -0
  101. package/dist/types/recording-controller/util.d.ts +2 -1
  102. package/dist/types/roap/request.d.ts +1 -13
  103. package/dist/webinar/index.js +382 -19
  104. package/dist/webinar/index.js.map +1 -1
  105. package/package.json +22 -22
  106. package/src/common/errors/join-webinar-error.ts +24 -0
  107. package/src/config.ts +3 -0
  108. package/src/constants.ts +52 -0
  109. package/src/controls-options-manager/enums.ts +1 -0
  110. package/src/controls-options-manager/index.ts +19 -2
  111. package/src/controls-options-manager/types.ts +2 -0
  112. package/src/controls-options-manager/util.ts +12 -0
  113. package/src/index.ts +2 -0
  114. package/src/locus-info/controlsUtils.ts +46 -2
  115. package/src/locus-info/fullState.ts +1 -0
  116. package/src/locus-info/index.ts +60 -0
  117. package/src/locus-info/parser.ts +8 -1
  118. package/src/media/index.ts +15 -0
  119. package/src/meeting/in-meeting-actions.ts +58 -0
  120. package/src/meeting/index.ts +268 -32
  121. package/src/meeting/locusMediaRequest.ts +4 -8
  122. package/src/meeting/muteState.ts +6 -2
  123. package/src/meeting/request.ts +4 -11
  124. package/src/meeting/util.ts +31 -6
  125. package/src/meeting-info/meeting-info-v2.ts +63 -0
  126. package/src/meetings/index.ts +74 -40
  127. package/src/members/index.ts +4 -2
  128. package/src/members/util.ts +4 -1
  129. package/src/metrics/constants.ts +3 -0
  130. package/src/multistream/remoteMedia.ts +33 -15
  131. package/src/reachability/clusterReachability.ts +5 -15
  132. package/src/reachability/index.ts +285 -77
  133. package/src/reachability/reachability.types.ts +85 -0
  134. package/src/reachability/request.ts +55 -30
  135. package/src/recording-controller/enums.ts +5 -2
  136. package/src/recording-controller/index.ts +17 -4
  137. package/src/recording-controller/util.ts +20 -5
  138. package/src/roap/index.ts +4 -5
  139. package/src/roap/request.ts +32 -44
  140. package/src/roap/turnDiscovery.ts +2 -4
  141. package/src/webinar/index.ts +223 -17
  142. package/test/unit/spec/controls-options-manager/index.js +56 -32
  143. package/test/unit/spec/controls-options-manager/util.js +44 -0
  144. package/test/unit/spec/locus-info/controlsUtils.js +80 -4
  145. package/test/unit/spec/locus-info/index.js +88 -2
  146. package/test/unit/spec/meeting/in-meeting-actions.ts +31 -1
  147. package/test/unit/spec/meeting/index.js +407 -82
  148. package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
  149. package/test/unit/spec/meeting/muteState.js +8 -4
  150. package/test/unit/spec/meeting/request.js +3 -26
  151. package/test/unit/spec/meeting/utils.js +71 -14
  152. package/test/unit/spec/meeting-info/meetinginfov2.js +42 -0
  153. package/test/unit/spec/meetings/index.js +41 -6
  154. package/test/unit/spec/members/index.js +25 -2
  155. package/test/unit/spec/members/request.js +37 -3
  156. package/test/unit/spec/members/utils.js +110 -1
  157. package/test/unit/spec/multistream/remoteMedia.ts +27 -9
  158. package/test/unit/spec/reachability/clusterReachability.ts +7 -0
  159. package/test/unit/spec/reachability/index.ts +265 -1
  160. package/test/unit/spec/reachability/request.js +56 -15
  161. package/test/unit/spec/recording-controller/index.js +61 -5
  162. package/test/unit/spec/recording-controller/util.js +39 -3
  163. package/test/unit/spec/roap/index.ts +1 -1
  164. package/test/unit/spec/roap/request.ts +51 -109
  165. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  166. package/test/unit/spec/webinar/index.ts +443 -14
  167. package/dist/annotation/annotation.types.d.ts +0 -42
  168. package/dist/annotation/constants.d.ts +0 -31
  169. package/dist/annotation/index.d.ts +0 -117
  170. package/dist/breakouts/breakout.d.ts +0 -8
  171. package/dist/breakouts/collection.d.ts +0 -5
  172. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  173. package/dist/breakouts/events.d.ts +0 -8
  174. package/dist/breakouts/index.d.ts +0 -5
  175. package/dist/breakouts/request.d.ts +0 -22
  176. package/dist/breakouts/utils.d.ts +0 -15
  177. package/dist/common/browser-detection.d.ts +0 -9
  178. package/dist/common/collection.d.ts +0 -48
  179. package/dist/common/config.d.ts +0 -2
  180. package/dist/common/errors/captcha-error.d.ts +0 -15
  181. package/dist/common/errors/intent-to-join.d.ts +0 -16
  182. package/dist/common/errors/join-meeting.d.ts +0 -17
  183. package/dist/common/errors/media.d.ts +0 -15
  184. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  185. package/dist/common/errors/password-error.d.ts +0 -15
  186. package/dist/common/errors/permission.d.ts +0 -14
  187. package/dist/common/errors/reclaim-host-role-error.js +0 -149
  188. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  189. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  190. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  191. package/dist/common/errors/reconnection-in-progress.js +0 -33
  192. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  193. package/dist/common/errors/reconnection.d.ts +0 -15
  194. package/dist/common/errors/stats.d.ts +0 -15
  195. package/dist/common/errors/webex-errors.d.ts +0 -93
  196. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  197. package/dist/common/events/events-scope.d.ts +0 -17
  198. package/dist/common/events/events.d.ts +0 -12
  199. package/dist/common/events/trigger-proxy.d.ts +0 -2
  200. package/dist/common/events/util.d.ts +0 -2
  201. package/dist/common/logs/logger-config.d.ts +0 -2
  202. package/dist/common/logs/logger-proxy.d.ts +0 -2
  203. package/dist/common/logs/request.d.ts +0 -36
  204. package/dist/common/queue.d.ts +0 -34
  205. package/dist/config.d.ts +0 -72
  206. package/dist/constants.d.ts +0 -1088
  207. package/dist/controls-options-manager/constants.d.ts +0 -4
  208. package/dist/controls-options-manager/enums.d.ts +0 -15
  209. package/dist/controls-options-manager/index.d.ts +0 -136
  210. package/dist/controls-options-manager/types.d.ts +0 -43
  211. package/dist/controls-options-manager/util.d.ts +0 -1
  212. package/dist/index.d.ts +0 -7
  213. package/dist/interceptors/index.d.ts +0 -2
  214. package/dist/interceptors/locusRetry.d.ts +0 -27
  215. package/dist/interpretation/collection.d.ts +0 -5
  216. package/dist/interpretation/index.d.ts +0 -5
  217. package/dist/interpretation/siLanguage.d.ts +0 -5
  218. package/dist/locus-info/controlsUtils.d.ts +0 -2
  219. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  220. package/dist/locus-info/fullState.d.ts +0 -2
  221. package/dist/locus-info/hostUtils.d.ts +0 -2
  222. package/dist/locus-info/index.d.ts +0 -322
  223. package/dist/locus-info/infoUtils.d.ts +0 -2
  224. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  225. package/dist/locus-info/parser.d.ts +0 -272
  226. package/dist/locus-info/selfUtils.d.ts +0 -2
  227. package/dist/media/index.d.ts +0 -34
  228. package/dist/media/properties.d.ts +0 -93
  229. package/dist/media/util.d.ts +0 -2
  230. package/dist/mediaQualityMetrics/config.d.ts +0 -241
  231. package/dist/mediaQualityMetrics/config.js +0 -502
  232. package/dist/mediaQualityMetrics/config.js.map +0 -1
  233. package/dist/meeting/effectsState.js +0 -260
  234. package/dist/meeting/effectsState.js.map +0 -1
  235. package/dist/meeting/in-meeting-actions.d.ts +0 -167
  236. package/dist/meeting/index.d.ts +0 -1825
  237. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  238. package/dist/meeting/muteState.d.ts +0 -178
  239. package/dist/meeting/request.d.ts +0 -295
  240. package/dist/meeting/request.type.d.ts +0 -11
  241. package/dist/meeting/state.d.ts +0 -9
  242. package/dist/meeting/util.d.ts +0 -119
  243. package/dist/meeting/voicea-meeting.d.ts +0 -16
  244. package/dist/meeting-info/collection.d.ts +0 -20
  245. package/dist/meeting-info/index.d.ts +0 -69
  246. package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
  247. package/dist/meeting-info/request.d.ts +0 -22
  248. package/dist/meeting-info/util.d.ts +0 -2
  249. package/dist/meeting-info/utilv2.d.ts +0 -2
  250. package/dist/meetings/collection.d.ts +0 -40
  251. package/dist/meetings/index.d.ts +0 -390
  252. package/dist/meetings/meetings.types.d.ts +0 -4
  253. package/dist/meetings/request.d.ts +0 -27
  254. package/dist/meetings/util.d.ts +0 -18
  255. package/dist/member/index.d.ts +0 -160
  256. package/dist/member/member.types.js +0 -17
  257. package/dist/member/member.types.js.map +0 -1
  258. package/dist/member/types.d.ts +0 -32
  259. package/dist/member/util.d.ts +0 -2
  260. package/dist/members/collection.d.ts +0 -29
  261. package/dist/members/index.d.ts +0 -353
  262. package/dist/members/request.d.ts +0 -114
  263. package/dist/members/types.d.ts +0 -25
  264. package/dist/members/util.d.ts +0 -215
  265. package/dist/metrics/config.js +0 -276
  266. package/dist/metrics/config.js.map +0 -1
  267. package/dist/metrics/constants.d.ts +0 -70
  268. package/dist/metrics/index.d.ts +0 -45
  269. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  270. package/dist/multistream/receiveSlot.d.ts +0 -68
  271. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  272. package/dist/multistream/remoteMedia.d.ts +0 -72
  273. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  274. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  275. package/dist/multistream/sendSlotManager.d.ts +0 -69
  276. package/dist/networkQualityMonitor/index.d.ts +0 -70
  277. package/dist/networkQualityMonitor/index.js +0 -221
  278. package/dist/networkQualityMonitor/index.js.map +0 -1
  279. package/dist/peer-connection-manager/index.js +0 -671
  280. package/dist/peer-connection-manager/index.js.map +0 -1
  281. package/dist/peer-connection-manager/util.js +0 -109
  282. package/dist/peer-connection-manager/util.js.map +0 -1
  283. package/dist/personal-meeting-room/index.d.ts +0 -47
  284. package/dist/personal-meeting-room/request.d.ts +0 -14
  285. package/dist/personal-meeting-room/util.d.ts +0 -2
  286. package/dist/reachability/clusterReachability.d.ts +0 -109
  287. package/dist/reachability/index.d.ts +0 -105
  288. package/dist/reachability/request.d.ts +0 -39
  289. package/dist/reachability/util.d.ts +0 -8
  290. package/dist/reactions/constants.d.ts +0 -3
  291. package/dist/reactions/reactions.d.ts +0 -4
  292. package/dist/reactions/reactions.type.d.ts +0 -52
  293. package/dist/reconnection-manager/index.d.ts +0 -136
  294. package/dist/recording-controller/enums.d.ts +0 -7
  295. package/dist/recording-controller/index.d.ts +0 -207
  296. package/dist/recording-controller/util.d.ts +0 -14
  297. package/dist/roap/collection.js +0 -62
  298. package/dist/roap/collection.js.map +0 -1
  299. package/dist/roap/handler.js +0 -275
  300. package/dist/roap/handler.js.map +0 -1
  301. package/dist/roap/index.d.ts +0 -86
  302. package/dist/roap/request.d.ts +0 -39
  303. package/dist/roap/state.js +0 -126
  304. package/dist/roap/state.js.map +0 -1
  305. package/dist/roap/turnDiscovery.d.ts +0 -155
  306. package/dist/roap/util.js +0 -75
  307. package/dist/roap/util.js.map +0 -1
  308. package/dist/rtcMetrics/constants.d.ts +0 -4
  309. package/dist/rtcMetrics/constants.js.map +0 -1
  310. package/dist/rtcMetrics/index.d.ts +0 -61
  311. package/dist/rtcMetrics/index.js +0 -197
  312. package/dist/rtcMetrics/index.js.map +0 -1
  313. package/dist/statsAnalyzer/global.d.ts +0 -36
  314. package/dist/statsAnalyzer/global.js +0 -126
  315. package/dist/statsAnalyzer/global.js.map +0 -1
  316. package/dist/statsAnalyzer/index.d.ts +0 -217
  317. package/dist/statsAnalyzer/index.js +0 -1013
  318. package/dist/statsAnalyzer/index.js.map +0 -1
  319. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
  320. package/dist/statsAnalyzer/mqaUtil.js +0 -179
  321. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  322. package/dist/transcription/index.d.ts +0 -64
  323. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  324. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  325. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  326. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  327. package/dist/types/rtcMetrics/index.d.ts +0 -71
  328. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  329. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  330. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  331. package/dist/webinar/collection.d.ts +0 -16
  332. package/dist/webinar/index.d.ts +0 -5
@@ -1,5 +1,5 @@
1
1
  import RecordingUtil from '@webex/plugin-meetings/src/recording-controller/util';
2
- import RecordingAction from '@webex/plugin-meetings/src/recording-controller/enums';
2
+ import { RecordingAction } from '@webex/plugin-meetings/src/recording-controller/enums';
3
3
  import {SELF_POLICY} from '@webex/plugin-meetings/src/constants';
4
4
 
5
5
  import {assert} from 'chai';
@@ -29,6 +29,15 @@ describe('plugin-meetings', () => {
29
29
  );
30
30
  });
31
31
 
32
+ it('can start premise recording when the correct display hint is present', () => {
33
+ locusInfo.parsedLocus.info.userDisplayHints.push('PREMISE_RECORDING_CONTROL_START');
34
+
35
+ assert.equal(
36
+ RecordingUtil.canUserStart(locusInfo.parsedLocus.info.userDisplayHints),
37
+ true
38
+ );
39
+ });
40
+
32
41
  it('can start recording when the correct display hint is present and the policy is true', () => {
33
42
  locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_START');
34
43
 
@@ -69,6 +78,15 @@ describe('plugin-meetings', () => {
69
78
  );
70
79
  });
71
80
 
81
+ it('can pause premise recording when the correct display hint is present', () => {
82
+ locusInfo.parsedLocus.info.userDisplayHints.push('PREMISE_RECORDING_CONTROL_PAUSE');
83
+
84
+ assert.equal(
85
+ RecordingUtil.canUserPause(locusInfo.parsedLocus.info.userDisplayHints),
86
+ true
87
+ );
88
+ });
89
+
72
90
  it('can pause recording when the correct display hint is present and the policy is true', () => {
73
91
  locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_PAUSE');
74
92
 
@@ -109,6 +127,15 @@ describe('plugin-meetings', () => {
109
127
  );
110
128
  });
111
129
 
130
+ it('can stop premise recording when the correct display hint is present', () => {
131
+ locusInfo.parsedLocus.info.userDisplayHints.push('PREMISE_RECORDING_CONTROL_STOP');
132
+
133
+ assert.equal(
134
+ RecordingUtil.canUserStop(locusInfo.parsedLocus.info.userDisplayHints),
135
+ true
136
+ );
137
+ });
138
+
112
139
  it('can stop recording when the correct display hint is present and the policy is true', () => {
113
140
  locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_STOP', {
114
141
  [SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD]: true,
@@ -142,7 +169,7 @@ describe('plugin-meetings', () => {
142
169
  });
143
170
 
144
171
  describe('canUserResume', () => {
145
- it('can start recording when the correct display hint is present', () => {
172
+ it('can resume recording when the correct display hint is present', () => {
146
173
  locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_RESUME');
147
174
 
148
175
  assert.equal(
@@ -151,7 +178,16 @@ describe('plugin-meetings', () => {
151
178
  );
152
179
  });
153
180
 
154
- it('can start recording when the correct display hint is present and the policy is true', () => {
181
+ it('can resume premise recording when the correct display hint is present', () => {
182
+ locusInfo.parsedLocus.info.userDisplayHints.push('PREMISE_RECORDING_CONTROL_RESUME');
183
+
184
+ assert.equal(
185
+ RecordingUtil.canUserResume(locusInfo.parsedLocus.info.userDisplayHints),
186
+ true
187
+ );
188
+ });
189
+
190
+ it('can resume recording when the correct display hint is present and the policy is true', () => {
155
191
  locusInfo.parsedLocus.info.userDisplayHints.push('RECORDING_CONTROL_RESUME');
156
192
 
157
193
  assert.equal(
@@ -161,7 +161,7 @@ describe('Roap', () => {
161
161
  roapMessage: expectedRoapMessage,
162
162
  locusSelfUrl: meeting.selfUrl,
163
163
  mediaId: meeting.mediaId,
164
- meetingId: meeting.id,
164
+ isMultistream: meeting.isMultistream,
165
165
  locusMediaRequest: meeting.locusMediaRequest,
166
166
  })
167
167
  );
@@ -4,6 +4,7 @@ import {assert} from '@webex/test-helper-chai';
4
4
  import MockWebex from '@webex/test-helper-mock-webex';
5
5
  import Meetings from '@webex/plugin-meetings';
6
6
  import RoapRequest from '@webex/plugin-meetings/src/roap/request';
7
+ import MeetingUtil from '@webex/plugin-meetings/src/meeting/util';
7
8
  import {IP_VERSION, REACHABILITY} from '@webex/plugin-meetings/src/constants';
8
9
 
9
10
  describe('plugin-meetings/roap', () => {
@@ -23,6 +24,11 @@ describe('plugin-meetings/roap', () => {
23
24
  regionCode: 'WEST-COAST',
24
25
  };
25
26
 
27
+ webex.meetings.reachability = {
28
+ getReachabilityReportToAttachToRoap: sinon.stub().resolves({}),
29
+ getClientMediaPreferences: sinon.stub().resolves({}),
30
+ };
31
+
26
32
  webex.internal = {
27
33
  services: {
28
34
  get: sinon.mock().returns(locusUrl),
@@ -36,6 +42,8 @@ describe('plugin-meetings/roap', () => {
36
42
  },
37
43
  };
38
44
 
45
+ sinon.stub(MeetingUtil, 'getIpVersion').returns(IP_VERSION.ipv4_and_ipv6);
46
+
39
47
  // @ts-ignore
40
48
  roapRequest = new RoapRequest({webex});
41
49
 
@@ -74,146 +82,80 @@ describe('plugin-meetings/roap', () => {
74
82
  );
75
83
  });
76
84
 
77
- describe('#attachReachabilityData', () => {
78
- it('returns the correct reachability data', async () => {
79
- const res = await roapRequest.attachReachabilityData({});
80
-
81
- assert.deepEqual(res.localSdp, {
82
- reachability: {
83
- clusterId: {
84
- udp: {
85
- reachable: 'true',
86
- latencyInMilliseconds: '10',
87
- },
88
- tcp: {
89
- reachable: 'false',
90
- },
91
- xtls: {
92
- untested: 'true',
93
- }
94
- },
95
- },
96
- });
97
- assert.deepEqual(res.joinCookie, {
98
- anycastEntryPoint: 'aws-eu-west-1',
99
- });
100
- });
85
+ afterEach(() => {
86
+ sinon.restore();
87
+ })
101
88
 
102
- it('handles the case when reachability data does not exist', async () => {
103
- await webex.boundedStorage.del(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie);
89
+ describe('sendRoap', () => {
90
+ it('includes clientMediaPreferences and reachability in the request correctly', async () => {
91
+ const locusMediaRequest = {send: sinon.stub().resolves({body: {locus: {}}})};
104
92
 
105
- await webex.boundedStorage.del(REACHABILITY.namespace, REACHABILITY.localStorageResult);
106
- const sdp = {
107
- some: 'attribute',
93
+ const FAKE_REACHABILITY_REPORT = {
94
+ id: 'fake reachability report',
95
+ };
96
+ const FAKE_CLIENT_MEDIA_PREFERENCES = {
97
+ id: 'fake client media preferences',
108
98
  };
109
99
 
110
- const result = await roapRequest.attachReachabilityData(sdp);
111
-
112
- assert.deepEqual(result, {
113
- joinCookie: undefined,
114
- localSdp: {
115
- some: 'attribute',
116
- },
117
- });
118
- });
119
- });
120
-
121
- describe('sendRoap', () => {
122
- it('includes joinCookie in the request correctly', async () => {
123
- const locusMediaRequest = {send: sinon.stub().resolves({body: {locus: {}}})};
124
- const ipVersion = IP_VERSION.unknown;
100
+ webex.meetings.reachability.getReachabilityReportToAttachToRoap.resolves(FAKE_REACHABILITY_REPORT);
101
+ webex.meetings.reachability.getClientMediaPreferences.resolves(FAKE_CLIENT_MEDIA_PREFERENCES);
125
102
 
126
103
  await roapRequest.sendRoap({
127
104
  locusSelfUrl: locusUrl,
128
- ipVersion,
129
105
  mediaId: 'mediaId',
130
106
  roapMessage: {
131
107
  seq: 'seq',
132
108
  },
133
109
  meetingId: 'meeting-id',
110
+ isMultistream: true,
134
111
  locusMediaRequest,
135
112
  });
136
113
 
114
+ assert.calledOnceWithExactly(webex.meetings.reachability.getReachabilityReportToAttachToRoap);
115
+ assert.calledOnceWithExactly(webex.meetings.reachability.getClientMediaPreferences, true, IP_VERSION.ipv4_and_ipv6);
116
+
137
117
  const requestParams = locusMediaRequest.send.getCall(0).args[0];
138
118
  assert.deepEqual(requestParams, {
139
119
  type: 'RoapMessage',
140
120
  selfUrl: locusUrl,
141
- ipVersion,
142
- joinCookie: {
143
- anycastEntryPoint: 'aws-eu-west-1',
144
- },
121
+ clientMediaPreferences: FAKE_CLIENT_MEDIA_PREFERENCES,
145
122
  mediaId: 'mediaId',
146
123
  roapMessage: {
147
124
  seq: 'seq',
148
125
  },
149
- reachability: {
150
- clusterId: {
151
- tcp: {
152
- reachable: 'false',
153
- },
154
- udp: {
155
- latencyInMilliseconds: '10',
156
- reachable: 'true',
157
- },
158
- xtls: {
159
- untested: 'true',
160
- },
161
- },
162
- },
126
+ reachability: FAKE_REACHABILITY_REPORT,
163
127
  });
164
128
  });
165
- });
166
129
 
167
- it('calls attachReachabilityData when sendRoap', async () => {
168
- const locusMediaRequest = { send: sinon.stub().resolves({body: {locus: {}}})};
130
+ it('includes default clientMediaPreferences if calls to reachability fail', async () => {
131
+ const locusMediaRequest = {send: sinon.stub().resolves({body: {locus: {}}})};
169
132
 
170
- const newSdp = {
171
- new: 'sdp',
172
- reachability: { someResult: 'whatever' }
173
- };
174
- const ipVersion = IP_VERSION.only_ipv6;
133
+ webex.meetings.reachability.getClientMediaPreferences.rejects(new Error('fake error'));
175
134
 
176
- roapRequest.attachReachabilityData = sinon.stub().returns(
177
- Promise.resolve({
178
- localSdp: newSdp,
179
- joinCookie: {
180
- anycastEntryPoint: 'aws-eu-west-1',
135
+ await roapRequest.sendRoap({
136
+ locusSelfUrl: locusUrl,
137
+ mediaId: 'mediaId',
138
+ roapMessage: {
139
+ seq: 'seq',
181
140
  },
182
- })
183
- );
184
-
185
- await roapRequest.sendRoap({
186
- roapMessage: {
187
- seq: 1,
188
- },
189
- locusSelfUrl: 'locusSelfUrl',
190
- ipVersion,
191
- mediaId: 'mediaId',
192
- meetingId: 'meetingId',
193
- preferTranscoding: true,
194
- locusMediaRequest
195
- });
196
-
197
- const requestParams = locusMediaRequest.send.getCall(0).args[0];
141
+ meetingId: 'meeting-id',
142
+ isMultistream: true,
143
+ locusMediaRequest,
144
+ });
198
145
 
199
- assert.deepEqual(requestParams, {
200
- type: 'RoapMessage',
201
- selfUrl: 'locusSelfUrl',
202
- ipVersion,
203
- joinCookie: {
204
- anycastEntryPoint: 'aws-eu-west-1',
205
- },
206
- mediaId: 'mediaId',
207
- roapMessage: {
208
- seq: 1,
209
- },
210
- reachability: { someResult: 'whatever' },
211
- });
146
+ assert.calledOnce(webex.meetings.reachability.getClientMediaPreferences);
212
147
 
213
- assert.calledOnceWithExactly(roapRequest.attachReachabilityData, {
214
- roapMessage: {
215
- seq: 1,
216
- },
148
+ const requestParams = locusMediaRequest.send.getCall(0).args[0];
149
+ assert.deepEqual(requestParams, {
150
+ type: 'RoapMessage',
151
+ selfUrl: locusUrl,
152
+ clientMediaPreferences: {ipver: 0, joinCookie: undefined, preferTranscoding: false},
153
+ mediaId: 'mediaId',
154
+ roapMessage: {
155
+ seq: 'seq',
156
+ },
157
+ reachability: undefined,
158
+ });
217
159
  });
218
160
  });
219
161
  });