mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-24 12:44:18 +08:00
fix: handle missing provider keys and tool schema types (#5069)
* fix: handle missing api keys and tool schema types * fix: preserve nested tool schemas --------- Co-authored-by: Jason <farion1231@gmail.com>
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import { act, renderHook } from "@testing-library/react";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { useApiKeyState } from "@/components/providers/forms/hooks/useApiKeyState";
|
||||
|
||||
describe("useApiKeyState", () => {
|
||||
it("shows and creates Claude API key for uncategorized edit providers", () => {
|
||||
const onConfigChange = vi.fn();
|
||||
const initialConfig = JSON.stringify({ env: {} }, null, 2);
|
||||
|
||||
const { result } = renderHook(() =>
|
||||
useApiKeyState({
|
||||
initialConfig,
|
||||
onConfigChange,
|
||||
selectedPresetId: null,
|
||||
category: undefined,
|
||||
appType: "claude",
|
||||
}),
|
||||
);
|
||||
|
||||
expect(result.current.showApiKey(initialConfig, true)).toBe(true);
|
||||
|
||||
act(() => {
|
||||
result.current.handleApiKeyChange("sk-test");
|
||||
});
|
||||
|
||||
const updated = JSON.parse(onConfigChange.mock.calls.at(-1)?.[0]);
|
||||
expect(updated.env.ANTHROPIC_AUTH_TOKEN).toBe("sk-test");
|
||||
});
|
||||
|
||||
it("keeps official and cloud provider edit behavior conservative", () => {
|
||||
const initialConfig = JSON.stringify({ env: {} }, null, 2);
|
||||
const officialConfigChange = vi.fn();
|
||||
|
||||
const official = renderHook(() =>
|
||||
useApiKeyState({
|
||||
initialConfig,
|
||||
onConfigChange: officialConfigChange,
|
||||
selectedPresetId: null,
|
||||
category: "official",
|
||||
appType: "claude",
|
||||
}),
|
||||
);
|
||||
expect(official.result.current.showApiKey(initialConfig, true)).toBe(false);
|
||||
act(() => {
|
||||
official.result.current.handleApiKeyChange("sk-official");
|
||||
});
|
||||
expect(officialConfigChange).toHaveBeenLastCalledWith(initialConfig);
|
||||
|
||||
const cloudProviderConfigChange = vi.fn();
|
||||
const cloudProvider = renderHook(() =>
|
||||
useApiKeyState({
|
||||
initialConfig,
|
||||
onConfigChange: cloudProviderConfigChange,
|
||||
selectedPresetId: null,
|
||||
category: "cloud_provider",
|
||||
appType: "claude",
|
||||
}),
|
||||
);
|
||||
expect(cloudProvider.result.current.showApiKey(initialConfig, true)).toBe(
|
||||
false,
|
||||
);
|
||||
act(() => {
|
||||
cloudProvider.result.current.handleApiKeyChange("sk-cloud");
|
||||
});
|
||||
expect(cloudProviderConfigChange).toHaveBeenLastCalledWith(initialConfig);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user