chore: refresh gramsrv public release
This commit is contained in:
parent
75cebe8dbf
commit
70b6820474
1274 changed files with 378751 additions and 59919 deletions
83
internal/rpc/encrypted_files_test.go
Normal file
83
internal/rpc/encrypted_files_test.go
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
package rpc
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/gotd/td/tg"
|
||||
)
|
||||
|
||||
// TestSendEncryptedFileFlow:sendEncryptedFile 铸造 EncryptedFile、随消息投递、返回
|
||||
// SentEncryptedFile{date,file},且 InputEncryptedFile 复用路径能回查同一文件。
|
||||
func TestSendEncryptedFileFlow(t *testing.T) {
|
||||
f := newEncryptedFixture(t)
|
||||
chatID, _ := f.acceptChat(t)
|
||||
chat, _, _ := f.store.GetSecretChat(f.ctx, chatID)
|
||||
f.sessions.reset()
|
||||
|
||||
sent, err := f.router.onMessagesSendEncryptedFile(f.adminCtx(), &tg.MessagesSendEncryptedFileRequest{
|
||||
Peer: tg.InputEncryptedChat{ChatID: chatID, AccessHash: chat.AdminAccessHash},
|
||||
RandomID: 71717,
|
||||
Data: []byte{0x01, 0x02},
|
||||
File: &tg.InputEncryptedFileUploaded{ID: 555, Parts: 1, KeyFingerprint: 7},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("sendEncryptedFile: %v", err)
|
||||
}
|
||||
sf, ok := sent.(*tg.MessagesSentEncryptedFile)
|
||||
if !ok || sf.Date == 0 {
|
||||
t.Fatalf("response = %T %+v, want SentEncryptedFile{date,file}", sent, sent)
|
||||
}
|
||||
ef, ok := sf.File.(*tg.EncryptedFile)
|
||||
if !ok || ef.ID == 0 {
|
||||
t.Fatalf("response file = %T, want non-empty EncryptedFile", sf.File)
|
||||
}
|
||||
|
||||
// 推送给 participant 的 updateNewEncryptedMessage 携带 file。
|
||||
recs := f.sessions.records()
|
||||
if len(recs) != 1 {
|
||||
t.Fatalf("send push = %d, want 1", len(recs))
|
||||
}
|
||||
em, ok := encNewMessagePayload(t, recs[0]).Message.(*tg.EncryptedMessage)
|
||||
if !ok {
|
||||
t.Fatalf("pushed message = %T, want EncryptedMessage", encNewMessagePayload(t, recs[0]).Message)
|
||||
}
|
||||
if _, ok := em.File.(*tg.EncryptedFile); !ok {
|
||||
t.Fatalf("pushed message file = %T, want EncryptedFile", em.File)
|
||||
}
|
||||
|
||||
// InputEncryptedFile 复用:按 id+access_hash 回查到同一文件。
|
||||
ref, found, err := f.router.deps.SecretChats.GetEncryptedFile(f.ctx, ef.ID, ef.AccessHash)
|
||||
if err != nil || !found || ref.ID != ef.ID {
|
||||
t.Fatalf("GetEncryptedFile reuse = found %v id %d err %v", found, ref.ID, err)
|
||||
}
|
||||
}
|
||||
|
||||
// TestUploadEncryptedFile:uploadEncryptedFile 铸造并返回 EncryptedFile。
|
||||
func TestUploadEncryptedFile(t *testing.T) {
|
||||
f := newEncryptedFixture(t)
|
||||
chatID, _ := f.acceptChat(t)
|
||||
chat, _, _ := f.store.GetSecretChat(f.ctx, chatID)
|
||||
|
||||
res, err := f.router.onMessagesUploadEncryptedFile(f.adminCtx(), &tg.MessagesUploadEncryptedFileRequest{
|
||||
Peer: tg.InputEncryptedChat{ChatID: chatID, AccessHash: chat.AdminAccessHash},
|
||||
File: &tg.InputEncryptedFileUploaded{ID: 888, Parts: 1, KeyFingerprint: 9},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("uploadEncryptedFile: %v", err)
|
||||
}
|
||||
ef, ok := res.(*tg.EncryptedFile)
|
||||
if !ok || ef.ID == 0 {
|
||||
t.Fatalf("upload response = %T, want non-empty EncryptedFile", res)
|
||||
}
|
||||
}
|
||||
|
||||
// TestEncryptedFileLocationKey:inputEncryptedFileLocation → "enc:<id>" 下载 key。
|
||||
func TestEncryptedFileLocationKey(t *testing.T) {
|
||||
key, ok := fileLocationKey(&tg.InputEncryptedFileLocation{ID: 123, AccessHash: 456})
|
||||
if !ok || key != "enc:123" {
|
||||
t.Fatalf("location key = %q ok %v, want enc:123", key, ok)
|
||||
}
|
||||
if _, ok := fileLocationKey(&tg.InputEncryptedFileLocation{ID: 0}); ok {
|
||||
t.Fatal("id=0 must be rejected")
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue