cli_identity_test.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package xai
  2. import (
  3. "net/http"
  4. "testing"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestResolveCLIVersionDefaultsToPinnedClientVersion(t *testing.T) {
  8. t.Setenv(CLIVersionEnv, "")
  9. // Default advertise pin is CLIClientVersion; CLIStableVersion is only the floor.
  10. require.Equal(t, CLIClientVersion, ResolveCLIVersion())
  11. require.True(t, IsSupportedCLIVersion(CLIClientVersion))
  12. require.True(t, IsSupportedCLIVersion(CLIStableVersion))
  13. }
  14. func TestResolveCLIVersionAcceptsValidOverride(t *testing.T) {
  15. t.Setenv(CLIVersionEnv, "0.2.95-alpha.1")
  16. require.Equal(t, "0.2.95-alpha.1", ResolveCLIVersion())
  17. }
  18. func TestResolveCLIVersionRejectsUnsafeOrTooOld(t *testing.T) {
  19. for _, version := range []string{
  20. "0.2.92",
  21. "0.2.93-beta.1",
  22. "0.2.95\r\nX-Injected: true",
  23. "0.2.093",
  24. "0.3",
  25. "1",
  26. } {
  27. t.Run(version, func(t *testing.T) {
  28. t.Setenv(CLIVersionEnv, version)
  29. require.Equal(t, CLIClientVersion, ResolveCLIVersion())
  30. })
  31. }
  32. }
  33. func TestApplyCLIProxyHeaders(t *testing.T) {
  34. t.Setenv(CLIVersionEnv, "")
  35. req, err := http.NewRequest(http.MethodPost, "https://cli-chat-proxy.grok.com/v1/responses", nil)
  36. require.NoError(t, err)
  37. req.Header.Set("User-Agent", "legacy-client/1.0")
  38. ApplyCLIProxyHeaders(req)
  39. require.Equal(t, CLIClientVersion, req.Header.Get("x-grok-client-version"))
  40. require.Equal(t, CLIClientIdentifier, req.Header.Get("x-grok-client-identifier"))
  41. require.Equal(t, CLITokenAuth, req.Header.Get("X-XAI-Token-Auth"))
  42. require.Equal(t, CLIUserAgent(CLIClientVersion), req.Header.Get("User-Agent"))
  43. }
  44. func TestApplyCLIProxyHeadersLeavesAPIHostUnchanged(t *testing.T) {
  45. t.Setenv(CLIVersionEnv, "0.2.95")
  46. req, err := http.NewRequest(http.MethodPost, "https://api.x.ai/v1/responses", nil)
  47. require.NoError(t, err)
  48. req.Header.Set("User-Agent", "direct-api-client/1.0")
  49. ApplyCLIProxyHeaders(req)
  50. require.Empty(t, req.Header.Get("x-grok-client-version"))
  51. require.Empty(t, req.Header.Get("x-grok-client-identifier"))
  52. require.Empty(t, req.Header.Get("X-XAI-Token-Auth"))
  53. require.Equal(t, "direct-api-client/1.0", req.Header.Get("User-Agent"))
  54. }