Files
mautrix-telegram/pkg/gotd/transport/connection_test.go
T
2025-06-27 20:03:37 -07:00

52 lines
884 B
Go

package transport
import (
"bytes"
"context"
"net"
"testing"
"time"
"github.com/stretchr/testify/require"
"go.mau.fi/mautrix-telegram/pkg/gotd/bin"
"go.mau.fi/mautrix-telegram/pkg/gotd/proto/codec"
)
func TestConnection(t *testing.T) {
leftConn, rightConn := net.Pipe()
intermediate := codec.Intermediate{}
left := connection{
conn: leftConn,
codec: intermediate,
}
right := connection{
conn: rightConn,
codec: intermediate,
}
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
buf := bytes.Repeat([]byte{1, 2, 3, 4}, 50)
done := make(chan []byte)
go func() {
defer close(done)
var b bin.Buffer
if err := right.Recv(ctx, &b); err != nil {
t.Error(err)
return
}
done <- b.Buf
}()
if err := left.Send(ctx, &bin.Buffer{Buf: buf}); err != nil {
t.Fatal(err)
}
require.Equal(t, buf, <-done)
}