From 94c89cea05092ed35cc186c474b2fceb2de6b559 Mon Sep 17 00:00:00 2001 From: vikingowl Date: Fri, 26 Dec 2025 18:20:36 +0100 Subject: [PATCH] test(permissions): Add tests for mode defaults and tool name roundtrip --- crates/platform/permissions/src/lib.rs | 44 ++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/crates/platform/permissions/src/lib.rs b/crates/platform/permissions/src/lib.rs index acfb3ad..b3bc706 100644 --- a/crates/platform/permissions/src/lib.rs +++ b/crates/platform/permissions/src/lib.rs @@ -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); + } + } }