test(permissions): Add tests for mode defaults and tool name roundtrip

This commit is contained in:
2025-12-26 18:20:36 +01:00
parent b02a41c8e0
commit 94c89cea05

View File

@@ -431,4 +431,48 @@ mod tests {
assert_eq!(pm.check(Tool::Bash, Some("rm -rf")), PermissionDecision::Deny);
assert_eq!(pm.check(Tool::Bash, Some("ls -la")), PermissionDecision::Allow);
}
#[test]
fn mode_defaults_plan() {
let pm = PermissionManager::new(Mode::Plan);
// Allowed
assert_eq!(pm.check(Tool::Read, None), PermissionDecision::Allow);
assert_eq!(pm.check(Tool::LS, None), PermissionDecision::Allow);
assert_eq!(pm.check(Tool::TodoWrite, None), PermissionDecision::Allow);
assert_eq!(pm.check(Tool::ExitPlanMode, None), PermissionDecision::Allow);
// Ask
assert_eq!(pm.check(Tool::Write, None), PermissionDecision::Ask);
assert_eq!(pm.check(Tool::Bash, None), PermissionDecision::Ask);
assert_eq!(pm.check(Tool::EnterPlanMode, None), PermissionDecision::Ask);
}
#[test]
fn mode_defaults_accept_edits() {
let pm = PermissionManager::new(Mode::AcceptEdits);
// Allowed
assert_eq!(pm.check(Tool::Read, None), PermissionDecision::Allow);
assert_eq!(pm.check(Tool::Write, None), PermissionDecision::Allow);
assert_eq!(pm.check(Tool::Edit, None), PermissionDecision::Allow);
assert_eq!(pm.check(Tool::MultiEdit, None), PermissionDecision::Allow);
// Ask
assert_eq!(pm.check(Tool::Bash, None), PermissionDecision::Ask);
assert_eq!(pm.check(Tool::WebSearch, None), PermissionDecision::Ask);
}
#[test]
fn tool_name_roundtrip() {
let tools = vec![
Tool::Read, Tool::Write, Tool::Edit, Tool::Bash, Tool::LS, Tool::MultiEdit
];
for tool in tools {
let name = tool.name();
let parsed: Tool = name.parse().unwrap();
assert_eq!(tool, parsed);
}
}
}