feat: apply configured default user avatars
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/tinode/chat/server/store"
|
||||
"github.com/tinode/chat/server/store/types"
|
||||
)
|
||||
|
||||
type defaultAvatarConfigStore map[string]string
|
||||
|
||||
func (s defaultAvatarConfigStore) Get(_ string, keys ...string) (map[string]string, error) {
|
||||
out := make(map[string]string, len(keys))
|
||||
for _, key := range keys {
|
||||
out[key] = s[key]
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func TestUserSummaryPayloadAppliesDefaultAvatarByGenderAndUserID(t *testing.T) {
|
||||
oldConfig := store.ThirdPartyConfig
|
||||
store.ThirdPartyConfig = defaultAvatarConfigStore{
|
||||
imDefaultMaleAvatarURLsConfig: `["m0","m1","m2","m3","m4"]`,
|
||||
imDefaultFemaleAvatarURLsConfig: `["f0","f1","f2","f3","f4"]`,
|
||||
}
|
||||
defer func() { store.ThirdPartyConfig = oldConfig }()
|
||||
|
||||
for i, gender := range []string{"male", "female"} {
|
||||
uid := types.Uid(10 + i)
|
||||
payload := userSummaryPayload(&types.User{
|
||||
ObjHeader: types.ObjHeader{Id: uid.String()},
|
||||
Public: map[string]any{"display_name": "Alice", "gender": gender},
|
||||
}, "")
|
||||
wantPrefix := "m"
|
||||
if gender == "female" {
|
||||
wantPrefix = "f"
|
||||
}
|
||||
want := fmt.Sprintf("%s%d", wantPrefix, uint64(uid)%5)
|
||||
if payload["avatar_file_id"] != want {
|
||||
t.Fatalf("gender=%s avatar=%v want %s", gender, payload["avatar_file_id"], want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestUserSummaryPayloadKeepsUploadedAvatar(t *testing.T) {
|
||||
oldConfig := store.ThirdPartyConfig
|
||||
store.ThirdPartyConfig = defaultAvatarConfigStore{
|
||||
imDefaultMaleAvatarURLsConfig: `["m0","m1","m2","m3","m4"]`,
|
||||
}
|
||||
defer func() { store.ThirdPartyConfig = oldConfig }()
|
||||
|
||||
payload := userSummaryPayload(&types.User{
|
||||
ObjHeader: types.ObjHeader{Id: types.Uid(10).String()},
|
||||
Public: map[string]any{"display_name": "Alice", "gender": "male", "avatar_file_id": "uploaded.png"},
|
||||
}, "")
|
||||
if payload["avatar_file_id"] != "uploaded.png" {
|
||||
t.Fatalf("avatar=%v", payload["avatar_file_id"])
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user