mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-16 07:33:06 +08:00
从 personal-dev 取优并接线到 feat/grok-complete-integration: - 调度阈值:grok_sched_* 写入、ApplyAccountSchedulingThreshold、 account_scheduling_thresholds 设置与 Settings UI、网关过滤 - 配额头:x-rate-limit 别名、相对秒 reset、tier/entitlement 扩展 - 批量 usage:GetUsageBatch + POST /usage/batch + AccountsView 合并加载 - CLI 身份:xai.cli_identity 统一 pin/UA;service 层 applyGrokCLIHeaders 与 transport 最终改写对齐;media eligibility 模块落地 - UsageCell:月度 cents→USD 与 30d 进度条展示 保留既有 failure taxonomy / sticky / free recovery 等 HEAD cools。
68 lines
2.0 KiB
Go
68 lines
2.0 KiB
Go
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"))
|
|
}
|