a73x

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
}