github.com/storacha/go-ucanto@v0.7.2/core/message/datamodel/agentmessage_test.go (about)

     1  package datamodel_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/ipfs/go-cid"
     7  	"github.com/ipld/go-ipld-prime"
     8  	cidlink "github.com/ipld/go-ipld-prime/linking/cid"
     9  	"github.com/storacha/go-ucanto/core/ipld/block"
    10  	"github.com/storacha/go-ucanto/core/ipld/codec/cbor"
    11  	"github.com/storacha/go-ucanto/core/ipld/hash/sha256"
    12  	mdm "github.com/storacha/go-ucanto/core/message/datamodel"
    13  )
    14  
    15  func TestEncodeDecode(t *testing.T) {
    16  	l := cidlink.Link{Cid: cid.MustParse("bafkreiem4twkqzsq2aj4shbycd4yvoj2cx72vezicletlhi7dijjciqpui")}
    17  	ex := []ipld.Link{l}
    18  	rp := mdm.ReportModel{
    19  		Keys:   []string{l.String()},
    20  		Values: map[string]ipld.Link{l.String(): l},
    21  	}
    22  	d0 := mdm.DataModel{Execute: ex, Report: &rp}
    23  	m0 := mdm.AgentMessageModel{UcantoMessage7: &d0}
    24  	mblk, err := block.Encode(&m0, mdm.Type(), cbor.Codec, sha256.Hasher)
    25  	if err != nil {
    26  		t.Fatalf("encoding agent message: %s", err)
    27  	}
    28  
    29  	m1 := mdm.AgentMessageModel{}
    30  	err = block.Decode(mblk, &m1, mdm.Type(), cbor.Codec, sha256.Hasher)
    31  	if err != nil {
    32  		t.Fatalf("decoding agent message: %s", err)
    33  	}
    34  
    35  	d1 := m1.UcantoMessage7
    36  	if d1.Execute[0] != l || d1.Execute[0] != d0.Execute[0] {
    37  		t.Fatalf("failed round trip execute field")
    38  	}
    39  	if d1.Report.Values[l.String()] != l || d1.Report.Values[l.String()] != d0.Report.Values[l.String()] {
    40  		t.Fatalf("failed round trip report field")
    41  	}
    42  }