openskynet / src /commands /auth-choice.apply.google-gemini-cli.test.ts
Darochin's picture
Mirror OpenSkyNet workspace snapshot from Git HEAD
fc93158 verified
import { beforeEach, describe, expect, it, vi } from "vitest";
import { applyAuthChoiceGoogleGeminiCli } from "./auth-choice.apply.google-gemini-cli.js";
import type { ApplyAuthChoiceParams } from "./auth-choice.apply.js";
import { applyAuthChoicePluginProvider } from "./auth-choice.apply.plugin-provider.js";
import { createExitThrowingRuntime, createWizardPrompter } from "./test-wizard-helpers.js";
vi.mock("./auth-choice.apply.plugin-provider.js", () => ({
applyAuthChoicePluginProvider: vi.fn(),
}));
function createParams(
authChoice: ApplyAuthChoiceParams["authChoice"],
overrides: Partial<ApplyAuthChoiceParams> = {},
): ApplyAuthChoiceParams {
return {
authChoice,
config: {},
prompter: createWizardPrompter({}, { defaultSelect: "" }),
runtime: createExitThrowingRuntime(),
setDefaultModel: true,
...overrides,
};
}
describe("applyAuthChoiceGoogleGeminiCli", () => {
const mockedApplyAuthChoicePluginProvider = vi.mocked(applyAuthChoicePluginProvider);
beforeEach(() => {
mockedApplyAuthChoicePluginProvider.mockReset();
});
it("returns null for unrelated authChoice", async () => {
const result = await applyAuthChoiceGoogleGeminiCli(createParams("openrouter-api-key"));
expect(result).toBeNull();
expect(mockedApplyAuthChoicePluginProvider).not.toHaveBeenCalled();
});
it("shows caution and skips setup when user declines", async () => {
const confirm = vi.fn(async () => false);
const note = vi.fn(async () => {});
const params = createParams("google-gemini-cli", {
prompter: createWizardPrompter({ confirm, note }, { defaultSelect: "" }),
});
const result = await applyAuthChoiceGoogleGeminiCli(params);
expect(result).toEqual({ config: params.config });
expect(note).toHaveBeenNthCalledWith(
1,
expect.stringContaining("This is an unofficial integration and is not endorsed by Google."),
"Google Gemini CLI caution",
);
expect(confirm).toHaveBeenCalledWith({
message: "Continue with Google Gemini CLI OAuth?",
initialValue: false,
});
expect(note).toHaveBeenNthCalledWith(
2,
"Skipped Google Gemini CLI OAuth setup.",
"Setup skipped",
);
expect(mockedApplyAuthChoicePluginProvider).not.toHaveBeenCalled();
});
it("continues to plugin provider flow when user confirms", async () => {
const confirm = vi.fn(async () => true);
const note = vi.fn(async () => {});
const params = createParams("google-gemini-cli", {
prompter: createWizardPrompter({ confirm, note }, { defaultSelect: "" }),
});
const expected = { config: {} };
mockedApplyAuthChoicePluginProvider.mockResolvedValue(expected);
const result = await applyAuthChoiceGoogleGeminiCli(params);
expect(result).toBe(expected);
expect(mockedApplyAuthChoicePluginProvider).toHaveBeenCalledWith(params, {
authChoice: "google-gemini-cli",
pluginId: "google-gemini-cli-auth",
providerId: "google-gemini-cli",
methodId: "oauth",
label: "Google Gemini CLI",
});
});
});