mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 05:37:41 +00:00
refactor(test): reduce auth and channel setup duplication
This commit is contained in:
@@ -65,6 +65,29 @@ describe("applyAuthChoice", () => {
|
||||
function createPrompter(overrides: Partial<WizardPrompter>): WizardPrompter {
|
||||
return createWizardPrompter(overrides, { defaultSelect: "" });
|
||||
}
|
||||
function createSelectFirstOption(): WizardPrompter["select"] {
|
||||
return vi.fn(async (params) => params.options[0]?.value as never);
|
||||
}
|
||||
function createNoopMultiselect(): WizardPrompter["multiselect"] {
|
||||
return vi.fn(async () => []);
|
||||
}
|
||||
function createApiKeyPromptHarness(
|
||||
overrides: Partial<Pick<WizardPrompter, "select" | "multiselect" | "text" | "confirm">> = {},
|
||||
): {
|
||||
select: WizardPrompter["select"];
|
||||
multiselect: WizardPrompter["multiselect"];
|
||||
prompter: WizardPrompter;
|
||||
runtime: ReturnType<typeof createExitThrowingRuntime>;
|
||||
} {
|
||||
const select = overrides.select ?? createSelectFirstOption();
|
||||
const multiselect = overrides.multiselect ?? createNoopMultiselect();
|
||||
return {
|
||||
select,
|
||||
multiselect,
|
||||
prompter: createPrompter({ ...overrides, select, multiselect }),
|
||||
runtime: createExitThrowingRuntime(),
|
||||
};
|
||||
}
|
||||
async function readAuthProfiles() {
|
||||
return await readAuthProfilesForAgent<{
|
||||
profiles?: Record<string, StoredAuthProfile>;
|
||||
@@ -109,12 +132,7 @@ describe("applyAuthChoice", () => {
|
||||
await setupTempState();
|
||||
|
||||
const text = vi.fn().mockResolvedValue("sk-minimax-test");
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const prompter = createPrompter({ select, multiselect, text });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "minimax-api",
|
||||
@@ -139,12 +157,7 @@ describe("applyAuthChoice", () => {
|
||||
await setupTempState();
|
||||
|
||||
const text = vi.fn().mockResolvedValue("sk-minimax-test");
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const prompter = createPrompter({ select, multiselect, text });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "minimax-api-key-cn",
|
||||
@@ -170,12 +183,7 @@ describe("applyAuthChoice", () => {
|
||||
await setupTempState();
|
||||
|
||||
const text = vi.fn().mockResolvedValue("sk-synthetic-test");
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const prompter = createPrompter({ select, multiselect, text });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "synthetic-api-key",
|
||||
@@ -200,12 +208,7 @@ describe("applyAuthChoice", () => {
|
||||
await setupTempState();
|
||||
|
||||
const text = vi.fn().mockResolvedValue("hf-test-token");
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const prompter = createPrompter({ select, multiselect, text });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "huggingface-api-key",
|
||||
@@ -295,13 +298,8 @@ describe("applyAuthChoice", () => {
|
||||
delete process.env.HUGGINGFACE_HUB_TOKEN;
|
||||
|
||||
const text = vi.fn().mockResolvedValue("should-not-be-used");
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const confirm = vi.fn(async () => false);
|
||||
const prompter = createPrompter({ select, multiselect, text, confirm });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text, confirm });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "apiKey",
|
||||
@@ -328,12 +326,7 @@ describe("applyAuthChoice", () => {
|
||||
await setupTempState();
|
||||
|
||||
const text = vi.fn().mockResolvedValue("sk-xai-test");
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const prompter = createPrompter({ select, multiselect, text });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "xai-api-key",
|
||||
@@ -393,12 +386,7 @@ describe("applyAuthChoice", () => {
|
||||
await setupTempState();
|
||||
|
||||
const text = vi.fn().mockResolvedValue("sk-opencode-zen-test");
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const prompter = createPrompter({ select, multiselect, text });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "opencode-zen",
|
||||
@@ -477,13 +465,8 @@ describe("applyAuthChoice", () => {
|
||||
process.env.OPENROUTER_API_KEY = "sk-openrouter-test";
|
||||
|
||||
const text = vi.fn();
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const confirm = vi.fn(async () => true);
|
||||
const prompter = createPrompter({ select, multiselect, text, confirm });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text, confirm });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "openrouter-api-key",
|
||||
@@ -537,13 +520,8 @@ describe("applyAuthChoice", () => {
|
||||
);
|
||||
|
||||
const text = vi.fn();
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const confirm = vi.fn(async () => true);
|
||||
const prompter = createPrompter({ select, multiselect, text, confirm });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text, confirm });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "litellm-api-key",
|
||||
@@ -582,13 +560,8 @@ describe("applyAuthChoice", () => {
|
||||
process.env.AI_GATEWAY_API_KEY = "gateway-test-key";
|
||||
|
||||
const text = vi.fn();
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const confirm = vi.fn(async () => true);
|
||||
const prompter = createPrompter({ select, multiselect, text, confirm });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text, confirm });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "ai-gateway-api-key",
|
||||
@@ -625,13 +598,8 @@ describe("applyAuthChoice", () => {
|
||||
.fn()
|
||||
.mockResolvedValueOnce("cf-account-id")
|
||||
.mockResolvedValueOnce("cf-gateway-id");
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const confirm = vi.fn(async () => true);
|
||||
const prompter = createPrompter({ select, multiselect, text, confirm });
|
||||
const runtime = createExitThrowingRuntime();
|
||||
const { prompter, runtime } = createApiKeyPromptHarness({ text, confirm });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "cloudflare-ai-gateway-api-key",
|
||||
@@ -707,11 +675,7 @@ describe("applyAuthChoice", () => {
|
||||
}
|
||||
return "code_manual";
|
||||
});
|
||||
const select: WizardPrompter["select"] = vi.fn(
|
||||
async (params) => params.options[0]?.value as never,
|
||||
);
|
||||
const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []);
|
||||
const prompter = createPrompter({ select, multiselect, text });
|
||||
const { prompter } = createApiKeyPromptHarness({ text });
|
||||
|
||||
const result = await applyAuthChoice({
|
||||
authChoice: "chutes",
|
||||
|
||||
Reference in New Issue
Block a user