Files
openwork/apps/app/tests/connect-link-parse.test.ts

32 lines
1.5 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { parseConnectDeepLink } from "../src/app/lib/openwork-links";
const TOKEN = "eyJhbGciOiJFZERTQSJ9.eyJmYWtlIjoxfQ.c2ln";
describe("parseConnectDeepLink", () => {
test("parses production and dev desktop connect links", () => {
const rawUrl = `openwork://connect?token=${TOKEN}`;
expect(parseConnectDeepLink(rawUrl)).toEqual({ rawUrl, key: `signed:${TOKEN}` });
expect(parseConnectDeepLink(`openwork-dev://connect?token=${TOKEN}`)?.key).toBe(`signed:${TOKEN}`);
expect(parseConnectDeepLink(`openwork:///connect?token=${TOKEN}`)?.key).toBe(`signed:${TOKEN}`);
});
test("parses keyless exchange links without accepting ambiguous transports", () => {
const code = "abcdefghijklmnopqrstuvwxyz123456";
const apiBaseUrl = "https://den.example.com/api/den";
const rawUrl = `openwork://connect?code=${code}&apiBaseUrl=${encodeURIComponent(apiBaseUrl)}`;
expect(parseConnectDeepLink(rawUrl)).toEqual({
rawUrl,
key: `exchange:${apiBaseUrl}:${code}`,
});
expect(parseConnectDeepLink(`${rawUrl}&token=${TOKEN}`)).toBeNull();
});
test("does not activate from web URLs or unrelated desktop routes", () => {
expect(parseConnectDeepLink(`https://openwork.example.com/connect?token=${TOKEN}`)).toBeNull();
expect(parseConnectDeepLink(`openwork://den-auth?grant=${TOKEN}`)).toBeNull();
expect(parseConnectDeepLink("openwork://connect")).toBeNull();
expect(parseConnectDeepLink("not a url")).toBeNull();
});
});