improve widget tests

(this we might want to cherry pick in its own PR)
This commit is contained in:
Timo K
2026-01-25 14:24:31 +01:00
parent 15c39372f4
commit 31823dbd53
2 changed files with 29 additions and 51 deletions

View File

@@ -11,7 +11,6 @@ import { createRoomWidgetClient, EventType } from "matrix-js-sdk";
import { getUrlParams } from "./UrlParams"; import { getUrlParams } from "./UrlParams";
import { initializeWidget, widget } from "./widget"; import { initializeWidget, widget } from "./widget";
import { Config } from "./config/Config"; import { Config } from "./config/Config";
import { ElementCallReactionEventType } from "./reactions";
vi.mock("matrix-js-sdk", { spy: true }); vi.mock("matrix-js-sdk", { spy: true });
const createRoomWidgetClientSpy = vi.mocked(createRoomWidgetClient); const createRoomWidgetClientSpy = vi.mocked(createRoomWidgetClient);
@@ -35,7 +34,7 @@ vi.mock("./UrlParams", () => ({
})), })),
})); }));
initializeWidget(); initializeWidget("ANYRTCAPP");
describe("widget", () => { describe("widget", () => {
beforeAll(() => {}); beforeAll(() => {});
@@ -52,48 +51,39 @@ describe("widget", () => {
expect(widget).toBeDefined(); expect(widget).toBeDefined();
expect(configInitSpy).toHaveBeenCalled(); expect(configInitSpy).toHaveBeenCalled();
const sendEvent = [ const sendEvent = [
EventType.CallNotify, // Sent as a deprecated fallback "org.matrix.msc4075.call.notify", // Sent as a deprecated fallback
EventType.RTCNotification, "org.matrix.msc4075.rtc.notification",
]; ];
const sendRecvEvent = [ const sendRecvEvent = [
"org.matrix.rageshake_request", "org.matrix.rageshake_request",
EventType.CallEncryptionKeysPrefix, "io.element.call.encryption_keys",
EventType.Reaction, "m.reaction",
EventType.RoomRedaction, "m.room.redaction",
ElementCallReactionEventType, "io.element.call.reaction",
EventType.RTCDecline, "org.matrix.msc4310.rtc.decline",
EventType.RTCMembership, "org.matrix.msc4143.rtc.member",
]; ];
const sendState = [ const sendState = [
"myYser", // Legacy call membership events { eventType: "org.matrix.msc3401.call.member", stateKey: "myYser" }, // Legacy call membership events
`_myYser_AAAAA_m.call`, // Session membership events {
`myYser_AAAAA_m.call`, // The above with no leading underscore, for room versions whose auth rules allow it eventType: "org.matrix.msc3401.call.member",
].map((stateKey) => ({ stateKey: `_myYser_AAAAA_ANYRTCAPP`,
eventType: EventType.GroupCallMemberPrefix, }, // Session membership events
stateKey, {
})); eventType: "org.matrix.msc3401.call.member",
stateKey: `myYser_AAAAA_ANYRTCAPP`,
}, // The above with no leading underscore, for room versions whose auth rules allow it
];
const receiveState = [ const receiveState = [
{ eventType: EventType.RoomCreate }, { eventType: "m.room.create" },
{ eventType: EventType.RoomName }, { eventType: "m.room.name" },
{ eventType: EventType.RoomMember }, { eventType: "m.room.member" },
{ eventType: EventType.RoomEncryption }, { eventType: "m.room.encryption" },
{ eventType: EventType.GroupCallMemberPrefix }, { eventType: "org.matrix.msc3401.call.member" },
]; ];
const sendRecvToDevice = [ const sendRecvToDevice = ["io.element.call.encryption_keys"];
EventType.CallInvite,
EventType.CallCandidates,
EventType.CallAnswer,
EventType.CallHangup,
EventType.CallReject,
EventType.CallSelectAnswer,
EventType.CallNegotiate,
EventType.CallSDPStreamMetadataChanged,
EventType.CallSDPStreamMetadataChangedPrefix,
EventType.CallReplaces,
EventType.CallEncryptionKeysPrefix,
];
expect(createRoomWidgetClientSpy.mock.calls[0][1]).toStrictEqual({ expect(createRoomWidgetClientSpy.mock.calls[0][1]).toStrictEqual({
sendEvent: [...sendEvent, ...sendRecvEvent], sendEvent: [...sendEvent, ...sendRecvEvent],

View File

@@ -68,7 +68,7 @@ export let widget: WidgetHelpers | null;
*/ */
// this needs to be a seperate call and cannot be done on import to allow us to spy on methods in here before // this needs to be a seperate call and cannot be done on import to allow us to spy on methods in here before
// execution. // execution.
export const initializeWidget = (): void => { export const initializeWidget = (rtcApplication: string = "m.call"): void => {
try { try {
const { const {
widgetId, widgetId,
@@ -128,8 +128,8 @@ export const initializeWidget = (): void => {
const sendState = [ const sendState = [
userId, // Legacy call membership events userId, // Legacy call membership events
`_${userId}_${deviceId}_m.call`, // Session membership events `_${userId}_${deviceId}_${rtcApplication}`, // Session membership events
`${userId}_${deviceId}_m.call`, // The above with no leading underscore, for room versions whose auth rules allow it `${userId}_${deviceId}_${rtcApplication}`, // The above with no leading underscore, for room versions whose auth rules allow it
].map((stateKey) => ({ ].map((stateKey) => ({
eventType: EventType.GroupCallMemberPrefix, eventType: EventType.GroupCallMemberPrefix,
stateKey, stateKey,
@@ -142,19 +142,7 @@ export const initializeWidget = (): void => {
{ eventType: EventType.GroupCallMemberPrefix }, { eventType: EventType.GroupCallMemberPrefix },
]; ];
const sendRecvToDevice = [ const sendRecvToDevice = [EventType.CallEncryptionKeysPrefix];
EventType.CallInvite,
EventType.CallCandidates,
EventType.CallAnswer,
EventType.CallHangup,
EventType.CallReject,
EventType.CallSelectAnswer,
EventType.CallNegotiate,
EventType.CallSDPStreamMetadataChanged,
EventType.CallSDPStreamMetadataChangedPrefix,
EventType.CallReplaces,
EventType.CallEncryptionKeysPrefix,
];
const client = createRoomWidgetClient( const client = createRoomWidgetClient(
api, api,