From bc8da78150128bd395458252a1f1160f0edb3617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E5=85=B0=E9=91=AB?= <1735612127@qq.com> Date: Sun, 13 Sep 2026 03:36:40 +0800 Subject: [PATCH] fix(antigravity): isolate OAuth token cache key by account ID to prevent collision --- .../service/antigravity_token_provider.go | 4 -- .../internal/service/token_cache_key_test.go | 41 ++++++------------- 2 files changed, 13 insertions(+), 32 deletions(-) diff --git a/backend/internal/service/antigravity_token_provider.go b/backend/internal/service/antigravity_token_provider.go index 1b360d930b..a0d0e1c26e 100644 --- a/backend/internal/service/antigravity_token_provider.go +++ b/backend/internal/service/antigravity_token_provider.go @@ -231,9 +231,5 @@ func (p *AntigravityTokenProvider) markBackfillAttempted(accountID int64) { } func AntigravityTokenCacheKey(account *Account) string { - projectID := strings.TrimSpace(account.GetCredential("project_id")) - if projectID != "" { - return "ag:" + projectID - } return "ag:account:" + strconv.FormatInt(account.ID, 10) } diff --git a/backend/internal/service/token_cache_key_test.go b/backend/internal/service/token_cache_key_test.go index 309abe18e9..ff527b83b6 100644 --- a/backend/internal/service/token_cache_key_test.go +++ b/backend/internal/service/token_cache_key_test.go @@ -87,60 +87,45 @@ func TestAntigravityTokenCacheKey(t *testing.T) { expected string }{ { - name: "with_project_id", + name: "basic_account", account: &Account{ ID: 200, - Credentials: map[string]any{ - "project_id": "ag-project-456", - }, }, - expected: "ag:ag-project-456", + expected: "ag:account:200", }, { - name: "project_id_with_whitespace", + name: "account_with_project_id_still_uses_account_id", account: &Account{ ID: 201, Credentials: map[string]any{ - "project_id": " ag-project-spaces ", + "project_id": "aicode-consumers", }, }, - expected: "ag:ag-project-spaces", + expected: "ag:account:201", }, { - name: "empty_project_id_fallback_to_account_id", + name: "account_with_credentials", account: &Account{ ID: 202, Credentials: map[string]any{ - "project_id": "", + "access_token": "test-token", }, }, expected: "ag:account:202", }, { - name: "whitespace_only_project_id_fallback_to_account_id", + name: "account_id_zero", account: &Account{ - ID: 203, - Credentials: map[string]any{ - "project_id": " ", - }, + ID: 0, }, - expected: "ag:account:203", + expected: "ag:account:0", }, { - name: "no_project_id_key_fallback_to_account_id", + name: "large_account_id", account: &Account{ - ID: 204, - Credentials: map[string]any{}, + ID: 9999999999, }, - expected: "ag:account:204", - }, - { - name: "nil_credentials_fallback_to_account_id", - account: &Account{ - ID: 205, - Credentials: nil, - }, - expected: "ag:account:205", + expected: "ag:account:9999999999", }, }