CrossRelay stage 2: Codex /v1/responses relay, config.toml manager, Codex page

This commit is contained in:
kate522 committed 2026-10-18 18:35:01 +08:00
1 parent 404704171d
commit 5112f7ca06
30 files changed
+3539 -72

No files matched your search

+19 -3
View File
@@ -21,8 +21,8 @@ vi.mock("@/lib/api", () => ({
createProvider: (input: unknown) => createProvider(input),
updateProvider: (id: string, input: unknown) => updateProvider(id, input),
deleteProvider: (id: string) => deleteProvider(id),
applyProvider: (id: string) => applyProvider(id),
restore: () => restore(),
applyProvider: (id: string, target: string) => applyProvider(id, target),
restore: (input: unknown) => restore(input),
getStatus: () => getStatus(),
getSettings: () => getSettings(),
updateSettings: (patch: unknown) => updateSettings(patch),
@@ -94,7 +94,23 @@ describe("Providers page", () => {
const user = userEvent.setup();
renderPage();
await user.click(await screen.findByRole("button", { name: /激活并写入|Activate & apply/ }));
await waitFor(() => expect(applyProvider).toHaveBeenCalledWith("p_1"));
await waitFor(() => expect(applyProvider).toHaveBeenCalledWith("p_1", "claude"));
expect(await screen.findByText(/ANTHROPIC_BASE_URL/)).toBeInTheDocument();
});
it("submits exact model mappings from the mapping editor", async () => {
const user = userEvent.setup();
renderPage();
await user.click(await screen.findByRole("button", { name: /新增供应商|Add provider/ }));
await user.click(screen.getByRole("button", { name: /添加一行|Add row/ }));
await user.type(screen.getByPlaceholderText(/请求的模型名|Requested model/), "gpt-5-codex");
await user.type(screen.getByPlaceholderText(/上游模型名|Upstream model/), "deepseek-chat");
await user.type(screen.getByLabelText(/名称|Name/), "Kimi");
await user.type(screen.getByLabelText(/Base URL/), "https://api.moonshot.cn/v1");
await user.type(screen.getByLabelText(/API Key/), "sk-kimi");
await user.click(screen.getByRole("button", { name: /保存|Save/ }));
await waitFor(() => expect(createProvider).toHaveBeenCalledTimes(1));
const input = createProvider.mock.calls[0][0];
expect(input.models.extra).toEqual({ "gpt-5-codex": "deepseek-chat" });
});
});