mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-06-24 23:10:10 +02:00
55 lines
1.6 KiB
Go
55 lines
1.6 KiB
Go
package security
|
|
|
|
import (
|
|
"errors"
|
|
"os/exec"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestFormatCommandFailureResult(t *testing.T) {
|
|
got := FormatCommandFailureResult(1, "sudo: password required")
|
|
want := "命令执行失败: exit status 1\n输出: sudo: password required"
|
|
if got != want {
|
|
t.Fatalf("got %q want %q", got, want)
|
|
}
|
|
if FormatCommandFailureResult(2, "") != "命令执行失败: exit status 2" {
|
|
t.Fatal("empty output format")
|
|
}
|
|
if FormatCommandFailureResult(1, "命令执行失败: exit status 1") != "命令执行失败: exit status 1" {
|
|
t.Fatal("should not double-wrap")
|
|
}
|
|
}
|
|
|
|
func TestIsCommandFailureResult(t *testing.T) {
|
|
if !IsCommandFailureResult("sudo: err\n命令执行失败: exit status 1") {
|
|
t.Fatal("expected true")
|
|
}
|
|
if IsCommandFailureResult("sudo: err only") {
|
|
t.Fatal("expected false")
|
|
}
|
|
}
|
|
|
|
func TestFormatCommandFailureFromErr(t *testing.T) {
|
|
cmd := exec.Command("sh", "-c", "exit 42")
|
|
err := cmd.Run()
|
|
got := FormatCommandFailureFromErr(err, "oops")
|
|
if got != "命令执行失败: exit status 42\n输出: oops" {
|
|
t.Fatalf("got %q", got)
|
|
}
|
|
timeoutErr := errors.New("shell inactivity timeout (300s)")
|
|
got2 := FormatCommandFailureFromErr(timeoutErr, "already timed out")
|
|
if !strings.Contains(got2, "shell inactivity timeout") || !strings.Contains(got2, "already timed out") {
|
|
t.Fatalf("got %q", got2)
|
|
}
|
|
}
|
|
|
|
func TestIsLegacyShellExitNoise(t *testing.T) {
|
|
if !IsLegacyShellExitNoise("command exited with non-zero code 1\n") {
|
|
t.Fatal("expected legacy noise")
|
|
}
|
|
if IsLegacyShellExitNoise("sudo: failed") {
|
|
t.Fatal("unexpected noise")
|
|
}
|
|
}
|