Initial open source release
This commit is contained in:
commit
74992e893f
377 changed files with 118084 additions and 0 deletions
58
internal/rpc/photos_push_test.go
Normal file
58
internal/rpc/photos_push_test.go
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
package rpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/gotd/td/clock"
|
||||
"github.com/gotd/td/tg"
|
||||
"go.uber.org/zap/zaptest"
|
||||
|
||||
appusers "telesrv/internal/app/users"
|
||||
"telesrv/internal/domain"
|
||||
"telesrv/internal/store/memory"
|
||||
)
|
||||
|
||||
// TestUploadProfilePhotoPushesUpdateToOtherDevices 守护审计修复:换头像后必须向该账号其它在线
|
||||
// 设备推送(updateUser 信号 + Updates.Users 带新 self user),否则其它设备头像不刷新。
|
||||
// 原因:updateUserName 不含 photo 无法刷新头像,唯有带 user 对象最可靠(见 photos.go
|
||||
// pushSelfPhotoUpdate 注释)。曾完全不推送,本测试防回归。
|
||||
func TestUploadProfilePhotoPushesUpdateToOtherDevices(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
userStore := memory.NewUserStore()
|
||||
owner, _ := userStore.Create(ctx, domain.User{AccessHash: 11, Phone: "15550001001", FirstName: "Owner"})
|
||||
sessions := &captureSessions{}
|
||||
files := &fakeFiles{}
|
||||
r := New(Config{DC: 2, IP: "127.0.0.1", Port: 2398}, Deps{
|
||||
Users: appusers.NewService(userStore),
|
||||
Files: files,
|
||||
Sessions: sessions,
|
||||
}, zaptest.NewLogger(t), clock.System)
|
||||
|
||||
req := &tg.PhotosUploadProfilePhotoRequest{}
|
||||
req.SetFile(&tg.InputFile{ID: 42, Parts: 1, Name: "a.jpg"}) // File 是 flags 可选字段,须 SetFile 置位
|
||||
if _, err := r.onPhotosUploadProfilePhoto(WithUserID(ctx, owner.ID), req); err != nil {
|
||||
t.Fatalf("uploadProfilePhoto: %v", err)
|
||||
}
|
||||
|
||||
snap := sessions.snapshot()
|
||||
if snap.userID != owner.ID {
|
||||
t.Fatalf("push target user = %d, want %d", snap.userID, owner.ID)
|
||||
}
|
||||
updates, ok := snap.message.(*tg.Updates)
|
||||
if !ok {
|
||||
t.Fatalf("pushed message = %T, want *tg.Updates", snap.message)
|
||||
}
|
||||
hasUserUpdate := false
|
||||
for _, u := range updates.Updates {
|
||||
if uu, ok := u.(*tg.UpdateUser); ok && uu.UserID == owner.ID {
|
||||
hasUserUpdate = true
|
||||
}
|
||||
}
|
||||
if !hasUserUpdate {
|
||||
t.Fatalf("updates = %+v, want UpdateUser for self", updates.Updates)
|
||||
}
|
||||
if len(updates.Users) == 0 {
|
||||
t.Fatal("pushed updates missing self user — other devices cannot refresh avatar")
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue