mirror of
https://github.com/vector-im/element-call.git
synced 2026-07-30 19:39:22 +00:00
Use JWT
This commit is contained in:
@@ -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: {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user