8d33206bb8
Add PublicKey() API to the Account and use it as appropriate, avoid creating additional references to the private key.
48 lines
1 KiB
Go
48 lines
1 KiB
Go
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.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].PublicKey(); pub.Equal(pubs[i]) {
|
|
require.Equal(t, pub, s.Single(i).Account().PublicKey())
|
|
}
|
|
}
|
|
}
|
|
}
|