import { describe, expect, test } from 'bun:test' import { parseToolPreset, filterToolsByDenyRules } from '../tools' import { getEmptyToolPermissionContext } from '../Tool' describe('parseToolPreset', () => { test('returns "default" for "default" input', () => { expect(parseToolPreset('default')).toBe('default') }) test('returns "default" for "Default" input (case-insensitive)', () => { expect(parseToolPreset('Default')).toBe('default') }) test('returns null for unknown preset', () => { expect(parseToolPreset('unknown')).toBeNull() }) test('returns null for empty string', () => { expect(parseToolPreset('')).toBeNull() }) test('returns null for random string', () => { expect(parseToolPreset('custom-preset')).toBeNull() }) }) // ─── 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' }, }, ] 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', () => { const ctx = { ...getEmptyToolPermissionContext(), alwaysDenyRules: { localSettings: ['Bash'], }, } 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', () => { const ctx = { ...getEmptyToolPermissionContext(), alwaysDenyRules: { 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']) }) test('returns empty array when all tools denied', () => { const ctx = { ...getEmptyToolPermissionContext(), alwaysDenyRules: { localSettings: mockTools.map(t => t.name), }, } const result = filterToolsByDenyRules(mockTools, ctx as any) expect(result).toHaveLength(0) }) test('handles empty tools array', () => { const ctx = getEmptyToolPermissionContext() expect(filterToolsByDenyRules([], ctx)).toEqual([]) }) })