feat: Add testing framework and initial test cases for various tools and database operations
This commit is contained in:
71
tests/unit/tools/devops/server.test.ts
Normal file
71
tests/unit/tools/devops/server.test.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* @Date: 2026-01-07 09:11:20
|
||||
* @LastEditors: 陈子健
|
||||
* @LastEditTime: 2026-01-07 10:04:41
|
||||
* @FilePath: /cloud-mcp/tests/unit/tools/devops/server.test.ts
|
||||
*/
|
||||
/**
|
||||
* Server tools tests (with mocked SSH)
|
||||
*/
|
||||
|
||||
import { describe, test, expect, beforeEach } from "bun:test";
|
||||
import { registerServerTools } from "../../../../src/tools/devops/server.js";
|
||||
import { callTool } from "../../../helpers/tool-helper.js";
|
||||
import { setTestEnv } from "../../../helpers/test-utils.js";
|
||||
|
||||
describe("Server Tools", () => {
|
||||
let cleanupEnv: () => void;
|
||||
|
||||
beforeEach(() => {
|
||||
cleanupEnv = setTestEnv({
|
||||
SERVER_HOST: "test-server",
|
||||
SERVER_USERNAME: "test-user",
|
||||
SERVER_PORT: "22",
|
||||
SERVER_KEY_PATH: "/test/key/path",
|
||||
});
|
||||
registerServerTools();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
cleanupEnv();
|
||||
});
|
||||
|
||||
test("should handle server status request", async () => {
|
||||
const result = await callTool("server_status", {});
|
||||
|
||||
// Should either return status or handle connection error gracefully
|
||||
expect(result.content[0].text).toBeDefined();
|
||||
// Since we don't have actual SSH connection, it will likely return an error
|
||||
// which is expected behavior
|
||||
}, 15000); // Longer timeout for SSH attempts
|
||||
|
||||
test("should handle server logs request", async () => {
|
||||
const result = await callTool("server_logs", {
|
||||
logPath: "/var/log/test.log",
|
||||
lines: 10,
|
||||
});
|
||||
|
||||
// Should either return logs or handle connection error gracefully
|
||||
expect(result.content[0].text).toBeDefined();
|
||||
}, 15000);
|
||||
|
||||
test("should handle deploy request", async () => {
|
||||
const result = await callTool("server_deploy", {
|
||||
localPath: "/local/path",
|
||||
remotePath: "/remote/path",
|
||||
command: "pm2 restart app",
|
||||
});
|
||||
|
||||
expect(result.content[0].text).toContain("Deployment initiated");
|
||||
});
|
||||
|
||||
test("should handle missing server configuration", async () => {
|
||||
cleanupEnv();
|
||||
cleanupEnv = setTestEnv({});
|
||||
registerServerTools();
|
||||
|
||||
const result = await callTool("server_status", {});
|
||||
|
||||
expect(result.content[0].text).toContain("configuration not found");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user