github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/neotest/signer_test.go (about) 1 package neotest 2 3 import ( 4 "sort" 5 "testing" 6 7 "github.com/nspcc-dev/neo-go/pkg/crypto/keys" 8 "github.com/nspcc-dev/neo-go/pkg/smartcontract" 9 "github.com/nspcc-dev/neo-go/pkg/wallet" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestSingleSigner(t *testing.T) { 14 a, err := wallet.NewAccount() 15 require.NoError(t, err) 16 17 s := NewSingleSigner(a) 18 require.Equal(t, s.ScriptHash(), s.Account().Contract.ScriptHash()) 19 } 20 21 func TestMultiSigner(t *testing.T) { 22 const size = 4 23 24 pubs := make(keys.PublicKeys, size) 25 accs := make([]*wallet.Account, size) 26 for i := range accs { 27 a, err := wallet.NewAccount() 28 require.NoError(t, err) 29 30 accs[i] = a 31 pubs[i] = a.PublicKey() 32 } 33 34 sort.Sort(pubs) 35 m := smartcontract.GetDefaultHonestNodeCount(size) 36 for i := range accs { 37 require.NoError(t, accs[i].ConvertMultisig(m, pubs)) 38 } 39 40 s := NewMultiSigner(accs...) 41 for i := range pubs { 42 for j := range accs { 43 if pub := accs[j].PublicKey(); pub.Equal(pubs[i]) { 44 require.Equal(t, pub, s.Single(i).Account().PublicKey()) 45 } 46 } 47 } 48 }