internal/transport/frame_test.go
Ref: Size: 1022 B History
package transport
import (
"bytes"
"testing"
"github.com/a73x/eitri/internal/pb"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestFrameRoundTrip(t *testing.T) {
var buf bytes.Buffer
in := &pb.AgentMessage{Msg: &pb.AgentMessage_Hello{Hello: &pb.Hello{HostId: "h1", LastSeenEpoch: 7}}}
require.NoError(t, WriteMsg(&buf, in))
var out pb.AgentMessage
require.NoError(t, ReadMsg(&buf, &out, DefaultMaxFrame))
assert.Equal(t, "h1", out.GetHello().GetHostId())
assert.Equal(t, uint64(7), out.GetHello().GetLastSeenEpoch())
}
func TestReadMsgRejectsOversizedFrame(t *testing.T) {
var buf bytes.Buffer
buf.Write([]byte{0x00, 0x50, 0x00, 0x00}) // 0x500000 ~ 5 MB
var out pb.AgentMessage
err := ReadMsg(&buf, &out, 1024)
require.Error(t, err)
assert.Contains(t, err.Error(), "frame too large")
}
func TestReadMsgEmptyStreamReturnsEOF(t *testing.T) {
var out pb.AgentMessage
err := ReadMsg(bytes.NewReader(nil), &out, DefaultMaxFrame)
require.Error(t, err) // io.EOF
}