修复内容: 1. 修复 6 个 golangci-lint 错误 - 3 个 errcheck 错误:在 gateway_request_test.go 中添加类型断言检查 - 3 个 gofmt 格式化问题:修复代码格式 2. 修复 API 契约测试失败 - 在测试中添加缺失的字段:enable_identity_patch 和 identity_patch_prompt 所有测试和 linter 检查现已通过。
84 lines
2.4 KiB
Go
84 lines
2.4 KiB
Go
package service
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/Wei-Shaw/sub2api/internal/pkg/antigravity"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestStripSignatureSensitiveBlocksFromClaudeRequest(t *testing.T) {
|
|
req := &antigravity.ClaudeRequest{
|
|
Model: "claude-sonnet-4-5",
|
|
Thinking: &antigravity.ThinkingConfig{
|
|
Type: "enabled",
|
|
BudgetTokens: 1024,
|
|
},
|
|
Messages: []antigravity.ClaudeMessage{
|
|
{
|
|
Role: "assistant",
|
|
Content: json.RawMessage(`[
|
|
{"type":"thinking","thinking":"secret plan","signature":""},
|
|
{"type":"tool_use","id":"t1","name":"Bash","input":{"command":"ls"}}
|
|
]`),
|
|
},
|
|
{
|
|
Role: "user",
|
|
Content: json.RawMessage(`[
|
|
{"type":"tool_result","tool_use_id":"t1","content":"ok","is_error":false},
|
|
{"type":"redacted_thinking","data":"..."}
|
|
]`),
|
|
},
|
|
},
|
|
}
|
|
|
|
changed, err := stripSignatureSensitiveBlocksFromClaudeRequest(req)
|
|
require.NoError(t, err)
|
|
require.True(t, changed)
|
|
require.Nil(t, req.Thinking)
|
|
|
|
require.Len(t, req.Messages, 2)
|
|
|
|
var blocks0 []map[string]any
|
|
require.NoError(t, json.Unmarshal(req.Messages[0].Content, &blocks0))
|
|
require.Len(t, blocks0, 2)
|
|
require.Equal(t, "text", blocks0[0]["type"])
|
|
require.Equal(t, "secret plan", blocks0[0]["text"])
|
|
require.Equal(t, "text", blocks0[1]["type"])
|
|
|
|
var blocks1 []map[string]any
|
|
require.NoError(t, json.Unmarshal(req.Messages[1].Content, &blocks1))
|
|
require.Len(t, blocks1, 1)
|
|
require.Equal(t, "text", blocks1[0]["type"])
|
|
require.NotEmpty(t, blocks1[0]["text"])
|
|
}
|
|
|
|
func TestStripThinkingFromClaudeRequest_DoesNotDowngradeTools(t *testing.T) {
|
|
req := &antigravity.ClaudeRequest{
|
|
Model: "claude-sonnet-4-5",
|
|
Thinking: &antigravity.ThinkingConfig{
|
|
Type: "enabled",
|
|
BudgetTokens: 1024,
|
|
},
|
|
Messages: []antigravity.ClaudeMessage{
|
|
{
|
|
Role: "assistant",
|
|
Content: json.RawMessage(`[{"type":"thinking","thinking":"secret plan"},{"type":"tool_use","id":"t1","name":"Bash","input":{"command":"ls"}}]`),
|
|
},
|
|
},
|
|
}
|
|
|
|
changed, err := stripThinkingFromClaudeRequest(req)
|
|
require.NoError(t, err)
|
|
require.True(t, changed)
|
|
require.Nil(t, req.Thinking)
|
|
|
|
var blocks []map[string]any
|
|
require.NoError(t, json.Unmarshal(req.Messages[0].Content, &blocks))
|
|
require.Len(t, blocks, 2)
|
|
require.Equal(t, "text", blocks[0]["type"])
|
|
require.Equal(t, "secret plan", blocks[0]["text"])
|
|
require.Equal(t, "tool_use", blocks[1]["type"])
|
|
}
|