safe-commander-mcp
Version:
A secure MCP server for executing whitelisted development commands with comprehensive security controls and resource limits
33 lines (32 loc) • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const sanitizer_1 = require("../../src/security/sanitizer");
describe("Command Sanitizer", () => {
describe("sanitizeCommand", () => {
test("should allow basic safe commands", () => {
expect((0, sanitizer_1.sanitizeCommand)("npm install")).toBe("npm install");
expect((0, sanitizer_1.sanitizeCommand)("git status")).toBe("git status");
expect((0, sanitizer_1.sanitizeCommand)("ls -la")).toBe("ls -la");
});
test("should handle single word commands", () => {
expect((0, sanitizer_1.sanitizeCommand)("pwd")).toBe("pwd");
expect((0, sanitizer_1.sanitizeCommand)("node")).toBe("node");
});
test("should trim whitespace", () => {
expect((0, sanitizer_1.sanitizeCommand)(" npm install ")).toBe("npm install");
expect((0, sanitizer_1.sanitizeCommand)("\tgit status\n")).toBe("git status");
});
test("should handle empty strings", () => {
expect(() => (0, sanitizer_1.sanitizeCommand)("")).toThrow();
expect((0, sanitizer_1.sanitizeCommand)(" ")).toBe("");
});
test("should preserve valid command arguments", () => {
expect((0, sanitizer_1.sanitizeCommand)("npm install --save-dev jest")).toBe("npm install --save-dev jest");
expect((0, sanitizer_1.sanitizeCommand)('git commit -m "test message"')).toBe('git commit -m "test message"');
});
test("should handle special characters in valid contexts", () => {
expect((0, sanitizer_1.sanitizeCommand)('grep "pattern" file.txt')).toBe('grep "pattern" file.txt');
expect((0, sanitizer_1.sanitizeCommand)('find . -name "*.ts"')).toBe('find . -name "*.ts"');
});
});
});