sub2api/backend/internal/service/antigravity_direct_upstream_test.go
win 9da079a5ee
Some checks failed
Security Scan / backend-security (push) Failing after 3s
Security Scan / frontend-security (push) Failing after 5s
CI / test (push) Failing after 3s
CI / frontend (push) Failing after 3s
CI / golangci-lint (push) Failing after 3s
CI / windsurf-platform (macos-latest) (push) Has been cancelled
CI / windsurf-platform (windows-latest) (push) Has been cancelled
x
2026-04-27 19:01:41 +08:00

92 lines
2.6 KiB
Go
Raw Permalink 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 (
"context"
"encoding/json"
"testing"
"time"
"github.com/Wei-Shaw/sub2api/internal/pkg/antigravity"
)
// TestDirectUpstreamCall 直接调用真实的 Google API看返回什么
func TestDirectUpstreamCall(t *testing.T) {
t.Log("🔥 直接调用 Google API观察真实返回值...")
t.Log("")
accessToken := "ya29.a0Aa7MYioHycPKQ7xWQguns0VlftxfCwTqn2OY8zVosNMagLLGd5DXWFXpySKgfroGkqihr4Yrwauy1AXfQyvWB-F_4qt46DiEw1sCmaCNmDwjruUiWK7Km7vh7djBONbgruyL0N9_b3aSLi-Zf3llY5FbWZqcNky13gaVUaW0ioxEDVOZuKxYw82yVXvVEqPRXF7cetjUJbLdzwaCgYKAZwSARMSFQHGX2MiqNlICLPPA-_u6WHPBLiUJQ0213"
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
// 步骤 1: 创建客户端
t.Log("步骤 1: 创建 Antigravity 客户端...")
client, err := antigravity.NewClient("")
if err != nil {
t.Fatalf("❌ 创建客户端失败: %v", err)
}
t.Log("✅ 客户端创建成功")
t.Log("")
// 步骤 2: 直接调用 LoadCodeAssist
t.Log("步骤 2: 调用 client.LoadCodeAssist(ctx, accessToken)...")
t.Logf(" AccessToken: %s... (长度: %d)", accessToken[:30], len(accessToken))
t.Log("")
resp, rawResp, err := client.LoadCodeAssist(ctx, accessToken)
// 步骤 3: 分析返回值
t.Log("步骤 3: 分析返回值...")
t.Log("")
if err != nil {
t.Logf("❌ 调用失败")
t.Logf(" 错误类型: %T", err)
t.Logf(" 错误信息: %v", err)
t.Logf(" 错误字符串: %s", err.Error())
t.Logf(" 错误长度: %d 字符", len(err.Error()))
t.Log("")
// 分析错误信息的前几个字符
errStr := err.Error()
if len(errStr) >= 2 {
t.Logf("📊 错误信息的前 5 个字符: '%s'", errStr[:min(5, len(errStr))])
}
t.Log("")
t.Logf("🎯 这就是导致 'IT' 错误的真实原因!")
t.Logf(" 错误完整内容: %q", errStr)
t.Log("")
// 尝试找出 "IT" 的来源
if len(errStr) >= 2 {
first2 := errStr[:2]
t.Logf("📌 错误的前两个字符: '%s'", first2)
if first2 == "IT" {
t.Logf(" ✓ 确认: 'IT' 就是从这个错误截断来的")
} else {
t.Logf(" ⚠️ 前两个字符不是 'IT',可能被其他方式处理了")
}
}
return
}
// 成功的情况
t.Log("✅ 调用成功!")
t.Log("")
if resp != nil {
t.Logf("📋 响应信息:")
t.Logf(" CloudAICompanionProject: %s", resp.CloudAICompanionProject)
t.Logf(" Response 类型: %T", resp)
t.Log("")
// 打印原始响应
if rawResp != nil {
t.Log("📄 原始 API 响应 JSON:")
jsonBytes, _ := json.MarshalIndent(rawResp, " ", " ")
t.Logf("%s", string(jsonBytes))
}
}
}