merged from gramsrv upstream
This commit is contained in:
parent
79c64ee916
commit
21a0856587
651 changed files with 54774 additions and 4590 deletions
|
|
@ -47,3 +47,51 @@ func TestDialogDraftGetRoundTrip(t *testing.T) {
|
|||
t.Fatalf("get deleted draft = found %v err %v, want absent", found, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestListDialogDraftsByPeersMatchesCompositePeerKeys(t *testing.T) {
|
||||
pool := testPool(t)
|
||||
ctx := context.Background()
|
||||
suffix := randomSuffix(t)
|
||||
owner, err := NewUserStore(pool).Create(ctx, domain.User{AccessHash: 41, Phone: "+1888" + suffix + "01", FirstName: "DraftPageOwner"})
|
||||
if err != nil {
|
||||
t.Fatalf("create owner: %v", err)
|
||||
}
|
||||
userID := owner.ID
|
||||
requestedUser := domain.Peer{Type: domain.PeerTypeUser, ID: userID + 1}
|
||||
requestedChannel := domain.Peer{Type: domain.PeerTypeChannel, ID: userID + 2}
|
||||
crossProductPeer := domain.Peer{Type: domain.PeerTypeChannel, ID: requestedUser.ID}
|
||||
t.Cleanup(func() {
|
||||
_, _ = pool.Exec(ctx, "DELETE FROM dialog_drafts WHERE user_id = $1", userID)
|
||||
_, _ = pool.Exec(ctx, "DELETE FROM users WHERE id = $1", userID)
|
||||
})
|
||||
|
||||
dialogs := NewDialogStore(pool)
|
||||
for _, draft := range []domain.DialogDraft{
|
||||
{Peer: requestedUser, Message: "requested user", Date: 101},
|
||||
{Peer: requestedChannel, Message: "requested channel", Date: 102},
|
||||
{Peer: crossProductPeer, Message: "must not leak", Date: 103},
|
||||
{Peer: requestedUser, TopMessageID: 77, Message: "topic draft", Date: 104},
|
||||
} {
|
||||
if err := dialogs.SaveDraft(ctx, userID, draft); err != nil {
|
||||
t.Fatalf("save draft %+v: %v", draft.Peer, err)
|
||||
}
|
||||
}
|
||||
|
||||
got, err := dialogs.ListDraftsByPeers(ctx, userID, []domain.Peer{requestedUser, requestedChannel, requestedUser})
|
||||
if err != nil {
|
||||
t.Fatalf("ListDraftsByPeers: %v", err)
|
||||
}
|
||||
if len(got) != 2 {
|
||||
t.Fatalf("drafts = %+v, want exactly two requested top-level drafts", got)
|
||||
}
|
||||
want := map[domain.Peer]string{requestedUser: "requested user", requestedChannel: "requested channel"}
|
||||
for _, draft := range got {
|
||||
if want[draft.Peer] != draft.Message {
|
||||
t.Fatalf("unexpected draft = %+v", draft)
|
||||
}
|
||||
delete(want, draft.Peer)
|
||||
}
|
||||
if len(want) != 0 {
|
||||
t.Fatalf("missing drafts = %+v", want)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue