package handler import ( "strings" "testing" ) func TestWechatNickname(t *testing.T) { // 前缀 + 5 位后缀 n := wechatNickname("openid_abc") if !strings.HasPrefix(n, "微信用户_") { t.Fatalf("前缀不对: %q", n) } suffix := strings.TrimPrefix(n, "微信用户_") if len([]rune(suffix)) != 5 { t.Fatalf("后缀应 5 位,得 %q", suffix) } // 稳定:同 openid 每次一致(重登不换名) if wechatNickname("openid_abc") != n { t.Fatal("同 openid 昵称应稳定") } // 去混淆:不含 0/O/1/I/L for _, c := range suffix { if strings.ContainsRune("0O1IL", c) { t.Fatalf("后缀含易混字符: %q", suffix) } } // 不同 openid 后缀基本不同(抽样几个不撞) seen := map[string]bool{} for _, o := range []string{"a", "b", "c", "d", "e", "openid_1", "openid_2"} { s := wechatNickname(o) if seen[s] { t.Fatalf("后缀撞了: %q", s) } seen[s] = true } }