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_LOCAL_MODEL", "HYPERGUILD_CLAUDE_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, "http://piguard:4000", cfg.LiteLLMBaseURL) assert.Equal(t, "http://ingestion.supervisor:3300", cfg.BrainURL) assert.Equal(t, "qwen35", cfg.LocalModel) assert.Equal(t, "claude-sonnet-4-6", cfg.ClaudeModel) assert.InDelta(t, 0.90, cfg.RouteLocalFloor, 1e-9) assert.InDelta(t, 0.70, cfg.RouteLocalCeil, 1e-9) assert.Equal(t, 60, cfg.PassRateTTLSeconds) } 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_LOCAL_MODEL", "qwen2-7b") t.Setenv("HYPERGUILD_CLAUDE_MODEL", "claude-opus-4-7") 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, "qwen2-7b", cfg.LocalModel) assert.Equal(t, "claude-opus-4-7", cfg.ClaudeModel) 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") }