60 lines
1.8 KiB
Go
60 lines
1.8 KiB
Go
package regionblock
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"hyapp-admin-server/internal/integration/userclient"
|
|
)
|
|
|
|
type fakeWhitelistCacheUserClient struct {
|
|
userclient.Client
|
|
|
|
called bool
|
|
err error
|
|
}
|
|
|
|
func (f *fakeWhitelistCacheUserClient) RefreshLoginRiskWhitelistCache(_ context.Context, req userclient.RefreshLoginRiskWhitelistCacheRequest) (*userclient.LoginRiskWhitelistCacheSnapshot, error) {
|
|
f.called = true
|
|
if req.RequestID != "req-refresh" || req.Caller != "admin-server" {
|
|
return nil, errors.New("unexpected refresh request")
|
|
}
|
|
if f.err != nil {
|
|
return nil, f.err
|
|
}
|
|
return &userclient.LoginRiskWhitelistCacheSnapshot{Refreshed: true, UserWhitelistCount: 2}, nil
|
|
}
|
|
|
|
func TestNormalizeUserIDWhitelistDeduplicatesPositiveIDs(t *testing.T) {
|
|
got, err := normalizeUserIDWhitelist([]string{" 900025 ", "900026", "900025"})
|
|
if err != nil {
|
|
t.Fatalf("normalize user whitelist failed: %v", err)
|
|
}
|
|
want := []int64{900025, 900026}
|
|
if !reflect.DeepEqual(got, want) {
|
|
t.Fatalf("normalized user whitelist = %+v, want %+v", got, want)
|
|
}
|
|
}
|
|
|
|
func TestNormalizeUserIDWhitelistRejectsInvalidID(t *testing.T) {
|
|
for _, raw := range [][]string{{""}, {"0"}, {"-1"}, {"abc"}} {
|
|
if _, err := normalizeUserIDWhitelist(raw); !errors.Is(err, errInvalidPayload) {
|
|
t.Fatalf("normalize %v error = %v, want errInvalidPayload", raw, err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRefreshWhitelistCacheMapsUserServiceError(t *testing.T) {
|
|
client := &fakeWhitelistCacheUserClient{err: errors.New("rpc down")}
|
|
service := NewService(nil, client)
|
|
err := service.refreshWhitelistCache(context.Background(), "req-refresh")
|
|
if !client.called {
|
|
t.Fatal("expected refresh rpc to be called")
|
|
}
|
|
if !errors.Is(err, errWhitelistCacheRefresh) {
|
|
t.Fatalf("refresh error = %v, want errWhitelistCacheRefresh", err)
|
|
}
|
|
}
|