github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/core/transaction/signer_test.go (about) 1 package transaction 2 3 import ( 4 "testing" 5 6 "github.com/nspcc-dev/neo-go/internal/testserdes" 7 "github.com/nspcc-dev/neo-go/pkg/crypto/keys" 8 "github.com/nspcc-dev/neo-go/pkg/util" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestCosignerEncodeDecode(t *testing.T) { 13 pk, err := keys.NewPrivateKey() 14 require.NoError(t, err) 15 expected := &Signer{ 16 Account: util.Uint160{1, 2, 3, 4, 5}, 17 Scopes: CustomContracts | CustomGroups | Rules, 18 AllowedContracts: []util.Uint160{{1, 2, 3, 4}, {6, 7, 8, 9}}, 19 AllowedGroups: []*keys.PublicKey{pk.PublicKey()}, 20 Rules: []WitnessRule{{Action: WitnessAllow, Condition: ConditionCalledByEntry{}}}, 21 } 22 actual := &Signer{} 23 testserdes.EncodeDecodeBinary(t, expected, actual) 24 } 25 26 func TestCosignerMarshallUnmarshallJSON(t *testing.T) { 27 expected := &Signer{ 28 Account: util.Uint160{1, 2, 3, 4, 5}, 29 Scopes: CustomContracts, 30 AllowedContracts: []util.Uint160{{1, 2, 3, 4}, {6, 7, 8, 9}}, 31 } 32 actual := &Signer{} 33 testserdes.MarshalUnmarshalJSON(t, expected, actual) 34 } 35 36 func TestSignerCopy(t *testing.T) { 37 pk, err := keys.NewPrivateKey() 38 require.NoError(t, err) 39 require.Nil(t, (*Signer)(nil).Copy()) 40 41 original := &Signer{ 42 Account: util.Uint160{1, 2, 3, 4, 5}, 43 Scopes: CustomContracts | CustomGroups | Rules, 44 AllowedContracts: []util.Uint160{{1, 2, 3, 4}, {6, 7, 8, 9}}, 45 AllowedGroups: keys.PublicKeys{pk.PublicKey()}, 46 Rules: []WitnessRule{{Action: WitnessAllow, Condition: ConditionCalledByEntry{}}}, 47 } 48 49 cp := original.Copy() 50 require.NotNil(t, cp, "Copied Signer should not be nil") 51 52 require.Equal(t, original.Account, cp.Account) 53 require.Equal(t, original.Scopes, cp.Scopes) 54 55 require.NotSame(t, original.AllowedContracts, cp.AllowedContracts) 56 require.Equal(t, original.AllowedContracts, cp.AllowedContracts) 57 58 require.NotSame(t, original.AllowedGroups, cp.AllowedGroups) 59 require.Equal(t, original.AllowedGroups, cp.AllowedGroups) 60 61 require.NotSame(t, original.Rules, cp.Rules) 62 require.Equal(t, original.Rules, cp.Rules) 63 64 original.AllowedContracts[0][0] = 255 65 original.AllowedGroups[0] = nil 66 original.Rules[0].Action = WitnessDeny 67 68 require.NotEqual(t, original.AllowedContracts[0][0], cp.AllowedContracts[0][0]) 69 require.NotEqual(t, original.AllowedGroups[0], cp.AllowedGroups[0]) 70 require.NotEqual(t, original.Rules[0].Action, cp.Rules[0].Action) 71 }