- 新增 header_util.go,通过 setHeaderRaw/getHeaderRaw/addHeaderRaw 绕过 Go 的 canonical-case 规范化,保持真实 Claude CLI 抓包的请求头大小写 (如 "x-app" 而非 "X-App","X-Stainless-OS" 而非 "X-Stainless-Os") - 新增管理后台开关:指纹统一化(默认开启)和 metadata 透传(默认关闭), 使用 atomic.Value + singleflight 缓存模式,60s TTL - 调试日志从控制台 body 打印升级为文件级完整快照 (按真实 wire 顺序输出 headers + 格式化 JSON body + 上下文元数据) - 恢复 accept-encoding 到白名单,在 http_upstream.go 新增 decompressResponseBody 处理 gzip/brotli/deflate 解压(Go 显式设置 Accept-Encoding 时不会自动解压) - OAuth 服务 axios UA 从 1.8.4 更新至 1.13.6 - 测试断言改用 getHeaderRaw 适配 raw header 存储方式
32 lines
717 B
Go
32 lines
717 B
Go
package service
|
|
|
|
import "testing"
|
|
|
|
func TestParseDebugEnvBool(t *testing.T) {
|
|
t.Run("empty is false", func(t *testing.T) {
|
|
if parseDebugEnvBool("") {
|
|
t.Fatalf("expected false for empty string")
|
|
}
|
|
})
|
|
|
|
t.Run("true-like values", func(t *testing.T) {
|
|
for _, value := range []string{"1", "true", "TRUE", "yes", "on"} {
|
|
t.Run(value, func(t *testing.T) {
|
|
if !parseDebugEnvBool(value) {
|
|
t.Fatalf("expected true for %q", value)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
|
|
t.Run("false-like values", func(t *testing.T) {
|
|
for _, value := range []string{"0", "false", "off", "debug"} {
|
|
t.Run(value, func(t *testing.T) {
|
|
if parseDebugEnvBool(value) {
|
|
t.Fatalf("expected false for %q", value)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
}
|