Files
agent-desktop/console/src/api/config.test.ts
T
Pine 9b30f681c6 feat: 智能体控制台前端(console)
- React+antd+zustand,注册表驱动路由/菜单/权限
- Tauri 桌面壳、后端托管 SPA、跨标签页消息队列
2026-08-23 22:43:18 +08:00

77 lines
2.2 KiB
TypeScript

import { describe, it, expect, beforeEach } from "vitest";
import { getApiUrl, getApiToken, setAuthToken, clearAuthToken } from "./config";
// VITE_API_BASE_URL / TOKEN are declared globals in config.ts — set via globalThis
const setViteBase = (v: string) => {
(globalThis as any).VITE_API_BASE_URL = v;
};
const setToken = (v: string) => {
(globalThis as any).TOKEN = v;
};
describe("getApiUrl", () => {
beforeEach(() => setViteBase(""));
it("prepends /api prefix when base is empty", () => {
expect(getApiUrl("/models")).toBe("/api/models");
});
it("auto-prepends / when path does not start with /", () => {
expect(getApiUrl("models")).toBe("/api/models");
});
it("correctly concatenates when base URL is set", () => {
setViteBase("http://localhost:8088");
expect(getApiUrl("/models")).toBe("http://localhost:8088/api/models");
});
it("correctly handles nested paths", () => {
expect(getApiUrl("/models/openai/config")).toBe(
"/api/models/openai/config",
);
});
});
describe("getApiToken", () => {
beforeEach(() => {
localStorage.clear();
setToken("");
});
it("returns token from localStorage when present", () => {
localStorage.setItem("qwenpaw_auth_token", "stored-token");
expect(getApiToken()).toBe("stored-token");
});
it("falls back to TOKEN global variable when localStorage has no token", () => {
setToken("build-time-token");
expect(getApiToken()).toBe("build-time-token");
});
it("returns empty string when neither is set", () => {
expect(getApiToken()).toBe("");
});
});
describe("setAuthToken / clearAuthToken", () => {
beforeEach(() => localStorage.clear());
it("setAuthToken writes to localStorage", () => {
setAuthToken("my-token");
expect(localStorage.getItem("qwenpaw_auth_token")).toBe("my-token");
});
it("clearAuthToken removes token from localStorage", () => {
localStorage.setItem("qwenpaw_auth_token", "my-token");
clearAuthToken();
expect(localStorage.getItem("qwenpaw_auth_token")).toBeNull();
});
it("getApiToken returns empty string after clearAuthToken", () => {
setToken("");
setAuthToken("my-token");
clearAuthToken();
expect(getApiToken()).toBe("");
});
});