github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/p2p/encoder/varint_test.go (about) 1 package encoder 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/gogo/protobuf/proto" 8 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 9 "github.com/prysmaticlabs/prysm/shared/testutil/require" 10 ) 11 12 func TestReadVarint(t *testing.T) { 13 data := []byte("foobar data") 14 prefixedData := append(proto.EncodeVarint(uint64(len(data))), data...) 15 16 vi, err := readVarint(bytes.NewBuffer(prefixedData)) 17 require.NoError(t, err) 18 assert.Equal(t, uint64(len(data)), vi, "Received wrong varint") 19 } 20 21 func TestReadVarint_ExceedsMaxLength(t *testing.T) { 22 fByte := byte(1 << 7) 23 // Terminating byte. 24 tByte := byte(1 << 6) 25 var header []byte 26 for i := 0; i < 9; i++ { 27 header = append(header, fByte) 28 } 29 header = append(header, tByte) 30 _, err := readVarint(bytes.NewBuffer(header)) 31 require.NoError(t, err, "Expected no error from reading valid header") 32 length := len(header) 33 // Add an additional byte to make header invalid. 34 header = append(header[:length-1], []byte{fByte, tByte}...) 35 36 _, err = readVarint(bytes.NewBuffer(header)) 37 assert.ErrorContains(t, errExcessMaxLength.Error(), err, "Expected error from reading invalid header") 38 }