Spaces:
Paused
Paused
| import fs from "node:fs"; | |
| import path from "node:path"; | |
| import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; | |
| import { isPathWithinBase } from "../../test/helpers/paths.js"; | |
| import { withTempHome } from "../../test/helpers/temp-home.js"; | |
| const runtime = { | |
| log: vi.fn(), | |
| error: vi.fn(), | |
| exit: vi.fn(), | |
| }; | |
| describe("web logout", () => { | |
| beforeEach(() => { | |
| vi.clearAllMocks(); | |
| }); | |
| afterEach(() => { | |
| vi.restoreAllMocks(); | |
| }); | |
| it("deletes cached credentials when present", { timeout: 60_000 }, async () => { | |
| await withTempHome(async (home) => { | |
| const { logoutWeb } = await import("./session.js"); | |
| const { resolveDefaultWebAuthDir } = await import("./auth-store.js"); | |
| const authDir = resolveDefaultWebAuthDir(); | |
| expect(isPathWithinBase(home, authDir)).toBe(true); | |
| fs.mkdirSync(authDir, { recursive: true }); | |
| fs.writeFileSync(path.join(authDir, "creds.json"), "{}"); | |
| const result = await logoutWeb({ runtime: runtime as never }); | |
| expect(result).toBe(true); | |
| expect(fs.existsSync(authDir)).toBe(false); | |
| }); | |
| }); | |
| it("no-ops when nothing to delete", { timeout: 60_000 }, async () => { | |
| await withTempHome(async () => { | |
| const { logoutWeb } = await import("./session.js"); | |
| const result = await logoutWeb({ runtime: runtime as never }); | |
| expect(result).toBe(false); | |
| expect(runtime.log).toHaveBeenCalled(); | |
| }); | |
| }); | |
| it("keeps shared oauth.json when using legacy auth dir", async () => { | |
| await withTempHome(async () => { | |
| const { logoutWeb } = await import("./session.js"); | |
| const { resolveOAuthDir } = await import("../config/paths.js"); | |
| const credsDir = resolveOAuthDir(); | |
| fs.mkdirSync(credsDir, { recursive: true }); | |
| fs.writeFileSync(path.join(credsDir, "creds.json"), "{}"); | |
| fs.writeFileSync(path.join(credsDir, "oauth.json"), '{"token":true}'); | |
| fs.writeFileSync(path.join(credsDir, "session-abc.json"), "{}"); | |
| const result = await logoutWeb({ | |
| authDir: credsDir, | |
| isLegacyAuthDir: true, | |
| runtime: runtime as never, | |
| }); | |
| expect(result).toBe(true); | |
| expect(fs.existsSync(path.join(credsDir, "oauth.json"))).toBe(true); | |
| expect(fs.existsSync(path.join(credsDir, "creds.json"))).toBe(false); | |
| expect(fs.existsSync(path.join(credsDir, "session-abc.json"))).toBe(false); | |
| }); | |
| }); | |
| }); | |