forked from TrueCloudLab/neoneo-go
cli: add tests for wallet claim
Fix a NEO contract hash used in tx.
This commit is contained in:
parent
dff2ac1387
commit
583ef546f9
3 changed files with 30 additions and 11 deletions
|
@ -116,15 +116,15 @@ func (e *executor) Close(t *testing.T) {
|
|||
// GetTransaction returns tx with hash h after it has persisted.
|
||||
// If it is in mempool, we can just wait for the next block, otherwise
|
||||
// it must be already in chain. 1 second is time per block in a unittest chain.
|
||||
func (e *executor) GetTransaction(t *testing.T, h util.Uint256) *transaction.Transaction {
|
||||
func (e *executor) GetTransaction(t *testing.T, h util.Uint256) (*transaction.Transaction, uint32) {
|
||||
var tx *transaction.Transaction
|
||||
require.Eventually(t, func() bool {
|
||||
var height uint32
|
||||
require.Eventually(t, func() bool {
|
||||
var err error
|
||||
tx, height, err = e.Chain.GetTransaction(h)
|
||||
return err == nil && height != 0
|
||||
}, time.Second*2, time.Millisecond*100, "too long time waiting for block")
|
||||
return tx
|
||||
return tx, height
|
||||
}
|
||||
|
||||
func (e *executor) checkNextLine(t *testing.T, expected string) {
|
||||
|
@ -180,7 +180,7 @@ func (e *executor) run(args ...string) error {
|
|||
return e.CLI.Run(args)
|
||||
}
|
||||
|
||||
func (e *executor) checkTxPersisted(t *testing.T) {
|
||||
func (e *executor) checkTxPersisted(t *testing.T) (*transaction.Transaction, uint32) {
|
||||
line, err := e.Out.ReadString('\n')
|
||||
require.NoError(t, err)
|
||||
|
||||
|
@ -188,10 +188,11 @@ func (e *executor) checkTxPersisted(t *testing.T) {
|
|||
h, err := util.Uint256DecodeStringLE(line)
|
||||
require.NoError(t, err, "can't decode tx hash: %s", line)
|
||||
|
||||
tx := e.GetTransaction(t, h)
|
||||
tx, height := e.GetTransaction(t, h)
|
||||
aer, err := e.Chain.GetAppExecResult(tx.Hash())
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, vm.HaltState, aer.VMState)
|
||||
return tx, height
|
||||
}
|
||||
|
||||
func generateKeys(t *testing.T, n int) ([]*keys.PrivateKey, keys.PublicKeys) {
|
||||
|
|
|
@ -12,6 +12,7 @@ import (
|
|||
"github.com/nspcc-dev/neo-go/cli/options"
|
||||
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
||||
"github.com/nspcc-dev/neo-go/pkg/encoding/address"
|
||||
"github.com/nspcc-dev/neo-go/pkg/rpc/client"
|
||||
"github.com/nspcc-dev/neo-go/pkg/smartcontract/manifest"
|
||||
"github.com/nspcc-dev/neo-go/pkg/util"
|
||||
"github.com/nspcc-dev/neo-go/pkg/wallet"
|
||||
|
@ -232,13 +233,8 @@ func claimGas(ctx *cli.Context) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Temporary.
|
||||
neoHash, err := util.Uint160DecodeStringLE("3b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c")
|
||||
if err != nil {
|
||||
return cli.NewExitError(err, 1)
|
||||
}
|
||||
|
||||
hash, err := c.TransferNEP5(acc, scriptHash, neoHash, 0, 0)
|
||||
hash, err := c.TransferNEP5(acc, scriptHash, client.NeoContractHash, 0, 0)
|
||||
if err != nil {
|
||||
return cli.NewExitError(err, 1)
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package main
|
|||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"math/big"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
|
@ -163,3 +164,24 @@ func TestWalletExport(t *testing.T) {
|
|||
require.Equal(t, validatorWIF, strings.TrimSpace(line))
|
||||
})
|
||||
}
|
||||
|
||||
func TestClaimGas(t *testing.T) {
|
||||
e := newExecutor(t, true)
|
||||
defer e.Close(t)
|
||||
|
||||
start := e.Chain.BlockHeight()
|
||||
balanceBefore := e.Chain.GetUtilityTokenBalance(validatorHash)
|
||||
e.In.WriteString("one\r")
|
||||
e.Run(t, "neo-go", "wallet", "claim",
|
||||
"--unittest", "--rpc-endpoint", "http://"+e.RPC.Addr,
|
||||
"--wallet", validatorWallet,
|
||||
"--address", validatorAddr)
|
||||
tx, end := e.checkTxPersisted(t)
|
||||
b, _ := e.Chain.GetGoverningTokenBalance(validatorHash)
|
||||
cl := e.Chain.CalculateClaimable(b, start, end)
|
||||
require.True(t, cl.Sign() > 0)
|
||||
cl.Sub(cl, big.NewInt(tx.NetworkFee+tx.SystemFee))
|
||||
|
||||
balanceAfter := e.Chain.GetUtilityTokenBalance(validatorHash)
|
||||
require.Equal(t, 0, balanceAfter.Cmp(balanceBefore.Add(balanceBefore, cl)))
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue