86 lines
1.8 KiB
Go
86 lines
1.8 KiB
Go
package envelope_test
|
|
|
|
import (
|
|
"io"
|
|
"testing"
|
|
|
|
"github.com/ipfs/go-cid"
|
|
"github.com/multiformats/go-multicodec"
|
|
"github.com/multiformats/go-multihash"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"code.sonr.org/go/ucan/token/internal/envelope"
|
|
)
|
|
|
|
func TestCidFromBytes(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
expData := exampleDagCbor
|
|
expHash, err := multihash.Sum(expData, uint64(multicodec.Sha2_256), -1)
|
|
require.NoError(t, err)
|
|
|
|
data, err := envelope.ToDagCbor(examplePrivKey(t), newExample())
|
|
require.NoError(t, err)
|
|
|
|
id, err := envelope.CIDFromBytes(data)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, exampleCID, envelope.CIDToBase58BTC(id))
|
|
assert.Equal(t, expHash, id.Hash())
|
|
}
|
|
|
|
func TestStreaming(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
expData := []byte("this is a test")
|
|
|
|
expCID, err := cid.V1Builder{
|
|
Codec: uint64(multicodec.DagCbor),
|
|
MhType: multihash.SHA2_256,
|
|
MhLength: 0,
|
|
}.Sum(expData)
|
|
require.NoError(t, err)
|
|
|
|
t.Run("CIDReader()", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
r, w := io.Pipe() //nolint:varnamelen
|
|
cidReader := envelope.NewCIDReader(r)
|
|
|
|
go func() {
|
|
_, err := w.Write(expData)
|
|
assert.NoError(t, err)
|
|
assert.NoError(t, w.Close())
|
|
}()
|
|
|
|
actData, err := io.ReadAll(cidReader)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, expData, actData)
|
|
|
|
actCID, err := cidReader.CID()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, expCID, actCID)
|
|
})
|
|
|
|
t.Run("CIDWriter", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
r, w := io.Pipe() //nolint:varnamelen
|
|
cidWriter := envelope.NewCIDWriter(w)
|
|
|
|
go func() {
|
|
_, err := cidWriter.Write(expData)
|
|
assert.NoError(t, err)
|
|
assert.NoError(t, w.Close())
|
|
}()
|
|
|
|
actData, err := io.ReadAll(r)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, expData, actData)
|
|
|
|
actCID, err := cidWriter.CID()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, expCID, actCID)
|
|
})
|
|
}
|