@webex/plugin-meetings 3.7.0-next.6 → 3.7.0-next.60
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.
- package/dist/annotation/index.js +17 -0
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/common/errors/join-forbidden-error.js +52 -0
- package/dist/common/errors/join-forbidden-error.js.map +1 -0
- package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
- package/dist/common/errors/join-webinar-error.js.map +1 -0
- package/dist/common/errors/multistream-not-supported-error.js +53 -0
- package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +46 -5
- package/dist/constants.js.map +1 -1
- package/dist/index.js +16 -11
- package/dist/index.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.js +14 -3
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +35 -17
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/meeting/brbState.js +167 -0
- package/dist/meeting/brbState.js.map +1 -0
- package/dist/meeting/in-meeting-actions.js +2 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +774 -649
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +9 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +1 -6
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +30 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +16 -16
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +96 -33
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +1 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/index.js +107 -55
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +2 -0
- package/dist/meetings/meetings.types.js.map +1 -1
- package/dist/meetings/util.js +1 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +9 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +39 -28
- package/dist/member/util.js.map +1 -1
- package/dist/metrics/constants.js +3 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/remoteMedia.js +30 -15
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +24 -0
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/reachability/index.js +31 -3
- package/dist/reachability/index.js.map +1 -1
- package/dist/roap/index.js +10 -8
- package/dist/roap/index.js.map +1 -1
- package/dist/types/annotation/index.d.ts +5 -0
- package/dist/types/common/errors/join-forbidden-error.d.ts +15 -0
- package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
- package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
- package/dist/types/constants.d.ts +38 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/locus-info/index.d.ts +2 -1
- package/dist/types/meeting/brbState.d.ts +54 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
- package/dist/types/meeting/index.d.ts +21 -12
- package/dist/types/meeting/locusMediaRequest.d.ts +4 -0
- package/dist/types/meeting/request.d.ts +12 -1
- package/dist/types/meeting/request.type.d.ts +6 -0
- package/dist/types/meeting/util.d.ts +1 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +27 -4
- package/dist/types/meetings/index.d.ts +19 -1
- package/dist/types/meetings/meetings.types.d.ts +8 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/types.d.ts +7 -0
- package/dist/types/metrics/constants.d.ts +2 -1
- package/dist/types/multistream/sendSlotManager.d.ts +8 -1
- package/dist/types/reachability/index.d.ts +9 -1
- package/dist/webinar/index.js +354 -3
- package/dist/webinar/index.js.map +1 -1
- package/package.json +23 -22
- package/src/annotation/index.ts +16 -0
- package/src/common/errors/join-forbidden-error.ts +26 -0
- package/src/common/errors/join-webinar-error.ts +24 -0
- package/src/common/errors/multistream-not-supported-error.ts +30 -0
- package/src/config.ts +1 -1
- package/src/constants.ts +43 -3
- package/src/index.ts +5 -3
- package/src/locus-info/index.ts +20 -3
- package/src/locus-info/selfUtils.ts +24 -6
- package/src/meeting/brbState.ts +169 -0
- package/src/meeting/in-meeting-actions.ts +4 -0
- package/src/meeting/index.ts +256 -82
- package/src/meeting/locusMediaRequest.ts +7 -0
- package/src/meeting/muteState.ts +1 -6
- package/src/meeting/request.ts +26 -1
- package/src/meeting/request.type.ts +7 -0
- package/src/meeting/util.ts +8 -10
- package/src/meeting-info/meeting-info-v2.ts +74 -11
- package/src/meeting-info/utilv2.ts +3 -1
- package/src/meetings/index.ts +79 -20
- package/src/meetings/meetings.types.ts +10 -0
- package/src/meetings/util.ts +2 -1
- package/src/member/index.ts +9 -0
- package/src/member/types.ts +8 -0
- package/src/member/util.ts +34 -24
- package/src/metrics/constants.ts +2 -1
- package/src/multistream/remoteMedia.ts +28 -15
- package/src/multistream/sendSlotManager.ts +31 -0
- package/src/reachability/index.ts +29 -1
- package/src/roap/index.ts +10 -8
- package/src/webinar/index.ts +197 -3
- package/test/unit/spec/annotation/index.ts +46 -1
- package/test/unit/spec/locus-info/index.js +292 -60
- package/test/unit/spec/locus-info/selfConstant.js +7 -0
- package/test/unit/spec/locus-info/selfUtils.js +101 -1
- package/test/unit/spec/meeting/brbState.ts +114 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
- package/test/unit/spec/meeting/index.js +733 -106
- package/test/unit/spec/meeting/muteState.js +0 -24
- package/test/unit/spec/meeting/utils.js +22 -19
- package/test/unit/spec/meeting-info/meetinginfov2.js +46 -4
- package/test/unit/spec/meeting-info/utilv2.js +17 -0
- package/test/unit/spec/meetings/index.js +159 -18
- package/test/unit/spec/meetings/utils.js +10 -0
- package/test/unit/spec/member/util.js +52 -11
- package/test/unit/spec/multistream/remoteMedia.ts +11 -7
- package/test/unit/spec/reachability/index.ts +120 -10
- package/test/unit/spec/roap/index.ts +47 -0
- package/test/unit/spec/webinar/index.ts +457 -0
- package/dist/common/errors/webinar-registration-error.js.map +0 -1
- package/src/common/errors/webinar-registration-error.ts +0 -27
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import sinon from 'sinon';
|
|
2
|
+
import {assert} from '@webex/test-helper-chai';
|
|
3
|
+
|
|
4
|
+
import testUtils from '../../../utils/testUtils';
|
|
5
|
+
import {BrbState, createBrbState} from '@webex/plugin-meetings/src/meeting/brbState';
|
|
6
|
+
|
|
7
|
+
describe('plugin-meetings', () => {
|
|
8
|
+
let meeting: any;
|
|
9
|
+
let brbState: BrbState;
|
|
10
|
+
|
|
11
|
+
beforeEach(async () => {
|
|
12
|
+
meeting = {
|
|
13
|
+
isMultistream: true,
|
|
14
|
+
locusUrl: 'locus url',
|
|
15
|
+
deviceUrl: 'device url',
|
|
16
|
+
selfId: 'self id',
|
|
17
|
+
mediaProperties: {
|
|
18
|
+
webrtcMediaConnection: true,
|
|
19
|
+
},
|
|
20
|
+
sendSlotManager: {
|
|
21
|
+
setSourceStateOverride: sinon.stub(),
|
|
22
|
+
},
|
|
23
|
+
meetingRequest: {
|
|
24
|
+
setBrb: sinon.stub().resolves(),
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
brbState = new BrbState(meeting, false);
|
|
29
|
+
await testUtils.flushPromises();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe('brbState library', () => {
|
|
33
|
+
it('takes into account current status when instantiated', async () => {
|
|
34
|
+
// create a new BrbState instance
|
|
35
|
+
brbState = createBrbState(meeting, true);
|
|
36
|
+
await testUtils.flushPromises();
|
|
37
|
+
|
|
38
|
+
assert.isTrue(brbState.state.client.enabled);
|
|
39
|
+
|
|
40
|
+
// now check the opposite case
|
|
41
|
+
brbState = createBrbState(meeting, false);
|
|
42
|
+
await testUtils.flushPromises();
|
|
43
|
+
|
|
44
|
+
assert.isFalse(brbState.state.client.enabled);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('can be enabled', async () => {
|
|
48
|
+
brbState.enable(true, meeting.sendSlotManager);
|
|
49
|
+
brbState.handleServerBrbUpdate(true);
|
|
50
|
+
await testUtils.flushPromises();
|
|
51
|
+
|
|
52
|
+
assert.isTrue(brbState.state.client.enabled);
|
|
53
|
+
assert.isTrue(brbState.state.server.enabled);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('can be disabled', async () => {
|
|
57
|
+
brbState.enable(false, meeting.sendSlotManager);
|
|
58
|
+
brbState.handleServerBrbUpdate(false);
|
|
59
|
+
await testUtils.flushPromises();
|
|
60
|
+
|
|
61
|
+
assert.isFalse(brbState.state.client.enabled);
|
|
62
|
+
assert.isFalse(brbState.state.server.enabled);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('does not send local brb state to server if it is not a multistream meeting', async () => {
|
|
66
|
+
meeting.isMultistream = false;
|
|
67
|
+
brbState.enable(true, meeting.sendSlotManager);
|
|
68
|
+
brbState.handleServerBrbUpdate(true);
|
|
69
|
+
await testUtils.flushPromises();
|
|
70
|
+
|
|
71
|
+
assert.isTrue(meeting.meetingRequest.setBrb.notCalled);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('does not send local brb state to server if webrtc media connection is not defined', async () => {
|
|
75
|
+
meeting.mediaProperties.webrtcMediaConnection = undefined;
|
|
76
|
+
brbState.enable(true, meeting.sendSlotManager);
|
|
77
|
+
brbState.handleServerBrbUpdate(true);
|
|
78
|
+
await testUtils.flushPromises();
|
|
79
|
+
|
|
80
|
+
assert.isTrue(meeting.meetingRequest.setBrb.notCalled);
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
it('does not send request twice when in progress', async () => {
|
|
84
|
+
brbState.state.syncToServerInProgress = true;
|
|
85
|
+
brbState.enable(true, meeting.sendSlotManager);
|
|
86
|
+
await testUtils.flushPromises();
|
|
87
|
+
|
|
88
|
+
assert.isTrue(meeting.meetingRequest.setBrb.notCalled);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it('syncs with server when client state does not match server state', async () => {
|
|
92
|
+
brbState.enable(true, meeting.sendSlotManager);
|
|
93
|
+
brbState.handleServerBrbUpdate(true);
|
|
94
|
+
await testUtils.flushPromises();
|
|
95
|
+
|
|
96
|
+
assert.isTrue(meeting.meetingRequest.setBrb.calledOnce);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it('sets source state override when client state does not match server state', async () => {
|
|
100
|
+
brbState.enable(true, meeting.sendSlotManager);
|
|
101
|
+
brbState.handleServerBrbUpdate(true);
|
|
102
|
+
await testUtils.flushPromises();
|
|
103
|
+
|
|
104
|
+
assert.isTrue(meeting.sendSlotManager.setSourceStateOverride.calledOnce);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it('handles server update', async () => {
|
|
108
|
+
brbState.handleServerBrbUpdate(true);
|
|
109
|
+
await testUtils.flushPromises();
|
|
110
|
+
|
|
111
|
+
assert.isTrue(brbState.state.server.enabled);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
});
|
|
@@ -42,6 +42,7 @@ describe('plugin-meetings', () => {
|
|
|
42
42
|
waitingForOthersToJoin: null,
|
|
43
43
|
canSendReactions: null,
|
|
44
44
|
canManageBreakout: null,
|
|
45
|
+
canStartBreakout: null,
|
|
45
46
|
canBroadcastMessageToBreakout: null,
|
|
46
47
|
canAdmitLobbyToBreakout: null,
|
|
47
48
|
canUserAskForHelp: null,
|
|
@@ -141,6 +142,7 @@ describe('plugin-meetings', () => {
|
|
|
141
142
|
'waitingForOthersToJoin',
|
|
142
143
|
'canSendReactions',
|
|
143
144
|
'canManageBreakout',
|
|
145
|
+
'canStartBreakout',
|
|
144
146
|
'canBroadcastMessageToBreakout',
|
|
145
147
|
'canAdmitLobbyToBreakout',
|
|
146
148
|
'canUserAskForHelp',
|