package xai import ( "net/http" "testing" "github.com/stretchr/testify/require" ) func TestResolveCLIVersionDefaultsToPinnedClientVersion(t *testing.T) { t.Setenv(CLIVersionEnv, "") // Default advertise pin is CLIClientVersion; CLIStableVersion is only the floor. require.Equal(t, CLIClientVersion, ResolveCLIVersion()) require.True(t, IsSupportedCLIVersion(CLIClientVersion)) require.True(t, IsSupportedCLIVersion(CLIStableVersion)) } func TestResolveCLIVersionAcceptsValidOverride(t *testing.T) { t.Setenv(CLIVersionEnv, "0.2.95-alpha.1") require.Equal(t, "0.2.95-alpha.1", ResolveCLIVersion()) } func TestResolveCLIVersionRejectsUnsafeOrTooOld(t *testing.T) { for _, version := range []string{ "0.2.92", "0.2.93-beta.1", "0.2.95\r\nX-Injected: true", "0.2.093", "0.3", "1", } { t.Run(version, func(t *testing.T) { t.Setenv(CLIVersionEnv, version) require.Equal(t, CLIClientVersion, ResolveCLIVersion()) }) } } func TestApplyCLIProxyHeaders(t *testing.T) { t.Setenv(CLIVersionEnv, "") req, err := http.NewRequest(http.MethodPost, "https://cli-chat-proxy.grok.com/v1/responses", nil) require.NoError(t, err) req.Header.Set("User-Agent", "sub2api-grok/1.0") ApplyCLIProxyHeaders(req) require.Equal(t, CLIClientVersion, req.Header.Get("x-grok-client-version")) require.Equal(t, CLIClientIdentifier, req.Header.Get("x-grok-client-identifier")) require.Equal(t, CLITokenAuth, req.Header.Get("X-XAI-Token-Auth")) require.Equal(t, CLIUserAgent(CLIClientVersion), req.Header.Get("User-Agent")) } func TestApplyCLIProxyHeadersLeavesAPIHostUnchanged(t *testing.T) { t.Setenv(CLIVersionEnv, "0.2.95") req, err := http.NewRequest(http.MethodPost, "https://api.x.ai/v1/responses", nil) require.NoError(t, err) req.Header.Set("User-Agent", "sub2api-grok/1.0") ApplyCLIProxyHeaders(req) require.Empty(t, req.Header.Get("x-grok-client-version")) require.Empty(t, req.Header.Get("x-grok-client-identifier")) require.Empty(t, req.Header.Get("X-XAI-Token-Auth")) require.Equal(t, "sub2api-grok/1.0", req.Header.Get("User-Agent")) }