ollama--ollama
56 行
1.6 KiB
Go
56 行
1.6 KiB
Go
package agent
|
|
|
|
import "testing"
|
|
|
|
func TestApprovalRequestScopesShellCommandsToExactCommand(t *testing.T) {
|
|
req := ApprovalRequest{}
|
|
req.AddToolCall("call-1", "bash", map[string]any{"command": " pwd "})
|
|
req.AddToolCall("call-2", "powershell", map[string]any{"command": "Get-ChildItem"})
|
|
req.AddToolCall("call-3", "edit", map[string]any{"path": "README.md"})
|
|
|
|
tests := []struct {
|
|
index int
|
|
want string
|
|
}{
|
|
{index: 0, want: "bash\x00pwd"},
|
|
{index: 1, want: "powershell\x00Get-ChildItem"},
|
|
{index: 2, want: "edit"},
|
|
}
|
|
for _, tt := range tests {
|
|
if got := req.Calls[tt.index].ApprovalScope; got != tt.want {
|
|
t.Fatalf("call %d approval scope = %q, want %q", tt.index, got, tt.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSessionApplyApprovalScopes(t *testing.T) {
|
|
session := &Session{}
|
|
result := Approval{AllowScopes: []string{"edit", "bash\x00pwd", " "}}
|
|
|
|
session.applyApproval(&result)
|
|
|
|
if !result.Allow {
|
|
t.Fatal("scoped approval should allow the current request")
|
|
}
|
|
if !session.allows("edit") || !session.allows("bash\x00pwd") {
|
|
t.Fatal("scoped approval was not saved")
|
|
}
|
|
if session.allows("bash") || session.allows("bash\x00ls") {
|
|
t.Fatal("shell approval was too broad")
|
|
}
|
|
if session.ApprovalState.AllowAll() {
|
|
t.Fatal("allow all = true, want false for scoped approval")
|
|
}
|
|
}
|
|
|
|
func TestSessionApplyApprovalAllowAll(t *testing.T) {
|
|
session := &Session{}
|
|
result := Approval{AllowAll: true}
|
|
|
|
session.applyApproval(&result)
|
|
|
|
if !result.Allow || !session.allows("anything") {
|
|
t.Fatalf("allow all = %v result = %#v, want allow all", session.ApprovalState.AllowAll(), result)
|
|
}
|
|
}
|