Update: 将子项目从 submodule 转为完整内容
- 移除 GovAI, nomifun-tauri, 算力盒子 的 submodule 引用 - 添加所有子项目的完整源代码 - 保留原始 .git 为 .git.bak 备份
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
use nomi_protocol::commands::ApprovalScope;
|
||||
use nomi_protocol::events::ToolCategory;
|
||||
use nomi_protocol::{ToolApprovalManager, ToolApprovalResult};
|
||||
use rstest::rstest;
|
||||
|
||||
#[rstest]
|
||||
#[case(ApprovalScope::Once, ToolCategory::Exec, "exec", false)]
|
||||
#[case(ApprovalScope::Always, ToolCategory::Edit, "edit", true)]
|
||||
#[tokio::test]
|
||||
async fn approve_resolves_request_and_updates_auto_approval(
|
||||
#[case] scope: ApprovalScope,
|
||||
#[case] category: ToolCategory,
|
||||
#[case] category_name: &str,
|
||||
#[case] should_auto_approve: bool,
|
||||
) {
|
||||
let manager = ToolApprovalManager::new();
|
||||
let rx = manager.request_approval("call-1", &category);
|
||||
|
||||
manager.approve("call-1", scope);
|
||||
|
||||
let result = rx.await.expect("approval result should arrive");
|
||||
assert!(matches!(result, ToolApprovalResult::Approved));
|
||||
assert_eq!(manager.is_auto_approved(category_name), should_auto_approve);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn resolve_preserves_denial_reason() {
|
||||
let manager = ToolApprovalManager::new();
|
||||
let rx = manager.request_approval("call-2", &ToolCategory::Exec);
|
||||
|
||||
manager.resolve(
|
||||
"call-2",
|
||||
ToolApprovalResult::Denied {
|
||||
reason: "policy violation".to_string(),
|
||||
},
|
||||
);
|
||||
|
||||
let result = rx.await.expect("denial result should arrive");
|
||||
assert!(matches!(
|
||||
result,
|
||||
ToolApprovalResult::Denied { reason } if reason == "policy violation"
|
||||
));
|
||||
assert!(!manager.is_auto_approved("exec"));
|
||||
}
|
||||
Reference in New Issue
Block a user