test: 添加一大堆测试文件

This commit is contained in:
claude-code-best
2026-04-02 20:28:08 +08:00
parent 6f5623b26c
commit ce29527a67
33 changed files with 3502 additions and 329 deletions

View File

@@ -1,82 +1,85 @@
import { describe, expect, test } from "bun:test";
import { parseToolPreset, filterToolsByDenyRules } from "../tools";
import { getEmptyToolPermissionContext } from "../Tool";
import { describe, expect, test } from 'bun:test'
import { parseToolPreset, filterToolsByDenyRules } from '../tools'
import { getEmptyToolPermissionContext } from '../Tool'
describe("parseToolPreset", () => {
describe('parseToolPreset', () => {
test('returns "default" for "default" input', () => {
expect(parseToolPreset("default")).toBe("default");
});
expect(parseToolPreset('default')).toBe('default')
})
test('returns "default" for "Default" input (case-insensitive)', () => {
expect(parseToolPreset("Default")).toBe("default");
});
expect(parseToolPreset('Default')).toBe('default')
})
test("returns null for unknown preset", () => {
expect(parseToolPreset("unknown")).toBeNull();
});
test('returns null for unknown preset', () => {
expect(parseToolPreset('unknown')).toBeNull()
})
test("returns null for empty string", () => {
expect(parseToolPreset("")).toBeNull();
});
test('returns null for empty string', () => {
expect(parseToolPreset('')).toBeNull()
})
test("returns null for random string", () => {
expect(parseToolPreset("custom-preset")).toBeNull();
});
});
test('returns null for random string', () => {
expect(parseToolPreset('custom-preset')).toBeNull()
})
})
// ─── filterToolsByDenyRules ─────────────────────────────────────────────
describe("filterToolsByDenyRules", () => {
describe('filterToolsByDenyRules', () => {
const mockTools = [
{ name: "Bash", mcpInfo: undefined },
{ name: "Read", mcpInfo: undefined },
{ name: "Write", mcpInfo: undefined },
{ name: "mcp__server__tool", mcpInfo: { serverName: "server", toolName: "tool" } },
];
{ name: 'Bash', mcpInfo: undefined },
{ name: 'Read', mcpInfo: undefined },
{ name: 'Write', mcpInfo: undefined },
{
name: 'mcp__server__tool',
mcpInfo: { serverName: 'server', toolName: 'tool' },
},
]
test("returns all tools when no deny rules", () => {
const ctx = getEmptyToolPermissionContext();
const result = filterToolsByDenyRules(mockTools, ctx);
expect(result).toHaveLength(4);
});
test('returns all tools when no deny rules', () => {
const ctx = getEmptyToolPermissionContext()
const result = filterToolsByDenyRules(mockTools, ctx)
expect(result).toHaveLength(4)
})
test("filters out denied tool by name", () => {
test('filters out denied tool by name', () => {
const ctx = {
...getEmptyToolPermissionContext(),
alwaysDenyRules: {
localSettings: ["Bash"],
localSettings: ['Bash'],
},
};
const result = filterToolsByDenyRules(mockTools, ctx as any);
expect(result.find((t) => t.name === "Bash")).toBeUndefined();
expect(result).toHaveLength(3);
});
}
const result = filterToolsByDenyRules(mockTools, ctx as any)
expect(result.find(t => t.name === 'Bash')).toBeUndefined()
expect(result).toHaveLength(3)
})
test("filters out multiple denied tools", () => {
test('filters out multiple denied tools', () => {
const ctx = {
...getEmptyToolPermissionContext(),
alwaysDenyRules: {
localSettings: ["Bash", "Write"],
localSettings: ['Bash', 'Write'],
},
};
const result = filterToolsByDenyRules(mockTools, ctx as any);
expect(result).toHaveLength(2);
expect(result.map((t) => t.name)).toEqual(["Read", "mcp__server__tool"]);
});
}
const result = filterToolsByDenyRules(mockTools, ctx as any)
expect(result).toHaveLength(2)
expect(result.map(t => t.name)).toEqual(['Read', 'mcp__server__tool'])
})
test("returns empty array when all tools denied", () => {
test('returns empty array when all tools denied', () => {
const ctx = {
...getEmptyToolPermissionContext(),
alwaysDenyRules: {
localSettings: mockTools.map((t) => t.name),
localSettings: mockTools.map(t => t.name),
},
};
const result = filterToolsByDenyRules(mockTools, ctx as any);
expect(result).toHaveLength(0);
});
}
const result = filterToolsByDenyRules(mockTools, ctx as any)
expect(result).toHaveLength(0)
})
test("handles empty tools array", () => {
const ctx = getEmptyToolPermissionContext();
expect(filterToolsByDenyRules([], ctx)).toEqual([]);
});
});
test('handles empty tools array', () => {
const ctx = getEmptyToolPermissionContext()
expect(filterToolsByDenyRules([], ctx)).toEqual([])
})
})