Fix friends display name fallback
This commit is contained in:
+58
-1
@@ -6274,11 +6274,68 @@ func TestServeIMFriendsList(t *testing.T) {
|
||||
}
|
||||
data := decodeIMHTTPResponse(t, rec).Data.(map[string]any)
|
||||
items := data["items"].([]any)
|
||||
if len(items) != 1 || items[0].(map[string]any)["display_name"] != "小明" {
|
||||
if len(items) != 1 || items[0].(map[string]any)["display_name"] != "小明" || items[0].(map[string]any)["display_name_source"] != "remark" {
|
||||
t.Fatalf("unexpected friends list: %#v", data)
|
||||
}
|
||||
}
|
||||
|
||||
func TestServeIMFriendsListUsesUserIDSourceOnlyForFallback(t *testing.T) {
|
||||
ctrl := gomock.NewController(t)
|
||||
defer ctrl.Finish()
|
||||
expectIMBearer(t, ctrl, "token-1", 7, 1)
|
||||
oldRelations := store.Relations
|
||||
now := time.Now().UTC().Round(time.Millisecond)
|
||||
namedPeer := types.Uid(2)
|
||||
unnamedPeer := types.Uid(3)
|
||||
store.Relations = &testRelationsStore{friends: []types.FriendListItem{{
|
||||
Friendship: types.Friendship{
|
||||
TenantID: 7,
|
||||
UserID: 1,
|
||||
PeerID: namedPeer,
|
||||
Status: types.RelationshipFriend,
|
||||
Topic: types.Uid(1).P2PName(namedPeer),
|
||||
CreatedAt: now,
|
||||
UpdatedAt: now,
|
||||
},
|
||||
Peer: &types.User{ObjHeader: types.ObjHeader{Id: namedPeer.String()}, TenantID: 7, Public: map[string]any{"fn": "yang"}},
|
||||
}, {
|
||||
Friendship: types.Friendship{
|
||||
TenantID: 7,
|
||||
UserID: 1,
|
||||
PeerID: unnamedPeer,
|
||||
Status: types.RelationshipFriend,
|
||||
Topic: types.Uid(1).P2PName(unnamedPeer),
|
||||
CreatedAt: now,
|
||||
UpdatedAt: now,
|
||||
},
|
||||
Peer: &types.User{ObjHeader: types.ObjHeader{Id: unnamedPeer.String()}, TenantID: 7, Public: map[string]any{}},
|
||||
}}}
|
||||
defer func() { store.Relations = oldRelations }()
|
||||
|
||||
req := httptest.NewRequest(http.MethodGet, "/v1/im/friends", nil)
|
||||
req.Header.Set("Authorization", "Bearer token-1")
|
||||
rec := httptest.NewRecorder()
|
||||
|
||||
serveIMFriends(rec, req)
|
||||
|
||||
if rec.Code != http.StatusOK {
|
||||
t.Fatalf("status: got %d, want %d; body=%s", rec.Code, http.StatusOK, rec.Body.String())
|
||||
}
|
||||
data := decodeIMHTTPResponse(t, rec).Data.(map[string]any)
|
||||
items := data["items"].([]any)
|
||||
if len(items) != 2 {
|
||||
t.Fatalf("unexpected friends list length: %#v", data)
|
||||
}
|
||||
named := items[0].(map[string]any)
|
||||
if named["display_name"] != "yang" || named["display_name_source"] != "profile" {
|
||||
t.Fatalf("named friend should use profile display: %#v", named)
|
||||
}
|
||||
unnamed := items[1].(map[string]any)
|
||||
if unnamed["display_name"] != unnamed["user_id"] || unnamed["display_name_source"] != "user_id" {
|
||||
t.Fatalf("unnamed friend should use user_id fallback source: %#v", unnamed)
|
||||
}
|
||||
}
|
||||
|
||||
func TestServeIMFriendRemark(t *testing.T) {
|
||||
ctrl := gomock.NewController(t)
|
||||
defer ctrl.Finish()
|
||||
|
||||
Reference in New Issue
Block a user