Files
amcs/internal/config/validate_test.go
Hein f41c512f36 test(tools): add unit tests for error handling functions
* Implement tests for error functions like errRequiredField, errInvalidField, and errEntityNotFound.
* Ensure proper metadata is returned for various error scenarios.
* Validate error handling in CRM, Files, and other tools.
* Introduce tests for parsing stored file IDs and UUIDs.
* Enhance coverage for helper functions related to project resolution and session management.
2026-03-31 15:10:07 +02:00

136 lines
3.2 KiB
Go

package config
import (
"testing"
"time"
)
func validConfig() Config {
return Config{
Server: ServerConfig{Port: 8080},
MCP: MCPConfig{Path: "/mcp", SessionTimeout: 10 * time.Minute},
Auth: AuthConfig{
Keys: []APIKey{{ID: "test", Value: "secret"}},
},
Database: DatabaseConfig{URL: "postgres://example"},
AI: AIConfig{
Provider: "litellm",
Embeddings: AIEmbeddingConfig{
Dimensions: 1536,
},
LiteLLM: LiteLLMConfig{
BaseURL: "http://localhost:4000/v1",
APIKey: "key",
},
Ollama: OllamaConfig{
BaseURL: "http://localhost:11434/v1",
APIKey: "ollama",
},
OpenRouter: OpenRouterAIConfig{
BaseURL: "https://openrouter.ai/api/v1",
APIKey: "key",
},
},
Search: SearchConfig{DefaultLimit: 10, MaxLimit: 50},
Logging: LoggingConfig{Level: "info"},
}
}
func TestValidateAcceptsSupportedProviders(t *testing.T) {
cfg := validConfig()
if err := cfg.Validate(); err != nil {
t.Fatalf("Validate litellm error = %v", err)
}
cfg.AI.Provider = "ollama"
if err := cfg.Validate(); err != nil {
t.Fatalf("Validate ollama error = %v", err)
}
cfg.AI.Provider = "openrouter"
if err := cfg.Validate(); err != nil {
t.Fatalf("Validate openrouter error = %v", err)
}
}
func TestValidateRejectsInvalidProvider(t *testing.T) {
cfg := validConfig()
cfg.AI.Provider = "unknown"
if err := cfg.Validate(); err == nil {
t.Fatal("Validate() error = nil, want error for unsupported provider")
}
}
func TestValidateRejectsEmptyAuthKeyValue(t *testing.T) {
cfg := validConfig()
cfg.Auth.Keys[0].Value = ""
if err := cfg.Validate(); err == nil {
t.Fatal("Validate() error = nil, want error for empty auth key value")
}
}
func TestValidateAcceptsOAuthClients(t *testing.T) {
cfg := validConfig()
cfg.Auth = AuthConfig{
OAuth: OAuthConfig{
Clients: []OAuthClient{{
ID: "oauth-client",
ClientID: "client-id",
ClientSecret: "client-secret",
}},
},
}
if err := cfg.Validate(); err != nil {
t.Fatalf("Validate() error = %v", err)
}
}
func TestValidateAcceptsBothAuthMethods(t *testing.T) {
cfg := validConfig()
cfg.Auth = AuthConfig{
Keys: []APIKey{{ID: "key1", Value: "secret"}},
OAuth: OAuthConfig{
Clients: []OAuthClient{{
ID: "oauth-client",
ClientID: "client-id",
ClientSecret: "client-secret",
}},
},
}
if err := cfg.Validate(); err != nil {
t.Fatalf("Validate() error = %v", err)
}
}
func TestValidateRejectsEmptyAuth(t *testing.T) {
cfg := validConfig()
cfg.Auth = AuthConfig{}
if err := cfg.Validate(); err == nil {
t.Fatal("Validate() error = nil, want error when neither auth.keys nor auth.oauth.clients is configured")
}
}
func TestValidateRejectsInvalidMetadataRetryConfig(t *testing.T) {
cfg := validConfig()
cfg.MetadataRetry.Enabled = true
cfg.MetadataRetry.MaxPerRun = 0
if err := cfg.Validate(); err == nil {
t.Fatal("Validate() error = nil, want error for invalid metadata retry config")
}
}
func TestValidateRejectsInvalidMCPSessionTimeout(t *testing.T) {
cfg := validConfig()
cfg.MCP.SessionTimeout = 0
if err := cfg.Validate(); err == nil {
t.Fatal("Validate() error = nil, want error for invalid mcp session timeout")
}
}