neo-go/pkg/neotest/signer_test.go

49 lines
1 KiB
Go
Raw Normal View History

package neotest
import (
"sort"
"testing"
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
"github.com/nspcc-dev/neo-go/pkg/smartcontract"
"github.com/nspcc-dev/neo-go/pkg/wallet"
"github.com/stretchr/testify/require"
)
func TestSingleSigner(t *testing.T) {
a, err := wallet.NewAccount()
require.NoError(t, err)
s := NewSingleSigner(a)
require.Equal(t, s.ScriptHash(), s.Account().Contract.ScriptHash())
}
func TestMultiSigner(t *testing.T) {
const size = 4
pubs := make(keys.PublicKeys, size)
accs := make([]*wallet.Account, size)
for i := range accs {
a, err := wallet.NewAccount()
require.NoError(t, err)
accs[i] = a
pubs[i] = a.PrivateKey().PublicKey()
}
sort.Sort(pubs)
m := smartcontract.GetDefaultHonestNodeCount(size)
for i := range accs {
require.NoError(t, accs[i].ConvertMultisig(m, pubs))
}
s := NewMultiSigner(accs...)
for i := range pubs {
for j := range accs {
if pub := accs[j].PrivateKey().PublicKey(); pub.Equal(pubs[i]) {
require.Equal(t, pub, s.Single(i).Account().PrivateKey().PublicKey())
}
}
}
}