Initial Commit
This commit is contained in:
107
agent_test.go
Normal file
107
agent_test.go
Normal file
@@ -0,0 +1,107 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestCommandExecutor_ValidateCommand(t *testing.T) {
|
||||
executor := NewCommandExecutor(5 * time.Second)
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
command string
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "safe command - ls",
|
||||
command: "ls -la /var",
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "safe command - df",
|
||||
command: "df -h",
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "safe command - ps",
|
||||
command: "ps aux | grep nginx",
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "dangerous command - rm",
|
||||
command: "rm -rf /tmp/*",
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
name: "dangerous command - dd",
|
||||
command: "dd if=/dev/zero of=/dev/sda",
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
name: "dangerous command - sudo",
|
||||
command: "sudo systemctl stop nginx",
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
name: "dangerous command - redirection",
|
||||
command: "echo 'test' > /etc/passwd",
|
||||
wantErr: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
err := executor.validateCommand(tt.command)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("validateCommand() error = %v, wantErr %v", err, tt.wantErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCommandExecutor_Execute(t *testing.T) {
|
||||
executor := NewCommandExecutor(5 * time.Second)
|
||||
|
||||
// Test safe command execution
|
||||
cmd := Command{
|
||||
ID: "test_echo",
|
||||
Command: "echo 'Hello, World!'",
|
||||
Description: "Test echo command",
|
||||
}
|
||||
|
||||
result := executor.Execute(cmd)
|
||||
|
||||
if result.ExitCode != 0 {
|
||||
t.Errorf("Expected exit code 0, got %d", result.ExitCode)
|
||||
}
|
||||
|
||||
if result.Output != "Hello, World!\n" {
|
||||
t.Errorf("Expected 'Hello, World!\\n', got '%s'", result.Output)
|
||||
}
|
||||
|
||||
if result.Error != "" {
|
||||
t.Errorf("Expected no error, got '%s'", result.Error)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCommandExecutor_ExecuteUnsafeCommand(t *testing.T) {
|
||||
executor := NewCommandExecutor(5 * time.Second)
|
||||
|
||||
// Test unsafe command rejection
|
||||
cmd := Command{
|
||||
ID: "test_rm",
|
||||
Command: "rm -rf /tmp/test",
|
||||
Description: "Dangerous rm command",
|
||||
}
|
||||
|
||||
result := executor.Execute(cmd)
|
||||
|
||||
if result.ExitCode != 1 {
|
||||
t.Errorf("Expected exit code 1 for unsafe command, got %d", result.ExitCode)
|
||||
}
|
||||
|
||||
if result.Error == "" {
|
||||
t.Error("Expected error for unsafe command, got none")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user