43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { describe, expect, it, vi } from "vitest"
|
|
|
|
vi.mock("./browser-login", () => ({
|
|
loginWithBrowser: vi.fn(),
|
|
resolveBrowserLoginToken: vi.fn(),
|
|
}))
|
|
|
|
const { loginWithBrowser, resolveBrowserLoginToken } = await import("./browser-login")
|
|
const { resolveLoginToken } = await import("./commands/auth")
|
|
|
|
describe("resolveLoginToken", () => {
|
|
it("exchanges a provided one-time token into a session token", async () => {
|
|
vi.mocked(resolveBrowserLoginToken).mockResolvedValueOnce("session-token")
|
|
|
|
await expect(
|
|
resolveLoginToken({
|
|
inputToken: "one-time-token",
|
|
apiUrl: "https://api.folo.is",
|
|
timeoutMs: 180_000,
|
|
onStatus: vi.fn(),
|
|
}),
|
|
).resolves.toBe("session-token")
|
|
|
|
expect(resolveBrowserLoginToken).toHaveBeenCalledWith("https://api.folo.is", "one-time-token")
|
|
})
|
|
|
|
it("falls back to browser login when no token is provided", async () => {
|
|
vi.mocked(loginWithBrowser).mockResolvedValueOnce({
|
|
token: "browser-session-token",
|
|
callbackUrl: "http://127.0.0.1/callback",
|
|
loginUrl: "https://app.folo.is/login",
|
|
})
|
|
|
|
await expect(
|
|
resolveLoginToken({
|
|
apiUrl: "https://api.folo.is",
|
|
timeoutMs: 180_000,
|
|
onStatus: vi.fn(),
|
|
}),
|
|
).resolves.toBe("browser-session-token")
|
|
})
|
|
})
|