mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-09-15 06:05:34 +02:00
46 lines
1.9 KiB
Go
46 lines
1.9 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoadToolGuardDefaultsAndValidation(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name, yaml string
|
|
enabled, wantErr bool
|
|
}{
|
|
{"legacy config", "server: {port: 8080}\n", true, false},
|
|
{"null section", "tool_guard: null\n", true, false},
|
|
{"implicit null section", "tool_guard:\n", true, false},
|
|
{"explicit off", "tool_guard: {enabled: false, rules: []}\n", false, false},
|
|
{"explicit empty", "tool_guard: {enabled: true, rules: []}\n", true, false},
|
|
{"merged explicit config", "guard_defaults: &guard_defaults {enabled: false, rules: []}\ntool_guard: {<<: *guard_defaults}\n", false, false},
|
|
{"empty section", "tool_guard: {}\n", false, true},
|
|
{"missing enabled", "tool_guard: {rules: []}\n", false, true},
|
|
{"null enabled", "tool_guard: {enabled: null, rules: []}\n", false, true},
|
|
{"missing rules while off", "tool_guard: {enabled: false}\n", false, true},
|
|
{"missing rules while on", "tool_guard: {enabled: true}\n", false, true},
|
|
{"null rules", "tool_guard: {enabled: false, rules: null}\n", false, true},
|
|
{"mistyped enabled field", "tool_guard: {enable: false, rules: []}\n", false, true},
|
|
{"malformed rules while off", "tool_guard: {enabled: false, rules: disabled}\n", false, true},
|
|
{"malformed rule while off", "tool_guard: {enabled: false, rules: [invalid]}\n", false, true},
|
|
{"invalid pattern", "tool_guard:\n enabled: false\n rules:\n - {id: invalid, name: invalid, enabled: false, pattern: '['}\n", false, true},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
path := filepath.Join(t.TempDir(), "config.yaml")
|
|
if err := os.WriteFile(path, []byte(tc.yaml), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
cfg, err := Load(path)
|
|
if (err != nil) != tc.wantErr {
|
|
t.Fatalf("load error: %v", err)
|
|
}
|
|
if err == nil && cfg.EffectiveToolGuard().Enabled != tc.enabled {
|
|
t.Fatal("wrong effective enabled state")
|
|
}
|
|
})
|
|
}
|
|
}
|