mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-10 14:28:43 +02:00
68 lines
1.8 KiB
Go
68 lines
1.8 KiB
Go
package multiagent
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
"cyberstrike-ai/internal/config"
|
|
)
|
|
|
|
func TestPrepareLatestUserMessageForModel_CapsAndPersistsOversizedInput(t *testing.T) {
|
|
dir := t.TempDir()
|
|
appCfg := &config.Config{
|
|
Database: config.DatabaseConfig{Path: dir + "/test.db"},
|
|
}
|
|
mw := &config.MultiAgentEinoMiddlewareConfig{
|
|
LatestUserMessageMaxRunes: 10,
|
|
LatestUserMessageHeadRunes: 4,
|
|
LatestUserMessageTailRunes: 4,
|
|
}
|
|
input := "abcdefghijklmnopqrst"
|
|
|
|
out := prepareLatestUserMessageForModel(input, appCfg, mw, "conv-1", nil)
|
|
if out == input {
|
|
t.Fatal("expected oversized input to be replaced with preview")
|
|
}
|
|
if !strings.Contains(out, "artifact_path:") {
|
|
t.Fatalf("expected artifact path in preview: %q", out)
|
|
}
|
|
if !strings.Contains(out, "abcd") || !strings.Contains(out, "qrst") {
|
|
t.Fatalf("expected head and tail preview: %q", out)
|
|
}
|
|
if strings.Contains(out, "efghijklmnop") {
|
|
t.Fatalf("middle content should not remain in model preview: %q", out)
|
|
}
|
|
|
|
path := extractArtifactPathForTest(out)
|
|
if path == "" {
|
|
t.Fatalf("could not extract artifact path: %q", out)
|
|
}
|
|
body, err := os.ReadFile(path)
|
|
if err != nil {
|
|
t.Fatalf("read artifact: %v", err)
|
|
}
|
|
if string(body) != input {
|
|
t.Fatalf("artifact body mismatch: %q", body)
|
|
}
|
|
}
|
|
|
|
func TestPrepareLatestUserMessageForModel_ShortInputUnchanged(t *testing.T) {
|
|
mw := &config.MultiAgentEinoMiddlewareConfig{LatestUserMessageMaxRunes: 100}
|
|
input := "short"
|
|
out := prepareLatestUserMessageForModel(input, nil, mw, "conv-1", nil)
|
|
if out != input {
|
|
t.Fatalf("short input should be unchanged: %q", out)
|
|
}
|
|
}
|
|
|
|
func extractArtifactPathForTest(s string) string {
|
|
for _, line := range strings.Split(s, "\n") {
|
|
line = strings.TrimSpace(line)
|
|
if strings.HasPrefix(line, "artifact_path:") {
|
|
return strings.TrimSpace(strings.TrimPrefix(line, "artifact_path:"))
|
|
}
|
|
}
|
|
return ""
|
|
}
|