- ect library: create, verify, DAG validation, ledger interface - In-memory ledger and ECTStore for full ledger mode - Test vectors and unit tests; two-agent demo (cmd/demo) - README: document refimpl scope and usage Co-authored-by: Cursor <cursoragent@cursor.com>
62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
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")
|
|
}
|
|
}
|