1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-12-04 05:02:41 +03:00

fix mocking issues

Signed-off-by: Timo K <toger5@hotmail.de>
This commit is contained in:
Timo K
2025-10-07 20:10:04 +02:00
parent 3c2f9b48b0
commit 9946143014
2 changed files with 15 additions and 8 deletions

View File

@@ -30,7 +30,6 @@ import { secureRandomString } from "../../../src/randomstring";
import { import {
makeMockEvent, makeMockEvent,
makeMockRoom, makeMockRoom,
sessionMembershipTemplate as membershipTemplate,
makeKey, makeKey,
type MembershipData, type MembershipData,
mockRoomState, mockRoomState,
@@ -46,6 +45,7 @@ const textEncoder = new TextEncoder();
const callSession = { id: "", application: "m.call" }; const callSession = { id: "", application: "m.call" };
describe("MatrixRTCSession", () => { describe("MatrixRTCSession", () => {
const membershipTemplate = sessionMembershipTemplate;
let client: MatrixClient; let client: MatrixClient;
let sess: MatrixRTCSession | undefined; let sess: MatrixRTCSession | undefined;
@@ -67,7 +67,6 @@ describe("MatrixRTCSession", () => {
}); });
describe("roomSessionForRoom", () => { describe("roomSessionForRoom", () => {
const membershipTemplate = sessionMembershipTemplate;
it("creates a room-scoped session from room state", async () => { it("creates a room-scoped session from room state", async () => {
const mockRoom = makeMockRoom([membershipTemplate]); const mockRoom = makeMockRoom([membershipTemplate]);
@@ -412,6 +411,7 @@ describe("MatrixRTCSession", () => {
expect(client.sendEvent).toHaveBeenCalledWith(mockRoom!.roomId, EventType.RTCNotification, { expect(client.sendEvent).toHaveBeenCalledWith(mockRoom!.roomId, EventType.RTCNotification, {
"m.mentions": { user_ids: [], room: true }, "m.mentions": { user_ids: [], room: true },
"notification_type": "ring", "notification_type": "ring",
"m.call.intent": "voice",
"m.relates_to": { "m.relates_to": {
event_id: ownMembershipId, event_id: ownMembershipId,
rel_type: "m.reference", rel_type: "m.reference",
@@ -431,6 +431,7 @@ describe("MatrixRTCSession", () => {
expect(didSendEventFn).toHaveBeenCalledWith( expect(didSendEventFn).toHaveBeenCalledWith(
{ {
"event_id": "new-evt", "event_id": "new-evt",
"m.call.intent": "voice",
"lifetime": 30000, "lifetime": 30000,
"m.mentions": { room: true, user_ids: [] }, "m.mentions": { room: true, user_ids: [] },
"m.relates_to": { "m.relates_to": {
@@ -738,11 +739,17 @@ describe("MatrixRTCSession", () => {
it("re-sends key if a new member joins even if a key rotation is in progress", async () => { it("re-sends key if a new member joins even if a key rotation is in progress", async () => {
jest.useFakeTimers(); jest.useFakeTimers();
try { try {
const ownMembership = {
...membershipTemplate,
user_id: client.getUserId()!,
device_id: client.getDeviceId()!,
};
// session with two members // session with two members
const member2 = Object.assign({}, membershipTemplate, { const member2 = Object.assign({}, ownMembership, {
device_id: "BBBBBBB", device_id: "BBBBBBB",
user_id: "@bob:example.org",
}); });
const mockRoom = makeMockRoom([membershipTemplate, member2]); const mockRoom = makeMockRoom([ownMembership, member2]);
sess = await MatrixRTCSession.sessionForRoom(client, mockRoom, callSession); sess = await MatrixRTCSession.sessionForRoom(client, mockRoom, callSession);
// joining will trigger an initial key send // joining will trigger an initial key send
@@ -758,14 +765,14 @@ describe("MatrixRTCSession", () => {
expect(sess!.statistics.counters.roomEventEncryptionKeysSent).toEqual(1); expect(sess!.statistics.counters.roomEventEncryptionKeysSent).toEqual(1);
// member2 leaves triggering key rotation // member2 leaves triggering key rotation
mockRoomState(mockRoom, [membershipTemplate]); mockRoomState(mockRoom, [ownMembership]);
await sess.onRTCSessionMemberUpdate(); await sess.onRTCSessionMemberUpdate();
// member2 re-joins which should trigger an immediate re-send // member2 re-joins which should trigger an immediate re-send
const keysSentPromise2 = new Promise<EncryptionKeysEventContent>((resolve) => { const keysSentPromise2 = new Promise<EncryptionKeysEventContent>((resolve) => {
sendEventMock.mockImplementation((_roomId, _evType, payload) => resolve(payload)); sendEventMock.mockImplementation((_roomId, _evType, payload) => resolve(payload));
}); });
mockRoomState(mockRoom, [membershipTemplate, member2]); mockRoomState(mockRoom, [ownMembership, member2]);
await sess.onRTCSessionMemberUpdate(); await sess.onRTCSessionMemberUpdate();
// but, that immediate resend is throttled so we need to wait a bit // but, that immediate resend is throttled so we need to wait a bit
jest.advanceTimersByTime(1000); jest.advanceTimersByTime(1000);

View File

@@ -145,7 +145,7 @@ export function makeMockEvent(
timestamp?: number, timestamp?: number,
): MatrixEvent { ): MatrixEvent {
return new MatrixEvent({ return new MatrixEvent({
event_id: "mock_event_id", event_id: secureRandomString(8),
sender, sender,
type, type,
content, content,
@@ -155,7 +155,7 @@ export function makeMockEvent(
} }
export function mockRTCEvent({ user_id: sender, ...membershipData }: MembershipData, roomId: string): MatrixEvent { export function mockRTCEvent({ user_id: sender, ...membershipData }: MembershipData, roomId: string): MatrixEvent {
return makeMockEvent(EventType.GroupCallMemberPrefix, sender, roomId, membershipData); return makeMockEvent(EventType.GroupCallMemberPrefix, sender, roomId, membershipData, Date.now());
} }
export function mockCallMembership(membershipData: MembershipData, roomId: string): CallMembership { export function mockCallMembership(membershipData: MembershipData, roomId: string): CallMembership {