69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
|
// +build cli_test
|
||
|
|
||
|
package cli_test
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
|
||
|
"github.com/cosmos/cosmos-sdk/tests"
|
||
|
"github.com/cosmos/cosmos-sdk/tests/cli"
|
||
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||
|
"github.com/cosmos/cosmos-sdk/x/auth/client/testutil"
|
||
|
)
|
||
|
|
||
|
func TestCLIValidateSignatures(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
f := cli.InitFixtures(t)
|
||
|
|
||
|
// start simd server
|
||
|
proc := f.SDStart()
|
||
|
t.Cleanup(func() { proc.Stop(false) })
|
||
|
|
||
|
f.ValidateGenesis()
|
||
|
|
||
|
fooAddr := f.KeyAddress(cli.KeyFoo)
|
||
|
barAddr := f.KeyAddress(cli.KeyBar)
|
||
|
|
||
|
// generate sendTx with default gas
|
||
|
success, stdout, stderr := testutil.TxSend(f, fooAddr.String(), barAddr, sdk.NewInt64Coin("stake", 10), "--generate-only")
|
||
|
require.True(t, success)
|
||
|
require.Empty(t, stderr)
|
||
|
|
||
|
// write unsigned tx to file
|
||
|
unsignedTxFile, cleanup := tests.WriteToNewTempFile(t, stdout)
|
||
|
t.Cleanup(cleanup)
|
||
|
|
||
|
// validate we can successfully sign
|
||
|
success, stdout, _ = testutil.TxSign(f, cli.KeyFoo, unsignedTxFile.Name())
|
||
|
require.True(t, success)
|
||
|
|
||
|
stdTx := cli.UnmarshalStdTx(t, f.Cdc, stdout)
|
||
|
|
||
|
require.Equal(t, len(stdTx.Msgs), 1)
|
||
|
require.Equal(t, 1, len(stdTx.GetSignatures()))
|
||
|
require.Equal(t, fooAddr.String(), stdTx.GetSigners()[0].String())
|
||
|
|
||
|
// write signed tx to file
|
||
|
signedTxFile, cleanup := tests.WriteToNewTempFile(t, stdout)
|
||
|
t.Cleanup(cleanup)
|
||
|
|
||
|
// validate signatures
|
||
|
success, _, _ = testutil.TxValidateSignatures(f, signedTxFile.Name())
|
||
|
require.True(t, success)
|
||
|
|
||
|
// modify the transaction
|
||
|
stdTx.Memo = "MODIFIED-ORIGINAL-TX-BAD"
|
||
|
bz := cli.MarshalStdTx(t, f.Cdc, stdTx)
|
||
|
modSignedTxFile, cleanup := tests.WriteToNewTempFile(t, string(bz))
|
||
|
t.Cleanup(cleanup)
|
||
|
|
||
|
// validate signature validation failure due to different transaction sig bytes
|
||
|
success, _, _ = testutil.TxValidateSignatures(f, modSignedTxFile.Name())
|
||
|
require.False(t, success)
|
||
|
|
||
|
// Cleanup testing directories
|
||
|
f.Cleanup()
|
||
|
}
|