github.com/storacha/go-ucanto@v0.7.2/transport/headercar/message/header_test.go (about)

     1  package message
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/storacha/go-ucanto/core/invocation"
     8  	"github.com/storacha/go-ucanto/core/message"
     9  	"github.com/storacha/go-ucanto/testing/fixtures"
    10  	"github.com/storacha/go-ucanto/ucan"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestRoundTrip(t *testing.T) {
    15  	inv, err := invocation.Invoke(
    16  		fixtures.Alice,
    17  		fixtures.Service,
    18  		ucan.NewCapability(
    19  			"test/invoke",
    20  			fixtures.Alice.DID().String(),
    21  			ucan.NoCaveats{},
    22  		),
    23  	)
    24  	require.NoError(t, err)
    25  
    26  	msg, err := message.Build([]invocation.Invocation{inv}, nil)
    27  	require.NoError(t, err)
    28  
    29  	s, err := EncodeHeader(msg)
    30  	require.NoError(t, err)
    31  
    32  	fmt.Printf("X-Agent-Message: %s (%d bytes)\n", s, len(s))
    33  
    34  	_, err = DecodeHeader(s)
    35  	require.NoError(t, err)
    36  }
    37  
    38  func TestEncodeHeaderTooLarge(t *testing.T) {
    39  	inv, err := invocation.Invoke(
    40  		fixtures.Alice,
    41  		fixtures.Service,
    42  		ucan.NewCapability(
    43  			"test/invoke",
    44  			fixtures.Alice.DID().String(),
    45  			ucan.NoCaveats{},
    46  		),
    47  	)
    48  	require.NoError(t, err)
    49  
    50  	msg, err := message.Build([]invocation.Invocation{inv}, nil)
    51  	require.NoError(t, err)
    52  
    53  	s, err := EncodeHeader(msg, WithMaxSize(1))
    54  	require.Empty(t, s)
    55  	require.ErrorIs(t, err, ErrHeaderTooLarge)
    56  }