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  }