UNPKG

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
"use strict"; 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"'); }); }); });