feat(网关): 引入 OpenAI/Claude OAuth token 缓存
新增 OpenAI/Claude TokenProvider 与缓存键生成 扩展 OAuth 缓存失效覆盖更多平台 统一 OAuth 缓存前缀与依赖注入
This commit is contained in:
@@ -151,3 +151,109 @@ func TestAntigravityTokenCacheKey(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestOpenAITokenCacheKey(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
account *Account
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
name: "basic_account",
|
||||
account: &Account{
|
||||
ID: 300,
|
||||
},
|
||||
expected: "openai:account:300",
|
||||
},
|
||||
{
|
||||
name: "account_with_credentials",
|
||||
account: &Account{
|
||||
ID: 301,
|
||||
Credentials: map[string]any{
|
||||
"access_token": "test-token",
|
||||
},
|
||||
},
|
||||
expected: "openai:account:301",
|
||||
},
|
||||
{
|
||||
name: "account_id_zero",
|
||||
account: &Account{
|
||||
ID: 0,
|
||||
},
|
||||
expected: "openai:account:0",
|
||||
},
|
||||
{
|
||||
name: "large_account_id",
|
||||
account: &Account{
|
||||
ID: 9999999999,
|
||||
},
|
||||
expected: "openai:account:9999999999",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := OpenAITokenCacheKey(tt.account)
|
||||
require.Equal(t, tt.expected, result)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestClaudeTokenCacheKey(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
account *Account
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
name: "basic_account",
|
||||
account: &Account{
|
||||
ID: 400,
|
||||
},
|
||||
expected: "claude:account:400",
|
||||
},
|
||||
{
|
||||
name: "account_with_credentials",
|
||||
account: &Account{
|
||||
ID: 401,
|
||||
Credentials: map[string]any{
|
||||
"access_token": "claude-token",
|
||||
},
|
||||
},
|
||||
expected: "claude:account:401",
|
||||
},
|
||||
{
|
||||
name: "account_id_zero",
|
||||
account: &Account{
|
||||
ID: 0,
|
||||
},
|
||||
expected: "claude:account:0",
|
||||
},
|
||||
{
|
||||
name: "large_account_id",
|
||||
account: &Account{
|
||||
ID: 9999999999,
|
||||
},
|
||||
expected: "claude:account:9999999999",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := ClaudeTokenCacheKey(tt.account)
|
||||
require.Equal(t, tt.expected, result)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCacheKeyUniqueness(t *testing.T) {
|
||||
// 确保不同平台的缓存键不会冲突
|
||||
account := &Account{ID: 123}
|
||||
|
||||
openaiKey := OpenAITokenCacheKey(account)
|
||||
claudeKey := ClaudeTokenCacheKey(account)
|
||||
|
||||
require.NotEqual(t, openaiKey, claudeKey, "OpenAI and Claude cache keys should be different")
|
||||
require.Contains(t, openaiKey, "openai:")
|
||||
require.Contains(t, claudeKey, "claude:")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user