iop/apps/node/internal/node/sink_test.go

59 lines
1.1 KiB
Go

package node
import (
"context"
"testing"
"time"
"google.golang.org/protobuf/proto"
"iop/apps/node/internal/runtime"
iop "iop/proto/gen/iop"
)
// mockSender is a minimal mock for protoSender.
type mockSender struct {
sent *iop.RunEvent
}
func (m *mockSender) Send(msg proto.Message) error {
if re, ok := msg.(*iop.RunEvent); ok {
m.sent = re
}
return nil
}
func TestSessionSinkEmitIncludesNodeID(t *testing.T) {
ms := &mockSender{}
sink := &sessionSink{
sess: ms,
nodeID: "test-node-123",
sessionID: "session-abc",
background: true,
}
event := runtime.RuntimeEvent{
RunID: "run-xyz",
Type: runtime.EventTypeStart,
Timestamp: time.Now(),
}
err := sink.Emit(context.Background(), event)
if err != nil {
t.Fatalf("Emit failed: %v", err)
}
if ms.sent == nil {
t.Fatal("no event sent")
}
if ms.sent.NodeId != "test-node-123" {
t.Errorf("expected NodeId %q, got %q", "test-node-123", ms.sent.NodeId)
}
if ms.sent.SessionId != "session-abc" {
t.Errorf("expected SessionId %q, got %q", "session-abc", ms.sent.SessionId)
}
if !ms.sent.Background {
t.Error("expected Background true")
}
}