88 lines
2.7 KiB
TypeScript
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();
|
|
});
|
|
});
|