aboutsummaryrefslogtreecommitdiff
path: root/network/protocol/pktline/decoder_resync_after_over_wire_max_test.go
blob: 9413823bc787b1ef2a6a40a3835cf772ac90076c (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package pktline_test

import (
	"bytes"
	"errors"
	"testing"

	"codeberg.org/lindenii/furgit/network/protocol/pktline"
)

func TestDecoderResyncAfterOverWireMax(t *testing.T) {
	t.Parallel()

	var b bytes.Buffer

	_, _ = b.WriteString("ffff")
	_, _ = b.Write(bytes.Repeat([]byte{'a'}, 65531))
	_, _ = b.WriteString("0005z")

	dec := pktline.NewDecoder(bytes.NewReader(b.Bytes()), pktline.ReadOptions{})
	dec.SetMaxData(70000)

	_, err := dec.ReadFrame()

	if _, ok := errors.AsType[*pktline.ProtocolError](err); !ok {
		t.Fatalf("got err %v, want ProtocolError", err)
	}

	f, err := dec.ReadFrame()
	if err != nil {
		t.Fatalf("ReadFrame #2: %v", err)
	}

	if f.Type != pktline.PacketData || string(f.Payload) != "z" {
		t.Fatalf("got frame %#v, want data z", f)
	}
}