Skip to content

Commit 00579cd

Browse files
committed
move and fix room transport tests
1 parent aaf7121 commit 00579cd

File tree

4 files changed

+168
-142
lines changed

4 files changed

+168
-142
lines changed

spec/unit/matrixrtc/MatrixRTCSession.spec.ts

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ describe("MatrixRTCSession", () => {
3535
client.getUserId = jest.fn().mockReturnValue("@alice:example.org");
3636
client.getDeviceId = jest.fn().mockReturnValue("AAAAAAA");
3737
client.sendEvent = jest.fn().mockResolvedValue({ event_id: "success" });
38-
client.decryptEventIfNeeded = jest.fn().mockImplementation(() => {
39-
console.log("Fake decryptEventIfNeeded");
40-
});
38+
client.decryptEventIfNeeded = jest.fn();
4139
});
4240

4341
afterEach(async () => {
@@ -994,7 +992,7 @@ describe("MatrixRTCSession", () => {
994992
const mockRoom = makeMockRoom([membershipTemplate]);
995993
sess = MatrixRTCSession.roomSessionForRoom(client, mockRoom);
996994
sess!.joinRoomSession([mockFocus], mockFocus, { manageMediaKeys: true });
997-
mockRoom.emitTimelineEvent_tests(
995+
mockRoom.emitTimelineEvent(
998996
makeMockEvent("io.element.call.encryption_keys", "@bob:example.org", "1234roomId", {
999997
device_id: "bobsphone",
1000998
call_id: "",
@@ -1024,7 +1022,7 @@ describe("MatrixRTCSession", () => {
10241022
const mockRoom = makeMockRoom([membershipTemplate]);
10251023
sess = MatrixRTCSession.roomSessionForRoom(client, mockRoom);
10261024
sess!.joinRoomSession([mockFocus], mockFocus, { manageMediaKeys: true });
1027-
mockRoom.emitTimelineEvent_tests(
1025+
mockRoom.emitTimelineEvent(
10281026
makeMockEvent("io.element.call.encryption_keys", "@bob:example.org", "1234roomId", {
10291027
device_id: "bobsphone",
10301028
call_id: "",
@@ -1055,7 +1053,7 @@ describe("MatrixRTCSession", () => {
10551053
const mockRoom = makeMockRoom([membershipTemplate]);
10561054
sess = MatrixRTCSession.roomSessionForRoom(client, mockRoom);
10571055
sess!.joinRoomSession([mockFocus], mockFocus, { manageMediaKeys: true });
1058-
mockRoom.emitTimelineEvent_tests(
1056+
mockRoom.emitTimelineEvent(
10591057
makeMockEvent("io.element.call.encryption_keys", "@bob:example.org", "1234roomId", {
10601058
device_id: "bobsphone",
10611059
call_id: "",
@@ -1081,7 +1079,7 @@ describe("MatrixRTCSession", () => {
10811079

10821080
expect(sess!.statistics.counters.roomEventEncryptionKeysReceived).toEqual(1);
10831081

1084-
mockRoom.emitTimelineEvent_tests(
1082+
mockRoom.emitTimelineEvent(
10851083
makeMockEvent("io.element.call.encryption_keys", "@bob:example.org", "1234roomId", {
10861084
device_id: "bobsphone",
10871085
call_id: "",
@@ -1116,7 +1114,7 @@ describe("MatrixRTCSession", () => {
11161114
const mockRoom = makeMockRoom([membershipTemplate]);
11171115
sess = MatrixRTCSession.roomSessionForRoom(client, mockRoom);
11181116
sess!.joinRoomSession([mockFocus], mockFocus, { manageMediaKeys: true });
1119-
mockRoom.emitTimelineEvent_tests(
1117+
mockRoom.emitTimelineEvent(
11201118
makeMockEvent(
11211119
"io.element.call.encryption_keys",
11221120
"@bob:example.org",
@@ -1135,7 +1133,7 @@ describe("MatrixRTCSession", () => {
11351133
),
11361134
);
11371135

1138-
mockRoom.emitTimelineEvent_tests(
1136+
mockRoom.emitTimelineEvent(
11391137
makeMockEvent(
11401138
"io.element.call.encryption_keys",
11411139
"@bob:example.org",
@@ -1153,7 +1151,7 @@ describe("MatrixRTCSession", () => {
11531151
2000,
11541152
),
11551153
);
1156-
mockRoom.emitTimelineEvent_tests(
1154+
mockRoom.emitTimelineEvent(
11571155
makeMockEvent(
11581156
"io.element.call.encryption_keys",
11591157
"@bob:example.org",
@@ -1190,7 +1188,7 @@ describe("MatrixRTCSession", () => {
11901188
const mockRoom = makeMockRoom([membershipTemplate]);
11911189
sess = MatrixRTCSession.roomSessionForRoom(client, mockRoom);
11921190
sess!.joinRoomSession([mockFocus], mockFocus, { manageMediaKeys: true });
1193-
mockRoom.emitTimelineEvent_tests(
1191+
mockRoom.emitTimelineEvent(
11941192
makeMockEvent(
11951193
"io.element.call.encryption_keys",
11961194
"@bob:example.org",
@@ -1209,7 +1207,7 @@ describe("MatrixRTCSession", () => {
12091207
),
12101208
);
12111209

1212-
mockRoom.emitTimelineEvent_tests(
1210+
mockRoom.emitTimelineEvent(
12131211
makeMockEvent(
12141212
"io.element.call.encryption_keys",
12151213
"@bob:example.org",
@@ -1245,7 +1243,7 @@ describe("MatrixRTCSession", () => {
12451243
sess = MatrixRTCSession.roomSessionForRoom(client, mockRoom);
12461244

12471245
sess!.joinRoomSession([mockFocus], mockFocus, { manageMediaKeys: true });
1248-
mockRoom.emitTimelineEvent_tests(
1246+
mockRoom.emitTimelineEvent(
12491247
makeMockEvent("io.element.call.encryption_keys", client.getUserId()!, "1234roomId", {
12501248
device_id: client.getDeviceId(),
12511249
call_id: "",
@@ -1275,7 +1273,7 @@ describe("MatrixRTCSession", () => {
12751273
// defaults to getTs()
12761274
jest.setSystemTime(1000);
12771275
sess!.joinRoomSession([mockFocus], mockFocus, { manageMediaKeys: true });
1278-
mockRoom.emitTimelineEvent_tests(
1276+
mockRoom.emitTimelineEvent(
12791277
makeMockEvent(
12801278
"io.element.call.encryption_keys",
12811279
"@bob:example.org",
@@ -1299,7 +1297,7 @@ describe("MatrixRTCSession", () => {
12991297

13001298
jest.setSystemTime(2000);
13011299

1302-
mockRoom.emitTimelineEvent_tests(
1300+
mockRoom.emitTimelineEvent(
13031301
makeMockEvent("io.element.call.encryption_keys", "@bob:example.org", "1234roomId", {
13041302
device_id: "bobsphone",
13051303
call_id: "",
@@ -1317,7 +1315,7 @@ describe("MatrixRTCSession", () => {
13171315
expect(sess!.statistics.totals.roomEventEncryptionKeysReceivedTotalAge).toEqual(3000);
13181316

13191317
jest.setSystemTime(3000);
1320-
mockRoom.emitTimelineEvent_tests(
1318+
mockRoom.emitTimelineEvent(
13211319
makeMockEvent("io.element.call.encryption_keys", "@bob:example.org", "1234roomId", {
13221320
device_id: "bobsphone",
13231321
call_id: "",

spec/unit/matrixrtc/MatrixRTCSessionManager.spec.ts

Lines changed: 1 addition & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,7 @@ limitations under the License.
1616

1717
import { type Mock } from "jest-mock";
1818

19-
import {
20-
ClientEvent,
21-
EventTimeline,
22-
EventType,
23-
type IRoomTimelineData,
24-
MatrixClient,
25-
type MatrixEvent,
26-
RoomEvent,
27-
} from "../../../src";
19+
import { ClientEvent, EventTimeline, MatrixClient } from "../../../src";
2820
import { RoomStateEvent } from "../../../src/models/room-state";
2921
import { MatrixRTCSessionManagerEvents } from "../../../src/matrixrtc/MatrixRTCSessionManager";
3022
import { makeMockRoom, makeMockRoomState, membershipTemplate } from "./mocks";
@@ -77,117 +69,4 @@ describe("MatrixRTCSessionManager", () => {
7769

7870
expect(onEnded).toHaveBeenCalledWith(room1.roomId, client.matrixRTC.getActiveRoomSession(room1));
7971
});
80-
81-
it("Calls onCallEncryption on encryption keys event", async () => {
82-
const room1 = makeMockRoom([membershipTemplate]);
83-
jest.spyOn(client, "getRooms").mockReturnValue([room1]);
84-
jest.spyOn(client, "getRoom").mockReturnValue(room1);
85-
86-
client.emit(ClientEvent.Room, room1);
87-
const onCallEncryptionMock = jest.fn();
88-
client.matrixRTC.getRoomSession(room1).onCallEncryption = onCallEncryptionMock;
89-
client.decryptEventIfNeeded = () => Promise.resolve();
90-
const timelineEvent = {
91-
getType: jest.fn().mockReturnValue(EventType.CallEncryptionKeysPrefix),
92-
getContent: jest.fn().mockReturnValue({}),
93-
getSender: jest.fn().mockReturnValue("@mock:user.example"),
94-
getRoomId: jest.fn().mockReturnValue("!room:id"),
95-
isDecryptionFailure: jest.fn().mockReturnValue(false),
96-
sender: {
97-
userId: "@mock:user.example",
98-
},
99-
} as unknown as MatrixEvent;
100-
client.emit(RoomEvent.Timeline, timelineEvent, undefined, undefined, false, {} as IRoomTimelineData);
101-
await new Promise(process.nextTick);
102-
expect(onCallEncryptionMock).toHaveBeenCalled();
103-
});
104-
105-
describe("event decryption", () => {
106-
it("Retries decryption and processes success", async () => {
107-
try {
108-
jest.useFakeTimers();
109-
const room1 = makeMockRoom([membershipTemplate]);
110-
jest.spyOn(client, "getRooms").mockReturnValue([room1]);
111-
jest.spyOn(client, "getRoom").mockReturnValue(room1);
112-
113-
client.emit(ClientEvent.Room, room1);
114-
const onCallEncryptionMock = jest.fn();
115-
client.matrixRTC.getRoomSession(room1).onCallEncryption = onCallEncryptionMock;
116-
let isDecryptionFailure = true;
117-
client.decryptEventIfNeeded = jest
118-
.fn()
119-
.mockReturnValueOnce(Promise.resolve())
120-
.mockImplementation(() => {
121-
isDecryptionFailure = false;
122-
return Promise.resolve();
123-
});
124-
const timelineEvent = {
125-
getType: jest.fn().mockReturnValue(EventType.CallEncryptionKeysPrefix),
126-
getContent: jest.fn().mockReturnValue({}),
127-
getSender: jest.fn().mockReturnValue("@mock:user.example"),
128-
getRoomId: jest.fn().mockReturnValue("!room:id"),
129-
isDecryptionFailure: jest.fn().mockImplementation(() => isDecryptionFailure),
130-
getId: jest.fn().mockReturnValue("event_id"),
131-
sender: {
132-
userId: "@mock:user.example",
133-
},
134-
} as unknown as MatrixEvent;
135-
client.emit(RoomEvent.Timeline, timelineEvent, undefined, undefined, false, {} as IRoomTimelineData);
136-
137-
expect(client.decryptEventIfNeeded).toHaveBeenCalledTimes(1);
138-
expect(onCallEncryptionMock).toHaveBeenCalledTimes(0);
139-
140-
// should retry after one second:
141-
await jest.advanceTimersByTimeAsync(1500);
142-
143-
expect(client.decryptEventIfNeeded).toHaveBeenCalledTimes(2);
144-
expect(onCallEncryptionMock).toHaveBeenCalledTimes(1);
145-
} finally {
146-
jest.useRealTimers();
147-
}
148-
});
149-
150-
it("Retries decryption and processes failure", async () => {
151-
try {
152-
jest.useFakeTimers();
153-
const room1 = makeMockRoom([membershipTemplate]);
154-
jest.spyOn(client, "getRooms").mockReturnValue([room1]);
155-
jest.spyOn(client, "getRoom").mockReturnValue(room1);
156-
157-
client.emit(ClientEvent.Room, room1);
158-
const onCallEncryptionMock = jest.fn();
159-
client.matrixRTC.getRoomSession(room1).onCallEncryption = onCallEncryptionMock;
160-
client.decryptEventIfNeeded = jest.fn().mockReturnValue(Promise.resolve());
161-
const timelineEvent = {
162-
getType: jest.fn().mockReturnValue(EventType.CallEncryptionKeysPrefix),
163-
getContent: jest.fn().mockReturnValue({}),
164-
getSender: jest.fn().mockReturnValue("@mock:user.example"),
165-
getRoomId: jest.fn().mockReturnValue("!room:id"),
166-
isDecryptionFailure: jest.fn().mockReturnValue(true), // always fail
167-
getId: jest.fn().mockReturnValue("event_id"),
168-
sender: {
169-
userId: "@mock:user.example",
170-
},
171-
} as unknown as MatrixEvent;
172-
client.emit(RoomEvent.Timeline, timelineEvent, undefined, undefined, false, {} as IRoomTimelineData);
173-
174-
expect(client.decryptEventIfNeeded).toHaveBeenCalledTimes(1);
175-
expect(onCallEncryptionMock).toHaveBeenCalledTimes(0);
176-
177-
// should retry after one second:
178-
await jest.advanceTimersByTimeAsync(1500);
179-
180-
expect(client.decryptEventIfNeeded).toHaveBeenCalledTimes(2);
181-
expect(onCallEncryptionMock).toHaveBeenCalledTimes(0);
182-
183-
// doesn't retry again:
184-
await jest.advanceTimersByTimeAsync(1500);
185-
186-
expect(client.decryptEventIfNeeded).toHaveBeenCalledTimes(2);
187-
expect(onCallEncryptionMock).toHaveBeenCalledTimes(0);
188-
} finally {
189-
jest.useRealTimers();
190-
}
191-
});
192-
});
19372
});

0 commit comments

Comments
 (0)