Skip to content

Commit 3c2f9b4

Browse files
committed
sonar cubes coaching ;)
Signed-off-by: Timo K <[email protected]>
1 parent 383b219 commit 3c2f9b4

File tree

9 files changed

+151
-87
lines changed

9 files changed

+151
-87
lines changed

spec/unit/matrixrtc/CallMembership.spec.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ limitations under the License.
1515
*/
1616

1717
import { type MatrixEvent } from "../../../src";
18-
import { CallMembership, DEFAULT_EXPIRE_DURATION, type RtcMembershipData } from "../../../src/matrixrtc/CallMembership";
19-
import { membershipTemplate } from "./mocks";
18+
import { CallMembership, DEFAULT_EXPIRE_DURATION } from "../../../src/matrixrtc/CallMembership";
19+
import { rtcMembershipTemplate, sessionMembershipTemplate } from "./mocks";
2020

2121
function makeMockEvent(originTs = 0, content = {}): MatrixEvent {
2222
return {
@@ -29,6 +29,7 @@ function makeMockEvent(originTs = 0, content = {}): MatrixEvent {
2929

3030
describe("CallMembership", () => {
3131
describe("SessionMembershipData", () => {
32+
const membershipTemplate = sessionMembershipTemplate;
3233
beforeEach(() => {
3334
jest.useFakeTimers();
3435
});
@@ -185,15 +186,7 @@ describe("CallMembership", () => {
185186
});
186187

187188
describe("RtcMembershipData", () => {
188-
const membershipTemplate: RtcMembershipData = {
189-
"slot_id": "m.call#",
190-
"application": { "type": "m.call", "m.call.id": "", "m.call.intent": "voice" },
191-
"member": { user_id: "@alice:example.org", device_id: "AAAAAAA", id: "xyzHASHxyz" },
192-
"rtc_transports": [{ type: "livekit" }],
193-
"m.call.intent": "voice",
194-
"versions": [],
195-
};
196-
189+
const membershipTemplate = rtcMembershipTemplate;
197190
it("rejects membership with no slot_id", () => {
198191
expect(() => {
199192
new CallMembership(makeMockEvent(0, { ...membershipTemplate, slot_id: undefined }));

spec/unit/matrixrtc/MatrixRTCSession.spec.ts

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,29 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
import { encodeBase64, EventType, MatrixClient, type MatrixError, type MatrixEvent, type Room } from "../../../src";
17+
import {
18+
encodeBase64,
19+
EventType,
20+
MatrixClient,
21+
MatrixEvent,
22+
RelationType,
23+
type MatrixError,
24+
type Room,
25+
} from "../../../src";
1826
import { KnownMembership } from "../../../src/@types/membership";
1927
import { MatrixRTCSession, MatrixRTCSessionEvent } from "../../../src/matrixrtc/MatrixRTCSession";
2028
import { Status, type EncryptionKeysEventContent } from "../../../src/matrixrtc/types";
2129
import { secureRandomString } from "../../../src/randomstring";
22-
import { makeMockEvent, makeMockRoom, membershipTemplate, makeKey, type MembershipData, mockRoomState } from "./mocks";
30+
import {
31+
makeMockEvent,
32+
makeMockRoom,
33+
sessionMembershipTemplate as membershipTemplate,
34+
makeKey,
35+
type MembershipData,
36+
mockRoomState,
37+
rtcMembershipTemplate,
38+
sessionMembershipTemplate,
39+
} from "./mocks";
2340
import { RTCEncryptionManager } from "../../../src/matrixrtc/RTCEncryptionManager.ts";
2441

2542
const mockFocus = { type: "mock" };
@@ -50,6 +67,7 @@ describe("MatrixRTCSession", () => {
5067
});
5168

5269
describe("roomSessionForRoom", () => {
70+
const membershipTemplate = sessionMembershipTemplate;
5371
it("creates a room-scoped session from room state", async () => {
5472
const mockRoom = makeMockRoom([membershipTemplate]);
5573

@@ -206,6 +224,41 @@ describe("MatrixRTCSession", () => {
206224
sess = await MatrixRTCSession.sessionForRoom(client, mockRoom, callSession);
207225
expect(sess.memberships).toHaveLength(0);
208226
});
227+
it("fetches related events if needed from room", async () => {
228+
const testMembership = {
229+
...rtcMembershipTemplate,
230+
"m.relates_to": { event_id: "id", rel_type: RelationType.Reference as const },
231+
// hack for simple makeMockRoom construction
232+
"user_id": rtcMembershipTemplate.member.user_id,
233+
};
234+
235+
const mockRoom = makeMockRoom([testMembership]);
236+
mockRoom.findEventById = jest
237+
.fn()
238+
.mockImplementation((id) =>
239+
id === "id"
240+
? new MatrixEvent({ content: { ...rtcMembershipTemplate }, origin_server_ts: 100 })
241+
: undefined,
242+
);
243+
sess = await MatrixRTCSession.sessionForSlot(client, mockRoom, callSession);
244+
expect(sess.memberships[0].createdTs()).toBe(100);
245+
});
246+
it("fetches related events if needed from cs api", async () => {
247+
const testMembership = {
248+
...rtcMembershipTemplate,
249+
"m.relates_to": { event_id: "id", rel_type: RelationType.Reference as const },
250+
// hack for simple makeMockRoom construction
251+
"user_id": rtcMembershipTemplate.member.user_id,
252+
};
253+
254+
const mockRoom = makeMockRoom([testMembership]);
255+
mockRoom.findEventById = jest.fn().mockReturnValue(undefined);
256+
client.fetchRoomEvent = jest
257+
.fn()
258+
.mockResolvedValue({ content: { ...rtcMembershipTemplate }, origin_server_ts: 100 });
259+
sess = await MatrixRTCSession.sessionForSlot(client, mockRoom, callSession);
260+
expect(sess.memberships[0].createdTs()).toBe(100);
261+
});
209262
});
210263

211264
describe("getOldestMembership", () => {

spec/unit/matrixrtc/MatrixRTCSessionManager.spec.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ limitations under the License.
1717
import { ClientEvent, EventTimeline, MatrixClient } from "../../../src";
1818
import { RoomStateEvent } from "../../../src/models/room-state";
1919
import { MatrixRTCSessionManager, MatrixRTCSessionManagerEvents } from "../../../src/matrixrtc/MatrixRTCSessionManager";
20-
import { makeMockRoom, membershipTemplate, mockRoomState } from "./mocks";
20+
import { makeMockRoom, sessionMembershipTemplate, mockRoomState } from "./mocks";
2121
import { logger } from "../../../src/logger";
2222

2323
describe("MatrixRTCSessionManager", () => {
@@ -42,7 +42,7 @@ describe("MatrixRTCSessionManager", () => {
4242
});
4343

4444
try {
45-
const room1 = makeMockRoom([membershipTemplate]);
45+
const room1 = makeMockRoom([sessionMembershipTemplate]);
4646
jest.spyOn(client, "getRooms").mockReturnValue([room1]);
4747

4848
client.emit(ClientEvent.Room, room1);
@@ -58,7 +58,7 @@ describe("MatrixRTCSessionManager", () => {
5858
client.matrixRTC.on(MatrixRTCSessionManagerEvents.SessionStarted, onStarted);
5959

6060
try {
61-
const room1 = makeMockRoom([{ ...membershipTemplate, application: "m.other" }]);
61+
const room1 = makeMockRoom([{ ...sessionMembershipTemplate, application: "m.other" }]);
6262
jest.spyOn(client, "getRooms").mockReturnValue([room1]);
6363

6464
client.emit(ClientEvent.Room, room1);
@@ -76,14 +76,14 @@ describe("MatrixRTCSessionManager", () => {
7676
client.matrixRTC.once(MatrixRTCSessionManagerEvents.SessionEnded, rEnd);
7777
client.matrixRTC.once(MatrixRTCSessionManagerEvents.SessionStarted, rStart);
7878

79-
const room1 = makeMockRoom([membershipTemplate]);
79+
const room1 = makeMockRoom([sessionMembershipTemplate]);
8080
jest.spyOn(client, "getRooms").mockReturnValue([room1]);
8181
jest.spyOn(client, "getRoom").mockReturnValue(room1);
8282

8383
client.emit(ClientEvent.Room, room1);
8484
await startPromise;
8585

86-
mockRoomState(room1, [{ user_id: membershipTemplate.user_id }]);
86+
mockRoomState(room1, [{ user_id: sessionMembershipTemplate.user_id }]);
8787
const roomState = room1.getLiveTimeline().getState(EventTimeline.FORWARDS)!;
8888
const membEvent = roomState.getStateEvents("org.matrix.msc3401.call.member")[0];
8989
client.emit(RoomStateEvent.Events, membEvent, roomState, null);
@@ -112,22 +112,22 @@ describe("MatrixRTCSessionManager", () => {
112112
});
113113

114114
try {
115-
const room1 = makeMockRoom([{ ...membershipTemplate, application: "m.other" }]);
115+
const room1 = makeMockRoom([{ ...sessionMembershipTemplate, application: "m.other" }]);
116116
jest.spyOn(client, "getRooms").mockReturnValue([room1]);
117117

118118
client.emit(ClientEvent.Room, room1);
119119
expect(onStarted).not.toHaveBeenCalled();
120120
onStarted.mockClear();
121121

122-
const room2 = makeMockRoom([{ ...membershipTemplate, application: "m.notCall", call_id: "test" }]);
122+
const room2 = makeMockRoom([{ ...sessionMembershipTemplate, application: "m.notCall", call_id: "test" }]);
123123
jest.spyOn(client, "getRooms").mockReturnValue([room1, room2]);
124124

125125
client.emit(ClientEvent.Room, room2);
126126
await startPromise;
127127
expect(onStarted).toHaveBeenCalled();
128128
onStarted.mockClear();
129129

130-
mockRoomState(room2, [{ user_id: membershipTemplate.user_id }]);
130+
mockRoomState(room2, [{ user_id: sessionMembershipTemplate.user_id }]);
131131
jest.spyOn(client, "getRoom").mockReturnValue(room2);
132132

133133
const roomState = room2.getLiveTimeline().getState(EventTimeline.FORWARDS)!;
@@ -137,7 +137,7 @@ describe("MatrixRTCSessionManager", () => {
137137
expect(onEnded).toHaveBeenCalled();
138138
onEnded.mockClear();
139139

140-
mockRoomState(room1, [{ user_id: membershipTemplate.user_id }]);
140+
mockRoomState(room1, [{ user_id: sessionMembershipTemplate.user_id }]);
141141
jest.spyOn(client, "getRoom").mockReturnValue(room1);
142142

143143
const roomStateOther = room1.getLiveTimeline().getState(EventTimeline.FORWARDS)!;
@@ -153,13 +153,13 @@ describe("MatrixRTCSessionManager", () => {
153153
it("Doesn't fire event if unrelated sessions ends", () => {
154154
const onEnded = jest.fn();
155155
client.matrixRTC.on(MatrixRTCSessionManagerEvents.SessionEnded, onEnded);
156-
const room1 = makeMockRoom([{ ...membershipTemplate, application: "m.other_app" }]);
156+
const room1 = makeMockRoom([{ ...sessionMembershipTemplate, application: "m.other_app" }]);
157157
jest.spyOn(client, "getRooms").mockReturnValue([room1]);
158158
jest.spyOn(client, "getRoom").mockReturnValue(room1);
159159

160160
client.emit(ClientEvent.Room, room1);
161161

162-
mockRoomState(room1, [{ user_id: membershipTemplate.user_id }]);
162+
mockRoomState(room1, [{ user_id: sessionMembershipTemplate.user_id }]);
163163

164164
const roomState = room1.getLiveTimeline().getState(EventTimeline.FORWARDS)!;
165165
const membEvent = roomState.getStateEvents("org.matrix.msc3401.call.member")[0];

spec/unit/matrixrtc/MembershipManager.spec.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import {
3131
type SessionMembershipData,
3232
type LivekitFocusSelection,
3333
} from "../../../src/matrixrtc";
34-
import { makeMockClient, makeMockRoom, membershipTemplate, mockCallMembership, type MockClient } from "./mocks";
34+
import { makeMockClient, makeMockRoom, sessionMembershipTemplate, mockCallMembership, type MockClient } from "./mocks";
3535
import { MembershipManager } from "../../../src/matrixrtc/MembershipManager.ts";
3636
import { waitFor } from "../../test-utils/test-utils.ts";
3737

@@ -90,7 +90,7 @@ describe("MembershipManager", () => {
9090
// Default to fake timers.
9191
jest.useFakeTimers();
9292
client = makeMockClient("@alice:example.org", "AAAAAAA");
93-
room = makeMockRoom([membershipTemplate]);
93+
room = makeMockRoom([sessionMembershipTemplate]);
9494
// Provide a default mock that is like the default "non error" server behaviour.
9595
(client._unstable_sendDelayedStateEvent as Mock<any>).mockResolvedValue({ delay_id: "id" });
9696
(client._unstable_updateDelayedEvent as Mock<any>).mockResolvedValue(undefined);
@@ -385,7 +385,7 @@ describe("MembershipManager", () => {
385385
const { resolve } = createAsyncHandle(client._unstable_sendDelayedStateEvent);
386386
await jest.advanceTimersByTimeAsync(RESTART_DELAY);
387387
// first simulate the sync, then resolve sending the delayed event.
388-
await manager.onRTCSessionMemberUpdate([mockCallMembership(membershipTemplate, room.roomId)]);
388+
await manager.onRTCSessionMemberUpdate([mockCallMembership(sessionMembershipTemplate, room.roomId)]);
389389
resolve({ delay_id: "id" });
390390
// Let the scheduler run one iteration so that the new join gets sent
391391
await jest.runOnlyPendingTimersAsync();
@@ -468,7 +468,7 @@ describe("MembershipManager", () => {
468468
describe("onRTCSessionMemberUpdate()", () => {
469469
it("does nothing if not joined", async () => {
470470
const manager = new MembershipManager({}, room, client, callSession);
471-
await manager.onRTCSessionMemberUpdate([mockCallMembership(membershipTemplate, room.roomId)]);
471+
await manager.onRTCSessionMemberUpdate([mockCallMembership(sessionMembershipTemplate, room.roomId)]);
472472
await jest.advanceTimersToNextTimerAsync();
473473
expect(client.sendStateEvent).not.toHaveBeenCalled();
474474
expect(client._unstable_sendDelayedStateEvent).not.toHaveBeenCalled();
@@ -485,7 +485,7 @@ describe("MembershipManager", () => {
485485
(client._unstable_sendDelayedStateEvent as Mock).mockClear();
486486

487487
await manager.onRTCSessionMemberUpdate([
488-
mockCallMembership(membershipTemplate, room.roomId),
488+
mockCallMembership(sessionMembershipTemplate, room.roomId),
489489
mockCallMembership(
490490
{ ...(myMembership as SessionMembershipData), user_id: client.getUserId()! },
491491
room.roomId,
@@ -508,7 +508,7 @@ describe("MembershipManager", () => {
508508
(client._unstable_sendDelayedStateEvent as Mock).mockClear();
509509

510510
// Our own membership is removed:
511-
await manager.onRTCSessionMemberUpdate([mockCallMembership(membershipTemplate, room.roomId)]);
511+
await manager.onRTCSessionMemberUpdate([mockCallMembership(sessionMembershipTemplate, room.roomId)]);
512512
await jest.advanceTimersByTimeAsync(1);
513513
expect(client.sendStateEvent).toHaveBeenCalled();
514514
expect(client._unstable_sendDelayedStateEvent).toHaveBeenCalled();
@@ -531,7 +531,7 @@ describe("MembershipManager", () => {
531531

532532
const { resolve } = createAsyncHandle(client._unstable_sendDelayedStateEvent);
533533
await jest.advanceTimersByTimeAsync(10_000);
534-
await manager.onRTCSessionMemberUpdate([mockCallMembership(membershipTemplate, room.roomId)]);
534+
await manager.onRTCSessionMemberUpdate([mockCallMembership(sessionMembershipTemplate, room.roomId)]);
535535
resolve({ delay_id: "id" });
536536
await jest.advanceTimersByTimeAsync(10_000);
537537

@@ -900,7 +900,10 @@ describe("MembershipManager", () => {
900900
const manager = new MembershipManager({}, room, client, callSession);
901901
manager.join([]);
902902
expect(manager.isActivated()).toEqual(true);
903-
const membership = mockCallMembership({ ...membershipTemplate, user_id: client.getUserId()! }, room.roomId);
903+
const membership = mockCallMembership(
904+
{ ...sessionMembershipTemplate, user_id: client.getUserId()! },
905+
room.roomId,
906+
);
904907
await manager.onRTCSessionMemberUpdate([membership]);
905908
await manager.updateCallIntent("video");
906909
expect(client.sendStateEvent).toHaveBeenCalledTimes(2);
@@ -914,7 +917,7 @@ describe("MembershipManager", () => {
914917
manager.join([]);
915918
expect(manager.isActivated()).toEqual(true);
916919
const membership = mockCallMembership(
917-
{ ...membershipTemplate, "user_id": client.getUserId()!, "m.call.intent": "video" },
920+
{ ...sessionMembershipTemplate, "user_id": client.getUserId()!, "m.call.intent": "video" },
918921
room.roomId,
919922
);
920923
await manager.onRTCSessionMemberUpdate([membership]);
@@ -927,7 +930,7 @@ describe("MembershipManager", () => {
927930
it("Should prefix log with MembershipManager used", async () => {
928931
const spy = jest.spyOn(console, "error");
929932
const client = makeMockClient("@alice:example.org", "AAAAAAA");
930-
const room = makeMockRoom([membershipTemplate]);
933+
const room = makeMockRoom([sessionMembershipTemplate]);
931934

932935
const membershipManager = new MembershipManager(undefined, room, client, callSession);
933936

spec/unit/matrixrtc/RTCEncryptionManager.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { RTCEncryptionManager } from "../../../src/matrixrtc/RTCEncryptionManage
2020
import { type CallMembership, type Statistics } from "../../../src/matrixrtc";
2121
import { type ToDeviceKeyTransport } from "../../../src/matrixrtc/ToDeviceKeyTransport.ts";
2222
import { KeyTransportEvents, type KeyTransportEventsHandlerMap } from "../../../src/matrixrtc/IKeyTransport.ts";
23-
import { membershipTemplate, mockCallMembership } from "./mocks.ts";
23+
import { sessionMembershipTemplate, mockCallMembership } from "./mocks.ts";
2424
import { decodeBase64, TypedEventEmitter } from "../../../src";
2525
import { RoomAndToDeviceTransport } from "../../../src/matrixrtc/RoomAndToDeviceKeyTransport.ts";
2626
import { type RoomKeyTransport } from "../../../src/matrixrtc/RoomKeyTransport.ts";
@@ -864,7 +864,7 @@ describe("RTCEncryptionManager", () => {
864864

865865
function aCallMembership(userId: string, deviceId: string, ts: number = 1000): CallMembership {
866866
return mockCallMembership(
867-
{ ...membershipTemplate, user_id: userId, device_id: deviceId, created_ts: ts },
867+
{ ...sessionMembershipTemplate, user_id: userId, device_id: deviceId, created_ts: ts },
868868
"!room:id",
869869
);
870870
}

spec/unit/matrixrtc/RoomKeyTransport.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
import { makeMockEvent, makeMockRoom, membershipTemplate, makeKey } from "./mocks";
17+
import { makeMockEvent, makeMockRoom, sessionMembershipTemplate, makeKey } from "./mocks";
1818
import { RoomKeyTransport } from "../../../src/matrixrtc/RoomKeyTransport";
1919
import { KeyTransportEvents } from "../../../src/matrixrtc/IKeyTransport";
2020
import { EventType, MatrixClient, RoomEvent } from "../../../src";
@@ -48,7 +48,7 @@ describe("RoomKeyTransport", () => {
4848
roomEventEncryptionKeysReceivedTotalAge: 0,
4949
},
5050
};
51-
room = makeMockRoom([membershipTemplate]);
51+
room = makeMockRoom([sessionMembershipTemplate]);
5252
client = new MatrixClient({ baseUrl: "base_url" });
5353
await client.matrixRTC.start();
5454
transport = new RoomKeyTransport(room, client, statistics, {

0 commit comments

Comments
 (0)