github.com/ipld/go-ipld-prime@v0.21.0/codec/dagjson/marshal_test.go (about) 1 package dagjson 2 3 import ( 4 "testing" 5 6 qt "github.com/frankban/quicktest" 7 cid "github.com/ipfs/go-cid" 8 "github.com/ipld/go-ipld-prime" 9 "github.com/ipld/go-ipld-prime/datamodel" 10 "github.com/ipld/go-ipld-prime/fluent/qp" 11 cidlink "github.com/ipld/go-ipld-prime/linking/cid" 12 "github.com/ipld/go-ipld-prime/node/basicnode" 13 ) 14 15 var link = cid.MustParse("bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi") 16 17 func TestMarshalUndefCid(t *testing.T) { 18 node, err := qp.BuildMap(basicnode.Prototype.Any, -1, func(ma datamodel.MapAssembler) { 19 qp.MapEntry(ma, "UndefCid", qp.Link(cidlink.Link{Cid: cid.Undef})) 20 qp.MapEntry(ma, "DefCid", qp.Link(cidlink.Link{Cid: link})) 21 }) 22 qt.Assert(t, err, qt.IsNil) 23 _, err = ipld.Encode(node, Encode) 24 qt.Assert(t, err, qt.ErrorMatches, "encoding undefined CIDs are not supported by this codec") 25 } 26 27 // mirrored in json but with errors 28 func TestMarshalLinks(t *testing.T) { 29 linkNode := basicnode.NewLink(cidlink.Link{Cid: link}) 30 mapNode, err := qp.BuildMap(basicnode.Prototype.Any, -1, func(ma datamodel.MapAssembler) { 31 qp.MapEntry(ma, "Lnk", qp.Node(linkNode)) 32 }) 33 qt.Assert(t, err, qt.IsNil) 34 35 t.Run("link dag-json", func(t *testing.T) { 36 byts, err := ipld.Encode(linkNode, Encode) 37 qt.Assert(t, err, qt.IsNil) 38 qt.Assert(t, string(byts), qt.Equals, 39 `{"/":"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"}`) 40 }) 41 t.Run("nested link dag-json", func(t *testing.T) { 42 byts, err := ipld.Encode(mapNode, Encode) 43 qt.Assert(t, err, qt.IsNil) 44 qt.Assert(t, string(byts), qt.Equals, 45 `{"Lnk":{"/":"bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"}}`) 46 }) 47 } 48 49 // mirrored in json but with errors 50 func TestMarshalBytes(t *testing.T) { 51 bytsNode := basicnode.NewBytes([]byte("byte me")) 52 mapNode, err := qp.BuildMap(basicnode.Prototype.Any, -1, func(ma datamodel.MapAssembler) { 53 qp.MapEntry(ma, "Byts", qp.Node(bytsNode)) 54 }) 55 qt.Assert(t, err, qt.IsNil) 56 57 t.Run("bytes dag-json", func(t *testing.T) { 58 byts, err := ipld.Encode(bytsNode, Encode) 59 qt.Assert(t, err, qt.IsNil) 60 qt.Assert(t, string(byts), qt.Equals, 61 `{"/":{"bytes":"Ynl0ZSBtZQ"}}`) 62 }) 63 t.Run("nested bytes dag-json", func(t *testing.T) { 64 byts, err := ipld.Encode(mapNode, Encode) 65 qt.Assert(t, err, qt.IsNil) 66 qt.Assert(t, string(byts), qt.Equals, 67 `{"Byts":{"/":{"bytes":"Ynl0ZSBtZQ"}}}`) 68 }) 69 }