perf: sync protocol and core hardening updates
This commit is contained in:
parent
152fed3b87
commit
4390ebf5a9
283 changed files with 29231 additions and 2295 deletions
56
internal/store/private_send_idempotency_test.go
Normal file
56
internal/store/private_send_idempotency_test.go
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
package store
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"telesrv/internal/domain"
|
||||
)
|
||||
|
||||
func TestPrivateSendSnapshotIsDeepAndVersioned(t *testing.T) {
|
||||
message := domain.Message{
|
||||
ID: 7, UID: 8, RandomID: 9, OwnerUserID: 10,
|
||||
Peer: domain.Peer{Type: domain.PeerTypeUser, ID: 11},
|
||||
From: domain.Peer{Type: domain.PeerTypeUser, ID: 10},
|
||||
Date: 12, Out: true, Body: "first", Pts: 13,
|
||||
Entities: []domain.MessageEntity{{Type: domain.MessageEntityBold, Length: 5}},
|
||||
Media: &domain.MessageMedia{Kind: domain.MessageMediaKindContact, Contact: &domain.MessageContact{PhoneNumber: "+1", FirstName: "Alice"}},
|
||||
}
|
||||
raw, err := EncodePrivateSendSnapshot(message)
|
||||
if err != nil {
|
||||
t.Fatalf("encode private snapshot: %v", err)
|
||||
}
|
||||
message.Body = "mutated"
|
||||
message.Entities[0].Length = 1
|
||||
message.Media.Contact.FirstName = "Mutated"
|
||||
decoded, err := DecodePrivateSendSnapshot(raw)
|
||||
if err != nil {
|
||||
t.Fatalf("decode private snapshot: %v", err)
|
||||
}
|
||||
if decoded.Body != "first" || decoded.Entities[0].Length != 5 || decoded.Media.Contact.FirstName != "Alice" {
|
||||
t.Fatalf("decoded private snapshot = %+v, want immutable nested graph", decoded)
|
||||
}
|
||||
decoded.Media.Contact.FirstName = "Second mutation"
|
||||
again, err := DecodePrivateSendSnapshot(raw)
|
||||
if err != nil || again.Media.Contact.FirstName != "Alice" {
|
||||
t.Fatalf("second decode = %+v err=%v, want fresh graph", again, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestChannelSendSnapshotRejectsEmptyLegacyValue(t *testing.T) {
|
||||
if _, err := DecodeChannelSendSnapshot([]byte(`{}`)); err == nil {
|
||||
t.Fatal("empty legacy channel snapshot decoded successfully")
|
||||
}
|
||||
message := domain.ChannelMessage{
|
||||
ChannelID: 21, ID: 22, RandomID: 23, SenderUserID: 24,
|
||||
From: domain.Peer{Type: domain.PeerTypeUser, ID: 24},
|
||||
Date: 25, Body: "channel", Pts: 26,
|
||||
}
|
||||
raw, err := EncodeChannelSendSnapshot(message)
|
||||
if err != nil {
|
||||
t.Fatalf("encode channel snapshot: %v", err)
|
||||
}
|
||||
decoded, err := DecodeChannelSendSnapshot(raw)
|
||||
if err != nil || decoded.ChannelID != message.ChannelID || decoded.ID != message.ID || decoded.RandomID != message.RandomID || decoded.SenderUserID != message.SenderUserID || decoded.Body != message.Body || decoded.Pts != message.Pts {
|
||||
t.Fatalf("decoded channel snapshot = %+v err=%v, want %+v", decoded, err, message)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue