package config_test import ( "testing" "github.com/mathiasbq/supervisor/internal/config" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestLoadRoutingDefaults(t *testing.T) { for _, k := range []string{ "ROUTING_PORT", "ROUTING_MCP_TOKEN", "LITELLM_BASE_URL", "LITELLM_API_KEY", "BRAIN_URL", "HYPERGUILD_FAST_MODEL", "HYPERGUILD_THINKING_MODEL", "HYPERGUILD_ROUTE_LOCAL_FLOOR", "HYPERGUILD_ROUTE_LOCAL_CEIL", "HYPERGUILD_PASS_RATE_TTL_SECONDS", } { t.Setenv(k, "") } cfg, err := config.LoadRouting() require.NoError(t, err) assert.Equal(t, "3210", cfg.Port) assert.Equal(t, "", cfg.MCPAuthToken) assert.Equal(t, "https://llm-api.d-ma.be", cfg.LiteLLMBaseURL) assert.Equal(t, "http://ingestion.supervisor:3300", cfg.BrainURL) assert.Equal(t, "koala/qwen35-9b-fast", cfg.FastModel) assert.Equal(t, "iguana/gemma4-26b", cfg.ThinkingModel) assert.InDelta(t, 0.90, cfg.RouteLocalFloor, 1e-9) assert.InDelta(t, 0.70, cfg.RouteLocalCeil, 1e-9) assert.Equal(t, 60, cfg.PassRateTTLSeconds) assert.Equal(t, "", cfg.LiteLLMAPIKey) } func TestLoadRoutingFromEnv(t *testing.T) { t.Setenv("ROUTING_PORT", "3250") t.Setenv("ROUTING_MCP_TOKEN", "tok-xyz") t.Setenv("LITELLM_BASE_URL", "http://localhost:4000") t.Setenv("LITELLM_API_KEY", "lk") t.Setenv("BRAIN_URL", "http://localhost:3300") t.Setenv("HYPERGUILD_FAST_MODEL", "koala/phi4-14b") t.Setenv("HYPERGUILD_THINKING_MODEL", "iguana/qwen3-14b-think") t.Setenv("HYPERGUILD_ROUTE_LOCAL_FLOOR", "0.85") t.Setenv("HYPERGUILD_ROUTE_LOCAL_CEIL", "0.65") t.Setenv("HYPERGUILD_PASS_RATE_TTL_SECONDS", "30") cfg, err := config.LoadRouting() require.NoError(t, err) assert.Equal(t, "3250", cfg.Port) assert.Equal(t, "tok-xyz", cfg.MCPAuthToken) assert.Equal(t, "http://localhost:4000", cfg.LiteLLMBaseURL) assert.Equal(t, "lk", cfg.LiteLLMAPIKey) assert.Equal(t, "http://localhost:3300", cfg.BrainURL) assert.Equal(t, "koala/phi4-14b", cfg.FastModel) assert.Equal(t, "iguana/qwen3-14b-think", cfg.ThinkingModel) assert.InDelta(t, 0.85, cfg.RouteLocalFloor, 1e-9) assert.InDelta(t, 0.65, cfg.RouteLocalCeil, 1e-9) assert.Equal(t, 30, cfg.PassRateTTLSeconds) } func TestLoadRoutingRejectsBadFloat(t *testing.T) { t.Setenv("HYPERGUILD_ROUTE_LOCAL_FLOOR", "not-a-number") _, err := config.LoadRouting() require.Error(t, err) assert.Contains(t, err.Error(), "HYPERGUILD_ROUTE_LOCAL_FLOOR") } func TestLoadRoutingRejectsBadInt(t *testing.T) { t.Setenv("HYPERGUILD_PASS_RATE_TTL_SECONDS", "not-a-number") _, err := config.LoadRouting() require.Error(t, err) assert.Contains(t, err.Error(), "HYPERGUILD_PASS_RATE_TTL_SECONDS") }