43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
package layerwire
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/gotd/td/bin"
|
|
"github.com/gotd/td/tg"
|
|
)
|
|
|
|
func TestValidateRoutableRequestCompatibilityAndUnknown(t *testing.T) {
|
|
t.Run("legacy theme is fully walked", func(t *testing.T) {
|
|
var b bin.Buffer
|
|
b.PutID(0x8d9d742b)
|
|
b.PutString("android")
|
|
(&tg.InputThemeSlug{Slug: "night"}).Encode(&b)
|
|
b.PutLong(42)
|
|
known, err := ValidateRoutableRequest(b.Buf)
|
|
if err != nil || !known {
|
|
t.Fatalf("legacy theme known=%v err=%v, want true/nil", known, err)
|
|
}
|
|
|
|
b.Buf = b.Buf[:len(b.Buf)-4]
|
|
known, err = ValidateRoutableRequest(b.Buf)
|
|
if !known || !errors.Is(err, ErrMalformed) {
|
|
t.Fatalf("truncated legacy theme known=%v err=%v, want true/malformed", known, err)
|
|
}
|
|
})
|
|
|
|
t.Run("unknown stays opaque and bounded", func(t *testing.T) {
|
|
var b bin.Buffer
|
|
b.PutID(0x12345678)
|
|
b.PutUint32(0xffffffff)
|
|
known, err := ValidateRoutableRequest(b.Buf)
|
|
if err != nil || known {
|
|
t.Fatalf("opaque unknown known=%v err=%v, want false/nil", known, err)
|
|
}
|
|
known, err = ValidateRoutableRequest(append(b.Buf, 1))
|
|
if known || !errors.Is(err, ErrMalformed) {
|
|
t.Fatalf("unaligned unknown known=%v err=%v, want false/malformed", known, err)
|
|
}
|
|
})
|
|
}
|