/* * @Date: 2026-01-07 09:09:22 * @LastEditors: 陈子健 * @LastEditTime: 2026-01-07 10:04:55 * @FilePath: /cloud-mcp/tests/unit/storage/config.test.ts */ /** * Configuration management tests */ import { describe, test, expect, beforeEach, afterEach } from "bun:test"; import { configManager } from "../../../src/storage/config.js"; import { setTestEnv } from "../../helpers/test-utils.js"; describe("ConfigManager", () => { let cleanupEnv: () => void; beforeEach(() => { cleanupEnv = setTestEnv({ NAS_HOST: "test-nas-host", NAS_USERNAME: "test-user", NAS_PASSWORD: "test-password", NAS_PROTOCOL: "smb", SERVER_HOST: "test-server", SERVER_USERNAME: "test-server-user", SERVER_PORT: "2222", SERVER_KEY_PATH: "/test/key/path", ROUTER_HOST: "test-router", ROUTER_USERNAME: "test-router-user", ROUTER_PASSWORD: "test-router-password", FOOTBALL_API_KEY: "test-football-key", }); configManager.reload(); }); afterEach(() => { cleanupEnv(); }); test("should load NAS configuration from environment", () => { const nasConfig = configManager.getNASConfig(); expect(nasConfig.host).toBe("test-nas-host"); expect(nasConfig.username).toBe("test-user"); expect(nasConfig.password).toBe("test-password"); expect(nasConfig.protocol).toBe("smb"); }); test("should load server configuration from environment", () => { const serverConfig = configManager.getServerConfig(); expect(serverConfig.host).toBe("test-server"); expect(serverConfig.username).toBe("test-server-user"); expect(serverConfig.port).toBe(2222); expect(serverConfig.keyPath).toBe("/test/key/path"); }); test("should load router configuration from environment", () => { const routerConfig = configManager.getRouterConfig(); expect(routerConfig.host).toBe("test-router"); expect(routerConfig.username).toBe("test-router-user"); expect(routerConfig.password).toBe("test-router-password"); }); test("should get full configuration", () => { const config = configManager.getConfig(); expect(config.nas.host).toBe("test-nas-host"); expect(config.server.host).toBe("test-server"); expect(config.router.host).toBe("test-router"); expect(config.footballApiKey).toBe("test-football-key"); }); test("should handle missing environment variables", () => { cleanupEnv(); // Clear all relevant env vars delete process.env.NAS_HOST; delete process.env.NAS_USERNAME; delete process.env.NAS_PASSWORD; delete process.env.NAS_PROTOCOL; configManager.reload(); const nasConfig = configManager.getNASConfig(); expect(nasConfig.host).toBeUndefined(); }); });