Files
sub2api/backend/internal/service/openai_codex_transform_additions_test.go
T

69 lines
3.0 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.5"), "You are Codex, a coding agent based on GPT-5"))
require.False(t, strings.Contains(defaultCodexSynthInstructions("gpt-5.5"), "You are GPT-5.1 running in the Codex CLI"))
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"))
}