github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/smartcontract/context/item_test.go (about)

     1  package context
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/nspcc-dev/neo-go/internal/random"
     7  	"github.com/nspcc-dev/neo-go/internal/testserdes"
     8  	"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
     9  	"github.com/nspcc-dev/neo-go/pkg/smartcontract"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestContextItem_AddSignature(t *testing.T) {
    14  	item := &Item{Signatures: make(map[string][]byte)}
    15  
    16  	priv1, err := keys.NewPrivateKey()
    17  	require.NoError(t, err)
    18  
    19  	pub1 := priv1.PublicKey()
    20  	sig1 := []byte{1, 2, 3}
    21  	item.AddSignature(pub1, sig1)
    22  	require.Equal(t, sig1, item.GetSignature(pub1))
    23  
    24  	priv2, err := keys.NewPrivateKey()
    25  	require.NoError(t, err)
    26  
    27  	pub2 := priv2.PublicKey()
    28  	sig2 := []byte{5, 6, 7}
    29  	item.AddSignature(pub2, sig2)
    30  	require.Equal(t, sig2, item.GetSignature(pub2))
    31  	require.Equal(t, sig1, item.GetSignature(pub1))
    32  }
    33  
    34  func TestContextItem_MarshalJSON(t *testing.T) {
    35  	priv1, err := keys.NewPrivateKey()
    36  	require.NoError(t, err)
    37  
    38  	priv2, err := keys.NewPrivateKey()
    39  	require.NoError(t, err)
    40  
    41  	expected := &Item{
    42  		Script: []byte{1, 2, 3},
    43  		Parameters: []smartcontract.Parameter{{
    44  			Type:  smartcontract.SignatureType,
    45  			Value: random.Bytes(keys.SignatureLen),
    46  		}},
    47  		Signatures: map[string][]byte{
    48  			priv1.PublicKey().StringCompressed(): random.Bytes(keys.SignatureLen),
    49  			priv2.PublicKey().StringCompressed(): random.Bytes(keys.SignatureLen),
    50  		},
    51  	}
    52  
    53  	testserdes.MarshalUnmarshalJSON(t, expected, new(Item))
    54  
    55  	// Empty script.
    56  	expected.Script = nil
    57  	testserdes.MarshalUnmarshalJSON(t, expected, new(Item))
    58  }