Files
cloud-mcp/tests/unit/storage/config.test.ts

88 lines
2.7 KiB
TypeScript

/*
* @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();
});
});