From e953d55bc7a089390d794dfb967cc2e507e49032 Mon Sep 17 00:00:00 2001 From: zhx Date: Tue, 30 Jun 2026 11:38:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal/modules/regionblock/service.go | 13 ++++++++----- .../internal/modules/regionblock/service_test.go | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/server/admin/internal/modules/regionblock/service.go b/server/admin/internal/modules/regionblock/service.go index 1fa62d3e..e5d504af 100644 --- a/server/admin/internal/modules/regionblock/service.go +++ b/server/admin/internal/modules/regionblock/service.go @@ -19,10 +19,10 @@ import ( ) const ( - maxRegionBlockKeywords = 200 - maxRegionBlockKeywordLength = 128 - maxIPWhitelistItems = 500 - maxUserWhitelistItems = 500 + maxRegionBlockKeywords = 200 + maxRegionBlockKeywordLength = 128 + maxIPWhitelistItems = 500 + maxUserWhitelistItems = 500 maxUserWhitelistLookupLength = 64 ) @@ -282,7 +282,10 @@ func (s *Service) normalizeUserIDWhitelist(ctx context.Context, requestID string return nil, errInvalidPayload } userID, err := s.resolveWhitelistUserID(ctx, requestID, value) - if err != nil || userID <= 0 { + if err != nil { + return nil, err + } + if userID <= 0 { return nil, errInvalidPayload } if _, ok := seen[userID]; ok { diff --git a/server/admin/internal/modules/regionblock/service_test.go b/server/admin/internal/modules/regionblock/service_test.go index 2a1d101f..74414101 100644 --- a/server/admin/internal/modules/regionblock/service_test.go +++ b/server/admin/internal/modules/regionblock/service_test.go @@ -17,6 +17,7 @@ type fakeWhitelistCacheUserClient struct { called bool err error + resolveErr error users map[int64]*userclient.User identities map[string]*userclient.UserIdentity } @@ -36,6 +37,9 @@ func (f *fakeWhitelistCacheUserClient) ResolveDisplayUserID(_ context.Context, r if req.RequestID != "req-refresh" || req.Caller != "admin-server" { return nil, errors.New("unexpected resolve request") } + if f.resolveErr != nil { + return nil, f.resolveErr + } if identity := f.identities[req.DisplayUserID]; identity != nil { return identity, nil } @@ -81,6 +85,18 @@ func TestNormalizeUserIDWhitelistRejectsInvalidID(t *testing.T) { } } +func TestNormalizeUserIDWhitelistKeepsUserServiceError(t *testing.T) { + upstreamErr := status.Error(codes.Unavailable, "user-service unavailable") + service := NewService(nil, &fakeWhitelistCacheUserClient{resolveErr: upstreamErr}) + _, err := service.normalizeUserIDWhitelist(context.Background(), "req-refresh", []string{"VIP2026"}) + if !errors.Is(err, upstreamErr) { + t.Fatalf("normalize error = %v, want upstream error", err) + } + if errors.Is(err, errInvalidPayload) { + t.Fatalf("normalize error = %v, should not be mapped to invalid payload", err) + } +} + func TestRefreshWhitelistCacheMapsUserServiceError(t *testing.T) { client := &fakeWhitelistCacheUserClient{err: errors.New("rpc down")} service := NewService(nil, client)