67 lines
2.4 KiB
Go
67 lines
2.4 KiB
Go
//go:build mysql
|
|
// +build mysql
|
|
|
|
package mysql
|
|
|
|
import (
|
|
"database/sql"
|
|
"testing"
|
|
)
|
|
|
|
func TestNormalizeUserPhone(t *testing.T) {
|
|
for input, want := range map[string]string{
|
|
"13800138000": "+8613800138000",
|
|
"+8613800138000": "+8613800138000",
|
|
"tel:+17025550001": "+17025550001",
|
|
} {
|
|
got, err := normalizeUserPhone(input)
|
|
if err != nil {
|
|
t.Fatalf("normalize %q: %v", input, err)
|
|
}
|
|
if got != want {
|
|
t.Fatalf("normalize %q: got %q, want %q", input, got, want)
|
|
}
|
|
}
|
|
if _, err := normalizeUserPhone("12345"); err == nil {
|
|
t.Fatal("invalid phone unexpectedly accepted")
|
|
}
|
|
}
|
|
|
|
func TestProfilePublicFromFields(t *testing.T) {
|
|
public := profilePublicFromFields(sql.NullString{String: "新昵称", Valid: true}, sql.NullString{String: "file_avatar_1", Valid: true},
|
|
sql.NullString{String: "新签名", Valid: true}, sql.NullString{String: "male", Valid: true},
|
|
sql.NullString{String: "上海", Valid: true}, sql.NullString{String: "usrProfile", Valid: true}).(map[string]any)
|
|
|
|
for _, key := range []string{"fn", "name", "nickname", "display_name"} {
|
|
if public[key] != "新昵称" {
|
|
t.Fatalf("nickname field %s not overlaid: %#v", key, public)
|
|
}
|
|
}
|
|
if public["avatar_file_id"] != "file_avatar_1" || public["signature"] != "新签名" || public["gender"] != "male" ||
|
|
public["region"] != "上海" || public["public_account"] != "usrProfile" {
|
|
t.Fatalf("profile public not overlaid: %#v", public)
|
|
}
|
|
|
|
public = profilePublicFromFields(sql.NullString{Valid: true}, sql.NullString{Valid: true}, sql.NullString{Valid: true},
|
|
sql.NullString{Valid: true}, sql.NullString{Valid: true}, sql.NullString{Valid: true}).(map[string]any)
|
|
for _, key := range []string{"fn", "name", "nickname", "display_name", "avatar_file_id", "photo", "avatar", "signature", "gender", "region", "public_account"} {
|
|
if _, ok := public[key]; ok {
|
|
t.Fatalf("legacy profile field %s should not be read from im_users.public: %#v", key, public)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestProfileSeedFromPublic(t *testing.T) {
|
|
nickname, avatar := profileSeedFromPublic(map[string]any{
|
|
"fn": "旧昵称",
|
|
"avatar_file_id": "file_avatar_1",
|
|
})
|
|
if nickname != "旧昵称" || avatar != "file_avatar_1" {
|
|
t.Fatalf("unexpected profile seed nickname=%q avatar=%q", nickname, avatar)
|
|
}
|
|
_, avatar = profileSeedFromPublic(map[string]any{"photo": "https://example.com/avatar.png"})
|
|
if avatar != "" {
|
|
t.Fatalf("photo URL must not be treated as avatar_file_id: %q", avatar)
|
|
}
|
|
}
|