package runtimelogs import ( "testing" "evobgp/internal/store" ) func TestPolicyFromSettingsDefaults(t *testing.T) { p := PolicyFromSettings(nil) if p.Enabled { t.Fatal("expected disabled by default") } if p.MaxFileBytes != int64(DefaultMaxFileMB)*1024*1024 { t.Fatalf("max bytes=%d", p.MaxFileBytes) } if p.Schedule != DefaultSchedule { t.Fatalf("schedule=%q", p.Schedule) } if p.Mode != store.RuntimeLogCleanupTruncate { t.Fatalf("mode=%q", p.Mode) } } func TestClampMaxFileMB(t *testing.T) { if ClampMaxFileMB(0) != DefaultMaxFileMB { t.Fatal("zero should default") } if ClampMaxFileMB(999) != 512 { t.Fatal("cap 512") } } func TestValidateRuntimeLogsSettingsPatch(t *testing.T) { body := map[string]any{ KeyAutoEnabled: true, KeyMaxFileMB: 64, KeyAutoSchedule: "0 3 * * *", KeyAutoMode: "truncate", } if !ValidateRuntimeLogsSettingsPatch(body) { t.Fatal("expected valid patch") } if body[KeyMaxFileMB] != 64 { t.Fatalf("max mb=%v", body[KeyMaxFileMB]) } bad := map[string]any{KeyAutoSchedule: "not a cron"} if ValidateRuntimeLogsSettingsPatch(bad) { t.Fatal("expected invalid cron") } } func TestValidAutoSchedule(t *testing.T) { if !ValidAutoSchedule("0 */6 * * *") { t.Fatal("expected valid schedule") } if ValidAutoSchedule("invalid") { t.Fatal("expected invalid schedule") } }