土耳其区域/IP 用户不再按财富等级隐藏游戏列表;保留 Evaluate 的 区域查询给 provider SQL 做 regions 过滤,删除 IP 国家解析器。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
81 lines
2.3 KiB
Go
81 lines
2.3 KiB
Go
package gameprovider
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"chatapp3-golang/internal/integration"
|
|
)
|
|
|
|
type stubVisibilityGateway struct {
|
|
region integration.UserRegion
|
|
}
|
|
|
|
func (s stubVisibilityGateway) GetUserRegion(context.Context, int64, string) (integration.UserRegion, error) {
|
|
return s.region, nil
|
|
}
|
|
|
|
const account1007500UserID int64 = 2054163533368717314
|
|
|
|
func TestVisibilityPolicyAllowsAllRegions(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
region integration.UserRegion
|
|
}{
|
|
{
|
|
name: "turkey region is visible without wealth gate",
|
|
region: integration.UserRegion{RegionID: "2046066409959649281", RegionCode: "土耳其"},
|
|
},
|
|
{
|
|
name: "south asia region is visible",
|
|
region: integration.UserRegion{RegionID: "2045389832842178561", RegionCode: "南亚"},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
policy := NewVisibilityPolicy(stubVisibilityGateway{region: tt.region})
|
|
|
|
result, err := policy.Evaluate(context.Background(), AuthUser{UserID: account1007500UserID, SysOrigin: "LIKEI"})
|
|
if err != nil {
|
|
t.Fatalf("Evaluate() error = %v", err)
|
|
}
|
|
if !result.Allow {
|
|
t.Fatalf("Evaluate() allow = false, want true")
|
|
}
|
|
if result.RegionID != tt.region.RegionID || result.RegionCode != tt.region.RegionCode {
|
|
t.Fatalf("Evaluate() region = %#v, want %#v", result, tt.region)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestVisibilityPolicySkipsOtherSysOrigin(t *testing.T) {
|
|
policy := NewVisibilityPolicy(stubVisibilityGateway{
|
|
region: integration.UserRegion{RegionID: "2046067036517363714", RegionCode: "AR"},
|
|
})
|
|
|
|
result, err := policy.Evaluate(context.Background(), AuthUser{UserID: 1001, SysOrigin: "ASWAT", RegionID: "r-1", RegionCode: "SA"})
|
|
if err != nil {
|
|
t.Fatalf("Evaluate() error = %v", err)
|
|
}
|
|
if !result.Allow {
|
|
t.Fatalf("Evaluate() allow = false, want true")
|
|
}
|
|
if result.RegionID != "r-1" || result.RegionCode != "SA" {
|
|
t.Fatalf("Evaluate() region = %#v, want user-provided region", result)
|
|
}
|
|
}
|
|
|
|
func TestVisibilityPolicyDeniesInvalidUser(t *testing.T) {
|
|
policy := NewVisibilityPolicy(stubVisibilityGateway{})
|
|
|
|
result, err := policy.Evaluate(context.Background(), AuthUser{UserID: 0, SysOrigin: "LIKEI"})
|
|
if err != nil {
|
|
t.Fatalf("Evaluate() error = %v", err)
|
|
}
|
|
if result.Allow {
|
|
t.Fatalf("Evaluate() allow = true, want false for invalid user")
|
|
}
|
|
}
|