Files
go-sip/internal/agent/events_test.go
T

51 lines
1.6 KiB
Go

package agent
import (
"strings"
"testing"
"time"
"git.ipao.vip/rogee/go-sip/internal/contract"
)
func TestEventWriterBuildsApprovedRealtimeTranscript(t *testing.T) {
writer := EventWriter{DispatcherID: "11111111-1111-4111-8111-111111111111", TenantID: "tenant-1", TenantKey: "tenant-demo-key", TraceID: "trace-1"}
event, err := writer.TranscriptUpdated(time.Unix(100, 0), "event-1", "call-1", "turn-1", "segment-1", "customer", "您好", 1, true, 0, 600)
if err != nil {
t.Fatal(err)
}
if err := contract.ValidateEvent(event); err != nil {
t.Fatal(err)
}
if string(event) == "" || strings.Contains(string(event), "call.transcript") {
t.Fatal("invalid transcript alias or empty event")
}
spool, err := NewSpool(t.TempDir(), time.Now)
if err != nil {
t.Fatal(err)
}
if _, err := spool.Start("execution-1", 1, "session-1"); err != nil {
t.Fatal(err)
}
if err := spool.AppendApprovedEvent("execution-1", event); err != nil {
t.Fatal(err)
}
}
func TestEventWriterRejectsLegacyRecordingEventAndWrongArchiveEvent(t *testing.T) {
spool, err := NewSpool(t.TempDir(), time.Now)
if err != nil {
t.Fatal(err)
}
if _, err := spool.Start("execution-1", 1, "session-1"); err != nil {
t.Fatal(err)
}
if err := spool.AppendApprovedEvent("execution-1", []byte(`{"event_type":"call.transcript"}`)); err == nil {
t.Fatal("expected invalid realtime event name to be rejected")
}
if err := spool.AppendApprovedEvent("execution-1", []byte(`{"event_type":"recording.ready"}`)); err == nil {
t.Fatal("legacy recording.ready must not enter the Agent archive")
}
}