fix tests and remove duplicated mocks.

This commit is contained in:
Timo K
2026-01-07 13:26:37 +01:00
parent 556a87d141
commit 83d04ac122
9 changed files with 103 additions and 112 deletions

View File

@@ -17,14 +17,16 @@ export const localRtcMemberDevice2 = mockRtcMembership(
"2222",
);
export const local = mockMatrixRoomMember(localRtcMember);
// export const localParticipant = mockLocalParticipant({ identity: "" });
export const localId = `${local.userId}:${localRtcMember.deviceId}`;
export const aliceRtcMember = mockRtcMembership("@alice:example.org", "AAAA");
export const aliceDeviceId = "AAAA";
export const aliceUserId = "@alice:example.org";
export const aliceId = `${aliceUserId}:${aliceDeviceId}`;
export const aliceRtcMember = mockRtcMembership(aliceUserId, aliceDeviceId);
export const alice = mockMatrixRoomMember(aliceRtcMember, {
rawDisplayName: "Alice",
});
export const aliceId = `${alice.userId}:${aliceRtcMember.deviceId}`;
export const aliceParticipant = mockRemoteParticipant({ identity: aliceId });
export const aliceDoppelgangerRtcMember = mockRtcMembership(
@@ -38,11 +40,13 @@ export const aliceDoppelganger = mockMatrixRoomMember(
},
);
export const bobRtcMember = mockRtcMembership("@bob:example.org", "BBBB");
export const bobDeviceId = "BBBB";
export const bobUserId = "@bob:example.org";
export const bobId = `${bobUserId}:${bobDeviceId}`;
export const bobRtcMember = mockRtcMembership(bobUserId, bobDeviceId);
export const bob = mockMatrixRoomMember(bobRtcMember, {
rawDisplayName: "Bob",
});
export const bobId = `${bob.userId}:${bobRtcMember.deviceId}`;
export const bobZeroWidthSpaceRtcMember = mockRtcMembership(
"@bob2:example.org",

View File

@@ -203,40 +203,30 @@ export const exampleTransport: LivekitTransport = {
livekit_alias: "!alias:example.org",
};
export function mockCallMembership(
userId: string,
deviceId: string,
transport?: Transport,
): CallMembership {
const t = transport ?? transportForUser(userId);
return {
userId: userId,
deviceId: deviceId,
getTransport: vi.fn().mockReturnValue(t),
transports: [t],
} as unknown as CallMembership;
}
function transportForUser(userId: string): Transport {
const domain = userId.split(":")[1];
return {
type: "livekit",
livekit_service_url: `https://lk.${domain}`,
livekit_alias: `!alias:${domain}`,
};
}
export function mockRtcMembership(
user: string | RoomMember,
deviceId: string,
callId = "",
fociPreferred: Transport[] = [exampleTransport],
focusActive: LivekitFocusSelection = {
type: "livekit",
focus_selection: "oldest_membership",
customOverwrites?: {
rtcBackendIdentity?: string;
callId?: string;
fociPreferred?: Transport[];
focusActive?: LivekitFocusSelection;
membership?: Partial<SessionMembershipData>;
},
membership: Partial<SessionMembershipData> = {},
): CallMembership {
// setup defaults based on overwrites and fallback values.
const { rtcBackendIdentity, callId, fociPreferred, focusActive, membership } =
{
fociPreferred: [exampleTransport],
focusActive: {
type: "livekit" as const,
focus_selection: "oldest_membership" as const,
},
callId: "",
membership: {},
...customOverwrites,
};
const data: SessionMembershipData = {
application: "m.call",
call_id: callId,
@@ -245,15 +235,21 @@ export function mockRtcMembership(
focus_active: focusActive,
...membership,
};
const userId = typeof user === "string" ? user : user.userId;
const event = new MatrixEvent({
sender: typeof user === "string" ? user : user.userId,
sender: userId,
event_id: `$-ev-${randomUUID()}:example.org`,
content: data,
});
const membershipData = CallMembership.membershipDataFromMatrixEvent(event);
const cms = new CallMembership(event, membershipData, "xx");
const cms = new CallMembership(
event,
membershipData,
rtcBackendIdentity ?? `${userId}:${deviceId}`,
);
vi.mocked(cms).getTransport = vi.fn().mockReturnValue(fociPreferred[0]);
return cms;
}
@@ -486,7 +482,7 @@ export class MockRTCSession extends TypedEventEmitter<
if (value !== prev) this.emit(MembershipManagerEvent.ProbablyLeft, value);
}
public async joinRoomSession(): Promise<void> {
public async joinRTCSession(): Promise<void> {
return Promise.resolve();
}
}
@@ -535,27 +531,3 @@ export function mockMuteStates(
const observableScope = new ObservableScope();
return new MuteStates(observableScope, mockMediaDevices({}), joined$);
}
export const mockComputeLivekitParticipantIdentity$ = (
membership: CallMembershipIdentityParts,
kind: "rtc" | "session",
): Observable<string> => {
function sha256(commitmentStr: string): string {
return encodeUnpaddedBase64(
createHash("sha256").update(commitmentStr, "utf8").digest(),
);
}
let hash;
switch (kind) {
case "rtc": {
hash = sha256(
`${membership.userId}|${membership.deviceId}|${membership.memberId}`,
);
break;
}
case "session":
default:
hash = `${membership.userId}:${membership.deviceId}`;
}
return of(hash);
};