This commit is contained in:
Will Hunt
2025-12-11 14:41:20 +00:00
parent f879a416d6
commit da45d57c70

View File

@@ -21,7 +21,9 @@ import * as openIDSFU from "../../../livekit/openIDSFU";
describe("LocalTransport", () => {
let scope: ObservableScope;
beforeEach(() => (scope = new ObservableScope()));
beforeEach(() => {
scope = new ObservableScope();
});
afterEach(() => scope.end());
it("throws if config is missing", async () => {
@@ -161,4 +163,41 @@ describe("LocalTransport", () => {
type: "livekit",
});
});
it("supports getting a transport from the backend", async () => {
// Use config so transport discovery succeeds, but delay OpenID JWT fetch
const memberships$ = new BehaviorSubject(new Epoch([]));
const openIdResolver = Promise.withResolvers<openIDSFU.SFUConfig>();
vi.spyOn(openIDSFU, "getSFUConfigWithOpenID").mockReturnValue(
openIdResolver.promise,
);
const localTransport$ = createLocalTransport$({
scope,
roomId: "!room:example.org",
useOldestMember$: constant(true),
memberships$,
client: {
getDomain: () => "",
// eslint-disable-next-line @typescript-eslint/naming-convention
_unstable_getRTCTransports: async () =>
Promise.resolve([
{ type: "livekit", livekit_service_url: "https://lk.example.org" },
]),
getOpenIdToken: vi.fn(),
getDeviceId: vi.fn(),
},
});
openIdResolver.resolve({ url: "https://lk.example.org", jwt: "jwt" });
expect(localTransport$.value).toBe(null);
await flushPromises();
// final
expect(localTransport$.value).toStrictEqual({
livekit_alias: "!room:example.org",
livekit_service_url: "https://lk.example.org",
type: "livekit",
});
});
});