test(permissions): Add tests for mode defaults and tool name roundtrip
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user