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

52 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{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 TestEventWriterRejectsUnverifiedRecordingAndWrongArchiveEvent(t *testing.T) {
writer := EventWriter{TenantID: "tenant-1", TenantKey: "tenant-demo-key", TraceID: "trace-1"}
if _, err := writer.RecordingReady(time.Unix(100, 0), "event-1", "call-1", "recording-1", "", "wav", 1, 16000, 1000, 100, strings.Repeat("a", 64)); err == nil {
t.Fatal("expected missing OSS verification ID to be rejected")
}
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")
}
}