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 }