github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/rpcclient/notary/accounts_test.go (about)

     1  package notary
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/nspcc-dev/neo-go/pkg/core/transaction"
     7  	"github.com/nspcc-dev/neo-go/pkg/crypto/hash"
     8  	"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestFakeAccounts(t *testing.T) {
    13  	k, err := keys.NewPrivateKey()
    14  	require.NoError(t, err)
    15  
    16  	fac := FakeSimpleAccount(k.PublicKey())
    17  	require.False(t, fac.CanSign())
    18  
    19  	sh := k.PublicKey().GetScriptHash()
    20  	tx := transaction.New([]byte{1, 2, 3}, 1)
    21  	tx.Signers = append(tx.Signers, transaction.Signer{Account: sh})
    22  	require.NoError(t, fac.SignTx(0, tx))
    23  
    24  	fac = FakeContractAccount(sh)
    25  	require.False(t, fac.CanSign())
    26  	require.NoError(t, fac.SignTx(0, tx))
    27  
    28  	_, err = FakeMultisigAccount(0, keys.PublicKeys{k.PublicKey()})
    29  	require.Error(t, err)
    30  
    31  	fac, err = FakeMultisigAccount(1, keys.PublicKeys{k.PublicKey()})
    32  	require.NoError(t, err)
    33  	require.False(t, fac.CanSign())
    34  	tx.Signers[0].Account = hash.Hash160(fac.Contract.Script)
    35  	require.NoError(t, fac.SignTx(0, tx))
    36  }