package ect import ( "testing" "time" ) func TestValidateDAG_Root(t *testing.T) { store := NewMemoryLedger() payload := &Payload{ Tid: "task-001", Wid: "wf-1", Par: []string{}, PolDecision: PolDecisionApproved, } err := ValidateDAG(payload, store, DefaultDAGConfig()) if err != nil { t.Fatal(err) } } func TestValidateDAG_DuplicateTid(t *testing.T) { store := NewMemoryLedger() // Pre-insert same tid _, _ = store.Append("dummy-jws", &Payload{Tid: "task-001", Wid: "wf-1", Par: []string{}, PolDecision: PolDecisionApproved}) payload := &Payload{Tid: "task-001", Wid: "wf-1", Par: []string{}, PolDecision: PolDecisionApproved} err := ValidateDAG(payload, store, DefaultDAGConfig()) if err == nil { t.Fatal("expected error for duplicate tid") } } func TestValidateDAG_ParentExists(t *testing.T) { store := NewMemoryLedger() _, _ = store.Append("jws1", &Payload{Tid: "task-001", Wid: "wf-1", Par: []string{}, PolDecision: PolDecisionApproved, Iat: time.Now().Unix() - 60}) payload := &Payload{ Tid: "task-002", Wid: "wf-1", Par: []string{"task-001"}, PolDecision: PolDecisionApproved, Iat: time.Now().Unix(), } err := ValidateDAG(payload, store, DefaultDAGConfig()) if err != nil { t.Fatal(err) } } func TestValidateDAG_ParentNotFound(t *testing.T) { store := NewMemoryLedger() payload := &Payload{ Tid: "task-002", Par: []string{"task-missing"}, PolDecision: PolDecisionApproved, Iat: time.Now().Unix(), } err := ValidateDAG(payload, store, DefaultDAGConfig()) if err == nil { t.Fatal("expected error when parent not found") } }