This commit is contained in:
Half-Shot
2025-12-16 11:14:56 +00:00
parent bf30495823
commit b5233aa843
2 changed files with 34 additions and 20 deletions

View File

@@ -30,6 +30,13 @@ import * as openIDSFU from "../../../livekit/openIDSFU";
import { customLivekitUrl } from "../../../settings/settings"; import { customLivekitUrl } from "../../../settings/settings";
describe("LocalTransport", () => { describe("LocalTransport", () => {
const openIdResponse: openIDSFU.SFUConfig = {
url: "https://lk.example.org",
jwt: "jwt",
livekitAlias: "!example_room_id",
livekitIdentity: "@lk_user:ABCDEF",
};
let scope: ObservableScope; let scope: ObservableScope;
beforeEach(() => { beforeEach(() => {
scope = new ObservableScope(); scope = new ObservableScope();
@@ -53,7 +60,7 @@ describe("LocalTransport", () => {
const errors: Error[] = []; const errors: Error[] = [];
const localTransport$ = createLocalTransport$({ const localTransport$ = createLocalTransport$({
scope, scope,
roomId: "!room:example.org", roomId: "!example_room_id",
useOldestMember$: constant(false), useOldestMember$: constant(false),
memberships$: constant(new Epoch<CallMembership[]>([])), memberships$: constant(new Epoch<CallMembership[]>([])),
client: { client: {
@@ -92,7 +99,7 @@ describe("LocalTransport", () => {
const localTransport$ = createLocalTransport$({ const localTransport$ = createLocalTransport$({
scope, scope,
roomId: "!room:example.org", roomId: "!example_room_id",
useOldestMember$: constant(true), useOldestMember$: constant(true),
memberships$, memberships$,
client: { client: {
@@ -104,12 +111,12 @@ describe("LocalTransport", () => {
}, },
}); });
openIdResolver.resolve?.({ url: "https://lk.example.org", jwt: "jwt" }); openIdResolver.resolve?.(openIdResponse);
expect(localTransport$.value).toBe(null); expect(localTransport$.value).toBe(null);
await flushPromises(); await flushPromises();
// final // final
expect(localTransport$.value).toStrictEqual({ expect(localTransport$.value).toStrictEqual({
livekit_alias: "!room:example.org", livekit_alias: "!example_room_id",
livekit_service_url: "https://lk.example.org", livekit_service_url: "https://lk.example.org",
type: "livekit", type: "livekit",
}); });
@@ -127,7 +134,7 @@ describe("LocalTransport", () => {
customLivekitUrl.setValue(customLivekitUrl.defaultValue); customLivekitUrl.setValue(customLivekitUrl.defaultValue);
localTransportOpts = { localTransportOpts = {
scope, scope,
roomId: "!room:example.org", roomId: "!example_room_id",
useOldestMember$: constant(false), useOldestMember$: constant(false),
memberships$: constant(new Epoch<CallMembership[]>([])), memberships$: constant(new Epoch<CallMembership[]>([])),
client: { client: {
@@ -153,11 +160,11 @@ describe("LocalTransport", () => {
livekit: { livekit_service_url: "https://lk.example.org" }, livekit: { livekit_service_url: "https://lk.example.org" },
}); });
const localTransport$ = createLocalTransport$(localTransportOpts); const localTransport$ = createLocalTransport$(localTransportOpts);
openIdResolver.resolve?.({ url: "https://lk.example.org", jwt: "jwt" }); openIdResolver.resolve?.(openIdResponse);
expect(localTransport$.value).toBe(null); expect(localTransport$.value).toBe(null);
await flushPromises(); await flushPromises();
expect(localTransport$.value).toStrictEqual({ expect(localTransport$.value).toStrictEqual({
livekit_alias: "!room:example.org", livekit_alias: "!example_room_id",
livekit_service_url: "https://lk.example.org", livekit_service_url: "https://lk.example.org",
type: "livekit", type: "livekit",
}); });
@@ -165,11 +172,11 @@ describe("LocalTransport", () => {
it("supports getting transport via user settings", async () => { it("supports getting transport via user settings", async () => {
customLivekitUrl.setValue("https://lk.example.org"); customLivekitUrl.setValue("https://lk.example.org");
const localTransport$ = createLocalTransport$(localTransportOpts); const localTransport$ = createLocalTransport$(localTransportOpts);
openIdResolver.resolve?.({ url: "https://lk.example.org", jwt: "jwt" }); openIdResolver.resolve?.(openIdResponse);
expect(localTransport$.value).toBe(null); expect(localTransport$.value).toBe(null);
await flushPromises(); await flushPromises();
expect(localTransport$.value).toStrictEqual({ expect(localTransport$.value).toStrictEqual({
livekit_alias: "!room:example.org", livekit_alias: "!example_room_id",
livekit_service_url: "https://lk.example.org", livekit_service_url: "https://lk.example.org",
type: "livekit", type: "livekit",
}); });
@@ -179,11 +186,11 @@ describe("LocalTransport", () => {
{ type: "livekit", livekit_service_url: "https://lk.example.org" }, { type: "livekit", livekit_service_url: "https://lk.example.org" },
]); ]);
const localTransport$ = createLocalTransport$(localTransportOpts); const localTransport$ = createLocalTransport$(localTransportOpts);
openIdResolver.resolve?.({ url: "https://lk.example.org", jwt: "jwt" }); openIdResolver.resolve?.(openIdResponse);
expect(localTransport$.value).toBe(null); expect(localTransport$.value).toBe(null);
await flushPromises(); await flushPromises();
expect(localTransport$.value).toStrictEqual({ expect(localTransport$.value).toStrictEqual({
livekit_alias: "!room:example.org", livekit_alias: "!example_room_id",
livekit_service_url: "https://lk.example.org", livekit_service_url: "https://lk.example.org",
type: "livekit", type: "livekit",
}); });
@@ -210,11 +217,11 @@ describe("LocalTransport", () => {
], ],
}); });
const localTransport$ = createLocalTransport$(localTransportOpts); const localTransport$ = createLocalTransport$(localTransportOpts);
openIdResolver.resolve?.({ url: "https://lk.example.org", jwt: "jwt" }); openIdResolver.resolve?.(openIdResponse);
expect(localTransport$.value).toBe(null); expect(localTransport$.value).toBe(null);
await flushPromises(); await flushPromises();
expect(localTransport$.value).toStrictEqual({ expect(localTransport$.value).toStrictEqual({
livekit_alias: "!room:example.org", livekit_alias: "!example_room_id",
livekit_service_url: "https://lk.example.org", livekit_service_url: "https://lk.example.org",
type: "livekit", type: "livekit",
}); });
@@ -240,7 +247,7 @@ describe("LocalTransport", () => {
it("throws if no options are available", async () => { it("throws if no options are available", async () => {
const localTransport$ = createLocalTransport$({ const localTransport$ = createLocalTransport$({
scope, scope,
roomId: "!room:example.org", roomId: "!example_room_id",
useOldestMember$: constant(false), useOldestMember$: constant(false),
memberships$: constant(new Epoch<CallMembership[]>([])), memberships$: constant(new Epoch<CallMembership[]>([])),
client: { client: {

View File

@@ -142,7 +142,6 @@ async function makeTransport(
urlFromDevSettings: string | null, urlFromDevSettings: string | null,
): Promise<LivekitTransport> { ): Promise<LivekitTransport> {
logger.trace("Searching for a preferred transport"); logger.trace("Searching for a preferred transport");
const livekitAlias = roomId;
// We will call `getSFUConfigWithOpenID` once per transport here as it's our // We will call `getSFUConfigWithOpenID` once per transport here as it's our
// only mechanism of valiation. This means we will also ask the // only mechanism of valiation. This means we will also ask the
@@ -157,11 +156,15 @@ async function makeTransport(
logger.info("Using LiveKit transport from dev tools: ", urlFromDevSettings); logger.info("Using LiveKit transport from dev tools: ", urlFromDevSettings);
// Validate that the SFU is up. Otherwise, we want to fail on this // Validate that the SFU is up. Otherwise, we want to fail on this
// as we don't permit other SFUs. // as we don't permit other SFUs.
await getSFUConfigWithOpenID(client, urlFromDevSettings, livekitAlias); const config = await getSFUConfigWithOpenID(
client,
urlFromDevSettings,
roomId,
);
return { return {
type: "livekit", type: "livekit",
livekit_service_url: urlFromDevSettings, livekit_service_url: urlFromDevSettings,
livekit_alias: livekitAlias, livekit_alias: config.livekitAlias,
}; };
} }
@@ -171,10 +174,10 @@ async function makeTransport(
for (const potentialTransport of transports) { for (const potentialTransport of transports) {
if (isLivekitTransportConfig(potentialTransport)) { if (isLivekitTransportConfig(potentialTransport)) {
try { try {
await getSFUConfigWithOpenID( const { livekitAlias } = await getSFUConfigWithOpenID(
client, client,
potentialTransport.livekit_service_url, potentialTransport.livekit_service_url,
livekitAlias, roomId,
); );
return { return {
...potentialTransport, ...potentialTransport,
@@ -242,7 +245,11 @@ async function makeTransport(
const urlFromConf = Config.get().livekit?.livekit_service_url; const urlFromConf = Config.get().livekit?.livekit_service_url;
if (urlFromConf) { if (urlFromConf) {
try { try {
await getSFUConfigWithOpenID(client, urlFromConf, roomId); const { livekitAlias } = await getSFUConfigWithOpenID(
client,
urlFromConf,
roomId,
);
const selectedTransport: LivekitTransport = { const selectedTransport: LivekitTransport = {
type: "livekit", type: "livekit",
livekit_service_url: urlFromConf, livekit_service_url: urlFromConf,