import { describe, expect, it } from "vitest"; import { buildCallbackUrl, isRegisteredCallback, parseNativeStartQuery } from "./native"; function startUrl(params: Record): URL { const url = new URL("https://loggedin.fyi/app/start"); for (const [key, value] of Object.entries(params)) url.searchParams.set(key, value); return url; } describe("parseNativeStartQuery", () => { it("accepts a custom scheme callback for a valid origin", () => { const parsed = parseNativeStartQuery( startUrl({ origin: "https://your-app.example", callback: "example.your-app://loggedin", state: "xyz", }), ); expect(parsed).toEqual({ ok: true, origin: "https://your-app.example", callback: "example.your-app://loggedin", state: "xyz", }); }); it("accepts an https universal link callback", () => { const parsed = parseNativeStartQuery( startUrl({ origin: "https://your-app.example", callback: "https://your-app.example/native/loggedin", }), ); expect(parsed.ok).toBe(true); }); it("rejects script and data callbacks", () => { for (const callback of ["javascript:alert(1)", "data:text/html,