move gotd fork into repo. (#111)

- update to latest telegram layer
- remove some references to fields in tg.Entities that don't exist in
the schema
- originally added here:
https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e
  - referenced here
-
https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3
-
https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
This commit is contained in:
Adam Van Ymeren
2025-06-27 20:03:37 -07:00
committed by GitHub
parent 0952df0244
commit 7a04f298d2
19264 changed files with 1539697 additions and 84 deletions
+102
View File
@@ -0,0 +1,102 @@
package message
import (
"context"
"testing"
"github.com/go-faster/errors"
"github.com/stretchr/testify/require"
"go.mau.fi/mautrix-telegram/pkg/gotd/telegram/message/peer"
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
)
type testResolver struct {
t *testing.T
expectedDomain string
expected tg.InputPeerClass
}
func (r *testResolver) ResolveDomain(ctx context.Context, domain string) (tg.InputPeerClass, error) {
return r.expectResolve(ctx, domain)
}
func (r *testResolver) ResolvePhone(ctx context.Context, phone string) (tg.InputPeerClass, error) {
return r.expectResolve(ctx, phone)
}
func (r *testResolver) expectResolve(_ context.Context, domain string) (tg.InputPeerClass, error) {
if domain != r.expectedDomain {
err := errors.Errorf("expected domain %q, got %q", r.expectedDomain, domain)
r.t.Error(err)
return nil, err
}
return r.expected, nil
}
func resolver(t *testing.T, expectedDomain string, expected tg.InputPeerClass) peer.Resolver {
return &testResolver{t, expectedDomain, expected}
}
type answerable struct {
ID int
UserID int64
}
func (a answerable) GetPeer() tg.PeerClass {
return &tg.PeerUser{UserID: a.UserID}
}
func (a answerable) GetMessage() tg.MessageClass {
return &tg.Message{
ID: a.ID,
PeerID: a.GetPeer(),
}
}
func TestResolve(t *testing.T) {
a := require.New(t)
ctx := context.Background()
expected := &tg.InputPeerUser{UserID: 10, AccessHash: 10}
s := NewSender(nil).WithResolver(resolver(t, "durov", expected))
check := func(req *RequestBuilder, expected tg.InputPeerClass) {
p, err := req.AsInputPeer(ctx)
a.NoError(err)
a.Equal(expected, p)
}
check(s.Self(), &tg.InputPeerSelf{})
check(s.To(expected), expected)
check(s.Resolve("durov"), expected)
check(s.ResolveDomain("@durov"), expected)
check(s.ResolveDeeplink("https://t.me/durov"), expected)
uctx := tg.Entities{Users: map[int64]*tg.User{
expected.UserID: {ID: expected.UserID, AccessHash: expected.AccessHash, Username: "durov"},
}}
ans := answerable{ID: 10, UserID: expected.UserID}
check(s.Peer(uctx, ans), expected)
check(s.Answer(uctx, ans), expected)
}
func TestSender_ResolvePhone(t *testing.T) {
a := require.New(t)
ctx := context.Background()
expected := &tg.InputPeerChannel{ChannelID: 10, AccessHash: 10}
s := NewSender(nil).WithResolver(resolver(t, "13115552368", expected))
check := func(req *RequestBuilder, expected tg.InputPeerClass) {
p, err := req.AsInputPeer(ctx)
a.NoError(err)
a.Equal(expected, p)
}
// If there's somethin' strange
// in your neighborhood
check(s.Resolve("+13115552368"), expected)
// Who ya gonna call
// Ghostb...!
check(s.Resolve("+1 (311) 555-2368"), expected)
}