package config import ( "strings" "testing" ) func TestValidateConfigRejectsInvalidValues(t *testing.T) { tests := []struct { name string cfg Config want string }{ { name: "admin", cfg: Config{Admin: AdminConfig{JWTExpireHours: 721}}, want: "admin.jwt_expire_hours", }, { name: "runtime relation", cfg: Config{Runtime: RuntimeConfig{ AccountMaxInflight: 8, GlobalMaxInflight: 4, }}, want: "runtime.global_max_inflight must be >= runtime.account_max_inflight", }, { name: "responses", cfg: Config{Responses: ResponsesConfig{StoreTTLSeconds: 10}}, want: "responses.store_ttl_seconds", }, { name: "embeddings", cfg: Config{Embeddings: EmbeddingsConfig{Provider: " "}}, want: "embeddings.provider", }, { name: "auto delete", cfg: Config{AutoDelete: AutoDeleteConfig{Mode: "maybe"}}, want: "auto_delete.mode", }, { name: "current input file", cfg: Config{CurrentInputFile: CurrentInputFileConfig{MinChars: -1}}, want: "current_input_file.min_chars", }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { err := ValidateConfig(tc.cfg) if err == nil { t.Fatal("expected validation error") } if !strings.Contains(err.Error(), tc.want) { t.Fatalf("expected %q in error, got %v", tc.want, err) } }) } } func TestValidateConfigAcceptsLegacyAutoDeleteSessions(t *testing.T) { if err := ValidateConfig(Config{AutoDelete: AutoDeleteConfig{Sessions: true}}); err != nil { t.Fatalf("expected legacy auto_delete.sessions config to remain valid, got %v", err) } }