chore: refresh gramsrv public release
This commit is contained in:
parent
75cebe8dbf
commit
70b6820474
1274 changed files with 378751 additions and 59919 deletions
84
internal/rpc/self_flag_emission_test.go
Normal file
84
internal/rpc/self_flag_emission_test.go
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
package rpc
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/gotd/td/tg"
|
||||
|
||||
"telesrv/internal/domain"
|
||||
)
|
||||
|
||||
// DrKLO 的 UserObject.isUserSelf 只看 user.self flag;服务端任何把"请求者自己的 user"
|
||||
// 用 self=false 形态下发的路径,都会让 Android putUsers 覆盖账号缓存,Saved Messages
|
||||
// 退化为普通自聊。本测试锁定几个曾漏 self 分支的 channel/global 历史转换出口:viewer
|
||||
// 自己出现在 users 集合时必须带 self 标志。
|
||||
|
||||
// selfFlag 在 users 里定位 viewer,返回其 self 标志(找不到时 fail)。
|
||||
func selfFlag(t *testing.T, users []tg.UserClass, viewerID int64) bool {
|
||||
t.Helper()
|
||||
for _, uc := range users {
|
||||
u, ok := uc.(*tg.User)
|
||||
if !ok || u.ID != viewerID {
|
||||
continue
|
||||
}
|
||||
return u.Self
|
||||
}
|
||||
t.Fatalf("viewer %d missing from users slice", viewerID)
|
||||
return false
|
||||
}
|
||||
|
||||
func TestChannelHistoryMessagesMarksViewerSelf(t *testing.T) {
|
||||
const viewer = int64(1001)
|
||||
history := domain.ChannelHistory{
|
||||
Channel: domain.Channel{ID: 40, AccessHash: 7, Megagroup: true},
|
||||
Users: []domain.User{
|
||||
{ID: viewer, AccessHash: 5, FirstName: "Me"},
|
||||
{ID: 2002, AccessHash: 6, FirstName: "Other"},
|
||||
},
|
||||
}
|
||||
out, ok := tgChannelHistoryMessages(viewer, history).(*tg.MessagesChannelMessages)
|
||||
if !ok {
|
||||
t.Fatalf("expected MessagesChannelMessages, got %T", tgChannelHistoryMessages(viewer, history))
|
||||
}
|
||||
if !selfFlag(t, out.Users, viewer) {
|
||||
t.Fatal("viewer's own user must carry self flag in channel history (Saved Messages cache integrity)")
|
||||
}
|
||||
if selfFlag(t, out.Users, 2002) {
|
||||
t.Fatal("other user must not carry self flag")
|
||||
}
|
||||
}
|
||||
|
||||
func TestChannelSearchPostsMessagesMarksViewerSelf(t *testing.T) {
|
||||
const viewer = int64(1001)
|
||||
history := domain.ChannelHistory{
|
||||
Channel: domain.Channel{ID: 40, AccessHash: 7, Megagroup: true},
|
||||
Count: 5, // 触发 MessagesMessagesSlice 分支
|
||||
Channels: []domain.Channel{{ID: 40, AccessHash: 7, Megagroup: true}},
|
||||
Users: []domain.User{{ID: viewer, AccessHash: 5, FirstName: "Me"}},
|
||||
}
|
||||
slice, ok := tgChannelSearchPostsMessages(viewer, history).(*tg.MessagesMessagesSlice)
|
||||
if !ok {
|
||||
t.Fatalf("expected MessagesMessagesSlice, got %T", tgChannelSearchPostsMessages(viewer, history))
|
||||
}
|
||||
if !selfFlag(t, slice.Users, viewer) {
|
||||
t.Fatal("viewer self flag lost in channel post search")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGlobalSearchMessagesMarksViewerSelf(t *testing.T) {
|
||||
const viewer = int64(1001)
|
||||
private := domain.MessageList{Users: []domain.User{{ID: viewer, AccessHash: 5, FirstName: "Me"}}}
|
||||
channel := domain.ChannelHistory{Users: []domain.User{{ID: viewer, AccessHash: 5, FirstName: "Me"}}}
|
||||
switch out := tgGlobalSearchMessages(viewer, 50, private, channel).(type) {
|
||||
case *tg.MessagesMessages:
|
||||
if !selfFlag(t, out.Users, viewer) {
|
||||
t.Fatal("viewer self flag lost in global search (messages)")
|
||||
}
|
||||
case *tg.MessagesMessagesSlice:
|
||||
if !selfFlag(t, out.Users, viewer) {
|
||||
t.Fatal("viewer self flag lost in global search (slice)")
|
||||
}
|
||||
default:
|
||||
t.Fatalf("unexpected global search result type %T", out)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue