Files
sub2api/backend/internal/service/openai_codex_transform_additions_test.go
T
shaw 650981f2e4 fix(lint): 修复 golangci-lint errcheck 与 gofmt 报错
- gateway_service.go buildStableSessionSeed: strings.Builder.WriteString
  返回值用 _, _ = 显式忽略(errcheck)
- openai_codex_transform_additions_test.go: client_metadata 类型断言改为
  双值形式 cm3, _ := ...(errcheck check-type-assertions)
- openai_gateway_service.go: codexCLIUserAgent 常量单独成组,收敛 = 前多余
  空格对齐(gofmt)
2026-06-06 09:21:32 +08:00

67 lines
2.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package service
import (
"strings"
"testing"
"github.com/stretchr/testify/require"
)
// ensureCodexReasoningInclude:带 reasoning 时补齐 include,幂等且保留既有项。
func TestEnsureCodexReasoningInclude(t *testing.T) {
// reasoning 存在、include 缺失 → 注入
body := map[string]any{"reasoning": map[string]any{"effort": "medium"}}
require.True(t, ensureCodexReasoningInclude(body))
require.Equal(t, []any{"reasoning.encrypted_content"}, body["include"])
// 幂等:再次调用不重复
require.False(t, ensureCodexReasoningInclude(body))
// 无 reasoning → 不动
body2 := map[string]any{}
require.False(t, ensureCodexReasoningInclude(body2))
_, ok := body2["include"]
require.False(t, ok)
// 既有 include 保留并追加
body3 := map[string]any{
"reasoning": map[string]any{"effort": "high"},
"include": []any{"foo"},
}
require.True(t, ensureCodexReasoningInclude(body3))
require.Equal(t, []any{"foo", "reasoning.encrypted_content"}, body3["include"])
}
// applyCodexClientMetadata:用账号真实 device_id 注入 installation 标识,幂等、不覆盖既有项、不伪造。
func TestApplyCodexClientMetadata(t *testing.T) {
// 仅 OpenAI OAuth 账号才有 device_id(GetOpenAIDeviceID 的门控)。
acc := &Account{Platform: PlatformOpenAI, Type: AccountTypeOAuth, Extra: map[string]any{"openai_device_id": "dev-xyz"}}
body := map[string]any{}
require.True(t, applyCodexClientMetadata(body, acc))
cm, ok := body["client_metadata"].(map[string]any)
require.True(t, ok)
require.Equal(t, "dev-xyz", cm["x-codex-installation-id"])
// 幂等
require.False(t, applyCodexClientMetadata(body, acc))
// OAuth 账号但无 device_id → 不写入(不伪造)
body2 := map[string]any{}
require.False(t, applyCodexClientMetadata(body2, &Account{Platform: PlatformOpenAI, Type: AccountTypeOAuth}))
_, ok = body2["client_metadata"]
require.False(t, ok)
// 既有 client_metadata(如 turn metadata)保留,仅补 installation 键
body3 := map[string]any{"client_metadata": map[string]any{"x-codex-turn-metadata": "t"}}
require.True(t, applyCodexClientMetadata(body3, acc))
cm3, _ := body3["client_metadata"].(map[string]any)
require.Equal(t, "t", cm3["x-codex-turn-metadata"])
require.Equal(t, "dev-xyz", cm3["x-codex-installation-id"])
}
// defaultCodexSynthInstructions:按模型选用真实 Codex base prompt。
func TestDefaultCodexSynthInstructionsModelAware(t *testing.T) {
require.True(t, strings.Contains(defaultCodexSynthInstructions("gpt-5-codex"), "You are Codex, based on GPT-5"))
require.True(t, strings.Contains(defaultCodexSynthInstructions("gpt-5.2"), "You are GPT-5.2 running in the Codex CLI"))
require.True(t, strings.Contains(defaultCodexSynthInstructions("gpt-5.1"), "You are GPT-5.1 running in the Codex CLI"))
}