51 lines
1.6 KiB
Go
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")
|
|
}
|
|
}
|