Files
AgentCompany/tests/unit/oauth-prompt-events.test.ts
T

65 lines
1.9 KiB
TypeScript

import { describe, expect, it } from "vitest";
import type { DesktopEvent } from "@shared/types";
import {
nextOAuthPromptState,
type PendingOAuthPrompt,
} from "../../src/renderer/components/settings/dialogs/oauth-prompt-events";
describe("OAuth prompt event state", () => {
const pendingManualCode: PendingOAuthPrompt = {
kind: "manual-code",
connectorId: "openai-codex",
requestId: "request-1",
authUrl: "https://example.com/oauth",
instructions: "Authorize",
};
it("closes a stale manual-code dialog when the same connector becomes active", () => {
const event: DesktopEvent = {
type: "oauth:status",
connectorId: "openai-codex",
status: "active",
};
expect(nextOAuthPromptState(pendingManualCode, event)).toBeNull();
});
it("keeps the dialog open for in-progress status events", () => {
const event: DesktopEvent = {
type: "oauth:status",
connectorId: "openai-codex",
status: "in_progress",
};
expect(nextOAuthPromptState(pendingManualCode, event)).toEqual(pendingManualCode);
});
it("ignores terminal status events for a different connector", () => {
const event: DesktopEvent = {
type: "oauth:status",
connectorId: "claude-pro",
status: "active",
};
expect(nextOAuthPromptState(pendingManualCode, event)).toEqual(pendingManualCode);
});
it("opens manual-code requests from the event payload", () => {
const event: DesktopEvent = {
type: "oauth:manual-code-request",
connectorId: "openai-codex",
requestId: "request-2",
authUrl: "https://example.com/code",
instructions: "Copy code",
};
expect(nextOAuthPromptState(null, event)).toEqual({
kind: "manual-code",
connectorId: "openai-codex",
requestId: "request-2",
authUrl: "https://example.com/code",
instructions: "Copy code",
});
});
});