63 lines
1.9 KiB
Go
63 lines
1.9 KiB
Go
package rpc
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/gotd/td/tg"
|
|
|
|
"telesrv/internal/domain"
|
|
)
|
|
|
|
func TestTgUserPremiumFlag(t *testing.T) {
|
|
now := time.Now().Unix()
|
|
premium := domain.User{ID: 1, AccessHash: 2, FirstName: "P", PremiumUntil: int(now + 3600)}
|
|
expired := domain.User{ID: 2, AccessHash: 2, FirstName: "E", PremiumUntil: int(now - 1)}
|
|
bot := domain.User{ID: 3, AccessHash: 2, FirstName: "B", Bot: true, BotInfoVersion: 1, PremiumUntil: int(now + 3600)}
|
|
|
|
if out := tgUser(premium); !out.Premium {
|
|
t.Fatal("premium user missing premium flag")
|
|
}
|
|
if out := tgSelfUser(premium); !out.Premium {
|
|
t.Fatal("premium self user missing premium flag")
|
|
}
|
|
if out := tgUser(expired); out.Premium {
|
|
t.Fatal("expired user must not carry premium flag")
|
|
}
|
|
if out := tgUser(bot); out.Premium {
|
|
t.Fatal("bot must never carry premium flag")
|
|
}
|
|
}
|
|
|
|
func TestTgUserEmojiStatusHydration(t *testing.T) {
|
|
now := time.Now().Unix()
|
|
u := domain.User{
|
|
ID: 1, AccessHash: 2, FirstName: "P",
|
|
PremiumUntil: int(now + 3600),
|
|
EmojiStatusDocumentID: 777,
|
|
EmojiStatusUntil: int(now + 600),
|
|
}
|
|
out := tgUser(u)
|
|
status, ok := out.GetEmojiStatus()
|
|
if !ok {
|
|
t.Fatal("premium user with status missing emoji_status field")
|
|
}
|
|
es, ok := status.(*tg.EmojiStatus)
|
|
if !ok || es.DocumentID != 777 {
|
|
t.Fatalf("emoji status = %#v, want document 777", status)
|
|
}
|
|
if until, ok := es.GetUntil(); !ok || until != int(now+600) {
|
|
t.Fatalf("emoji status until = %d ok=%v", until, ok)
|
|
}
|
|
|
|
// 会员到期后 emoji status 残值不得内联进 user TL。
|
|
u.PremiumUntil = int(now - 1)
|
|
if _, ok := tgUser(u).GetEmojiStatus(); ok {
|
|
t.Fatal("expired premium must not inline emoji_status")
|
|
}
|
|
|
|
// updateUserEmojiStatus 清除语义返回 emojiStatusEmpty。
|
|
if _, ok := tgUserEmojiStatus(u, now).(*tg.EmojiStatusEmpty); !ok {
|
|
t.Fatalf("tgUserEmojiStatus expired = %#v, want EmojiStatusEmpty", tgUserEmojiStatus(u, now))
|
|
}
|
|
}
|