test: fix module cli tests (#15882)
This commit is contained in:
parent
7b10ada768
commit
c0eade17fe
@ -1,6 +1,7 @@
|
||||
package distribution
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"strings"
|
||||
@ -11,13 +12,14 @@ import (
|
||||
"github.com/cosmos/gogoproto/proto"
|
||||
"github.com/stretchr/testify/suite"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/codec/address"
|
||||
svrcmd "github.com/cosmos/cosmos-sdk/server/cmd"
|
||||
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
|
||||
"github.com/cosmos/cosmos-sdk/testutil/network"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/distribution/client/cli"
|
||||
distrclitestutil "github.com/cosmos/cosmos-sdk/x/distribution/client/testutil"
|
||||
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
|
||||
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
|
||||
)
|
||||
@ -556,13 +558,22 @@ func (s *E2ETestSuite) TestNewWithdrawRewardsCmd() {
|
||||
s.Run(tc.name, func() {
|
||||
clientCtx := val.ClientCtx
|
||||
|
||||
args := append([]string{tc.valAddr.String()}, tc.args...)
|
||||
|
||||
_, _ = s.network.WaitForHeightWithTimeout(10, time.Minute)
|
||||
bz, err := distrclitestutil.MsgWithdrawDelegatorRewardExec(clientCtx, tc.valAddr, tc.args...)
|
||||
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
cmd := cli.NewWithdrawRewardsCmd()
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(args)
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(clientCtx, cmd))
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bz, tc.respType), string(bz))
|
||||
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
txResp, err := clitestutil.GetTxResponse(s.network, clientCtx, tc.respType.(*sdk.TxResponse).TxHash)
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -68,7 +67,6 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
WithOutput(io.Discard).
|
||||
WithChainID("test-chain")
|
||||
|
||||
var outBuf bytes.Buffer
|
||||
ctxGen := func() client.Context {
|
||||
bz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
@ -76,7 +74,7 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
})
|
||||
return s.baseCtx.WithClient(c)
|
||||
}
|
||||
s.clientCtx = ctxGen().WithOutput(&outBuf)
|
||||
s.clientCtx = ctxGen()
|
||||
|
||||
kb := s.clientCtx.Keyring
|
||||
valAcc, _, err := kb.NewMnemonic("newAccount", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1)
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"testing"
|
||||
@ -66,7 +65,6 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
WithOutput(io.Discard).
|
||||
WithChainID("test-chain")
|
||||
|
||||
var outBuf bytes.Buffer
|
||||
ctxGen := func() client.Context {
|
||||
bz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
@ -74,7 +72,7 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
})
|
||||
return s.baseCtx.WithClient(c)
|
||||
}
|
||||
s.clientCtx = ctxGen().WithOutput(&outBuf)
|
||||
s.clientCtx = ctxGen()
|
||||
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
s.grantee = make([]sdk.AccAddress, 6)
|
||||
@ -152,7 +150,6 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
},
|
||||
)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), &response), out.String())
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -99,21 +98,18 @@ func (s *CLITestSuite) TestGetBalancesCmd() {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
var outBuf bytes.Buffer
|
||||
|
||||
clientCtx := tc.ctxGen().WithOutput(&outBuf)
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(tc.args)
|
||||
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(clientCtx, cmd))
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(tc.ctxGen(), cmd))
|
||||
|
||||
err := cmd.Execute()
|
||||
out, err := clitestutil.ExecTestCLICmd(tc.ctxGen(), cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(outBuf.Bytes(), tc.expectResult))
|
||||
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(out.Bytes(), tc.expectResult))
|
||||
s.Require().NoError(err)
|
||||
}
|
||||
})
|
||||
@ -183,21 +179,16 @@ func (s *CLITestSuite) TestGetSpendableBalancesCmd() {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
var outBuf bytes.Buffer
|
||||
|
||||
clientCtx := tc.ctxGen().WithOutput(&outBuf)
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(tc.args)
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(tc.ctxGen(), cmd))
|
||||
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(clientCtx, cmd))
|
||||
|
||||
err := cmd.Execute()
|
||||
out, err := clitestutil.ExecTestCLICmd(tc.ctxGen(), cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(outBuf.Bytes(), tc.expectResult))
|
||||
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(out.Bytes(), tc.expectResult))
|
||||
s.Require().NoError(err)
|
||||
}
|
||||
})
|
||||
@ -266,21 +257,18 @@ func (s *CLITestSuite) TestGetCmdDenomsMetadata() {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
var outBuf bytes.Buffer
|
||||
|
||||
clientCtx := tc.ctxGen().WithOutput(&outBuf)
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(tc.args)
|
||||
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(clientCtx, cmd))
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(tc.ctxGen(), cmd))
|
||||
|
||||
err := cmd.Execute()
|
||||
out, err := clitestutil.ExecTestCLICmd(tc.ctxGen(), cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(outBuf.Bytes(), tc.expectResult))
|
||||
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(out.Bytes(), tc.expectResult))
|
||||
s.Require().NoError(err)
|
||||
}
|
||||
})
|
||||
@ -352,21 +340,16 @@ func (s *CLITestSuite) TestGetCmdQueryTotalSupply() {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
var outBuf bytes.Buffer
|
||||
|
||||
clientCtx := tc.ctxGen().WithOutput(&outBuf)
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(tc.args)
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(tc.ctxGen(), cmd))
|
||||
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(clientCtx, cmd))
|
||||
|
||||
err := cmd.Execute()
|
||||
out, err := clitestutil.ExecTestCLICmd(tc.ctxGen(), cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(outBuf.Bytes(), tc.expectResult))
|
||||
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(out.Bytes(), tc.expectResult))
|
||||
s.Require().NoError(err)
|
||||
}
|
||||
})
|
||||
@ -426,21 +409,18 @@ func (s *CLITestSuite) TestGetCmdQuerySendEnabled() {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
var outBuf bytes.Buffer
|
||||
|
||||
clientCtx := tc.ctxGen().WithOutput(&outBuf)
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(tc.args)
|
||||
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(clientCtx, cmd))
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(tc.ctxGen(), cmd))
|
||||
|
||||
err := cmd.Execute()
|
||||
out, err := clitestutil.ExecTestCLICmd(tc.ctxGen(), cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(outBuf.Bytes(), tc.expectResult))
|
||||
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(out.Bytes(), tc.expectResult))
|
||||
s.Require().NoError(err)
|
||||
}
|
||||
})
|
||||
|
||||
@ -11,6 +11,7 @@ import (
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
svrcmd "github.com/cosmos/cosmos-sdk/server/cmd"
|
||||
"github.com/cosmos/cosmos-sdk/testutil"
|
||||
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/bank/client/cli"
|
||||
)
|
||||
@ -29,12 +30,12 @@ func (s *CLITestSuite) TestSendTxCmd() {
|
||||
}
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
ctxGen func() client.Context
|
||||
from, to sdk.AccAddress
|
||||
amount sdk.Coins
|
||||
extraArgs []string
|
||||
expectErr bool
|
||||
name string
|
||||
ctxGen func() client.Context
|
||||
from, to sdk.AccAddress
|
||||
amount sdk.Coins
|
||||
extraArgs []string
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"valid transaction",
|
||||
@ -48,7 +49,7 @@ func (s *CLITestSuite) TestSendTxCmd() {
|
||||
sdk.NewCoin("photon", sdkmath.NewInt(40)),
|
||||
),
|
||||
extraArgs,
|
||||
false,
|
||||
"",
|
||||
},
|
||||
{
|
||||
"invalid to Address",
|
||||
@ -62,7 +63,7 @@ func (s *CLITestSuite) TestSendTxCmd() {
|
||||
sdk.NewCoin("photon", sdkmath.NewInt(40)),
|
||||
),
|
||||
extraArgs,
|
||||
true,
|
||||
"empty address string is not allowed",
|
||||
},
|
||||
{
|
||||
"invalid coins",
|
||||
@ -73,25 +74,28 @@ func (s *CLITestSuite) TestSendTxCmd() {
|
||||
accounts[0].Address,
|
||||
nil,
|
||||
extraArgs,
|
||||
true,
|
||||
"invalid coins",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
s.Run(tc.name, func() {
|
||||
args := append([]string{tc.from.String(), tc.to.String(), tc.amount.String()}, tc.extraArgs...)
|
||||
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(append([]string{tc.from.String(), tc.to.String(), tc.amount.String()}, tc.extraArgs...))
|
||||
|
||||
cmd.SetArgs(args)
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(tc.ctxGen(), cmd))
|
||||
|
||||
err := cmd.Execute()
|
||||
if tc.expectErr {
|
||||
out, err := clitestutil.ExecTestCLICmd(tc.ctxGen(), cmd, args)
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(out.String(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
msg := &sdk.TxResponse{}
|
||||
s.Require().NoError(tc.ctxGen().Codec.UnmarshalJSON(out.Bytes(), msg), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -112,13 +116,13 @@ func (s *CLITestSuite) TestMultiSendTxCmd() {
|
||||
}
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
ctxGen func() client.Context
|
||||
from string
|
||||
to []string
|
||||
amount sdk.Coins
|
||||
extraArgs []string
|
||||
expectErr bool
|
||||
name string
|
||||
ctxGen func() client.Context
|
||||
from string
|
||||
to []string
|
||||
amount sdk.Coins
|
||||
extraArgs []string
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"valid transaction",
|
||||
@ -135,7 +139,7 @@ func (s *CLITestSuite) TestMultiSendTxCmd() {
|
||||
sdk.NewCoin("photon", sdkmath.NewInt(40)),
|
||||
),
|
||||
extraArgs,
|
||||
false,
|
||||
"",
|
||||
},
|
||||
{
|
||||
"invalid from Address",
|
||||
@ -152,7 +156,7 @@ func (s *CLITestSuite) TestMultiSendTxCmd() {
|
||||
sdk.NewCoin("photon", sdkmath.NewInt(40)),
|
||||
),
|
||||
extraArgs,
|
||||
true,
|
||||
"key not found",
|
||||
},
|
||||
{
|
||||
"invalid recipients",
|
||||
@ -169,7 +173,7 @@ func (s *CLITestSuite) TestMultiSendTxCmd() {
|
||||
sdk.NewCoin("photon", sdkmath.NewInt(40)),
|
||||
),
|
||||
extraArgs,
|
||||
true,
|
||||
"invalid bech32 string",
|
||||
},
|
||||
{
|
||||
"invalid amount",
|
||||
@ -183,7 +187,7 @@ func (s *CLITestSuite) TestMultiSendTxCmd() {
|
||||
},
|
||||
nil,
|
||||
extraArgs,
|
||||
true,
|
||||
"must send positive amount",
|
||||
},
|
||||
}
|
||||
|
||||
@ -203,11 +207,14 @@ func (s *CLITestSuite) TestMultiSendTxCmd() {
|
||||
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(tc.ctxGen(), cmd))
|
||||
|
||||
err := cmd.Execute()
|
||||
if tc.expectErr {
|
||||
out, err := clitestutil.ExecTestCLICmd(tc.ctxGen(), cmd, args)
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(out.String(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
msg := &sdk.TxResponse{}
|
||||
s.Require().NoError(tc.ctxGen().Codec.UnmarshalJSON(out.Bytes(), msg), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@ -38,9 +38,7 @@ func TestNewMsgVerifyInvariantTxCmd(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
errString string
|
||||
expectedCode uint32
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"missing module",
|
||||
@ -51,7 +49,7 @@ func TestNewMsgVerifyInvariantTxCmd(t *testing.T) {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, "invalid module name", 0,
|
||||
"invalid module name",
|
||||
},
|
||||
{
|
||||
"missing invariant route",
|
||||
@ -62,7 +60,7 @@ func TestNewMsgVerifyInvariantTxCmd(t *testing.T) {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, "invalid invariant route", 0,
|
||||
"invalid invariant route",
|
||||
},
|
||||
{
|
||||
"valid transaction",
|
||||
@ -73,7 +71,7 @@ func TestNewMsgVerifyInvariantTxCmd(t *testing.T) {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, "", 0,
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -81,22 +79,19 @@ func TestNewMsgVerifyInvariantTxCmd(t *testing.T) {
|
||||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
|
||||
cmd := cli.NewMsgVerifyInvariantTxCmd()
|
||||
cmd.SetOut(io.Discard)
|
||||
require.NotNil(t, cmd)
|
||||
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(tc.args)
|
||||
|
||||
require.NoError(t, client.SetCmdClientContextHandler(baseCtx, cmd))
|
||||
|
||||
err := cmd.Execute()
|
||||
if tc.expectErr {
|
||||
out, err := clitestutil.ExecTestCLICmd(baseCtx, cmd, tc.args)
|
||||
if tc.expectErrMsg != "" {
|
||||
require.Error(t, err)
|
||||
require.Contains(t, err.Error(), tc.errString)
|
||||
require.Contains(t, out.String(), tc.expectErrMsg)
|
||||
} else {
|
||||
require.NoError(t, err)
|
||||
msg := &sdk.TxResponse{}
|
||||
require.NoError(t, baseCtx.Codec.UnmarshalJSON(out.Bytes(), msg), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,16 +1,13 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
sdkmath "cosmossdk.io/math"
|
||||
abci "github.com/cometbft/cometbft/abci/types"
|
||||
rpcclientmock "github.com/cometbft/cometbft/rpc/client/mock"
|
||||
"github.com/cosmos/gogoproto/proto"
|
||||
"github.com/stretchr/testify/suite"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
@ -24,7 +21,6 @@ import (
|
||||
testutilmod "github.com/cosmos/cosmos-sdk/types/module/testutil"
|
||||
"github.com/cosmos/cosmos-sdk/x/bank"
|
||||
"github.com/cosmos/cosmos-sdk/x/distribution/client/cli"
|
||||
distrclitestutil "github.com/cosmos/cosmos-sdk/x/distribution/client/testutil"
|
||||
distrtestutil "github.com/cosmos/cosmos-sdk/x/distribution/testutil"
|
||||
"github.com/cosmos/cosmos-sdk/x/gov"
|
||||
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
|
||||
@ -55,7 +51,6 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
WithOutput(io.Discard).
|
||||
WithChainID("test-chain")
|
||||
|
||||
var outBuf bytes.Buffer
|
||||
ctxGen := func() client.Context {
|
||||
bz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
@ -63,7 +58,7 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
})
|
||||
return s.baseCtx.WithClient(c)
|
||||
}
|
||||
s.clientCtx = ctxGen().WithOutput(&outBuf)
|
||||
s.clientCtx = ctxGen()
|
||||
|
||||
cfg, err := network.DefaultConfigWithAppConfig(distrtestutil.AppConfig)
|
||||
s.Require().NoError(err)
|
||||
@ -467,216 +462,3 @@ func (s *CLITestSuite) TestGetCmdQueryCommunityPool() {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CLITestSuite) TestNewWithdrawRewardsCmd() {
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
valAddr fmt.Stringer
|
||||
args []string
|
||||
expectErr bool
|
||||
respType proto.Message
|
||||
}{
|
||||
{
|
||||
"invalid validator address",
|
||||
val[0].Address,
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, nil,
|
||||
},
|
||||
{
|
||||
"valid transaction",
|
||||
sdk.ValAddress(val[0].Address),
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, &sdk.TxResponse{},
|
||||
},
|
||||
{
|
||||
"valid transaction (with commission)",
|
||||
sdk.ValAddress(val[0].Address),
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=true", cli.FlagCommission),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, &sdk.TxResponse{},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
bz, err := distrclitestutil.MsgWithdrawDelegatorRewardExec(s.clientCtx, tc.valAddr, tc.args...)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(bz, tc.respType), string(bz))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CLITestSuite) TestNewWithdrawAllRewardsCmd() {
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
expErrMsg string
|
||||
respType proto.Message
|
||||
}{
|
||||
{
|
||||
"invalid transaction (offline)",
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagOffline),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true,
|
||||
"cannot generate tx in offline mode",
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"valid transaction",
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, "", &sdk.TxResponse{},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.NewWithdrawAllRewardsCmd()
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CLITestSuite) TestNewSetWithdrawAddrCmd() {
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
respType proto.Message
|
||||
}{
|
||||
{
|
||||
"invalid withdraw address",
|
||||
[]string{
|
||||
"foo",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, nil,
|
||||
},
|
||||
{
|
||||
"valid transaction",
|
||||
[]string{
|
||||
val[0].Address.String(),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, &sdk.TxResponse{},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.NewSetWithdrawAddrCmd(address.NewBech32Codec("cosmos"))
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CLITestSuite) TestNewFundCommunityPoolCmd() {
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
respType proto.Message
|
||||
}{
|
||||
{
|
||||
"invalid funding amount",
|
||||
[]string{
|
||||
"-43foocoin",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, nil,
|
||||
},
|
||||
{
|
||||
"valid transaction",
|
||||
[]string{
|
||||
sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(5431))).String(),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, &sdk.TxResponse{},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.NewFundCommunityPoolCmd()
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -1,59 +1,237 @@
|
||||
package cli
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
"github.com/stretchr/testify/require"
|
||||
sdkmath "cosmossdk.io/math"
|
||||
"github.com/cosmos/gogoproto/proto"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
|
||||
"github.com/cosmos/cosmos-sdk/testutil/testdata"
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/codec/address"
|
||||
svrcmd "github.com/cosmos/cosmos-sdk/server/cmd"
|
||||
"github.com/cosmos/cosmos-sdk/testutil"
|
||||
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/distribution/client/cli"
|
||||
)
|
||||
|
||||
func Test_splitAndCall_NoMessages(t *testing.T) {
|
||||
clientCtx := client.Context{}
|
||||
func (s *CLITestSuite) TestTxWithdrawRewardsCmd() {
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
|
||||
err := newSplitAndApply(nil, clientCtx, nil, nil, 10)
|
||||
require.NoError(t, err, "")
|
||||
}
|
||||
|
||||
func Test_splitAndCall_Splitting(t *testing.T) {
|
||||
clientCtx := client.Context{}
|
||||
|
||||
addr := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address())
|
||||
|
||||
// Add five messages
|
||||
msgs := []sdk.Msg{
|
||||
testdata.NewTestMsg(addr),
|
||||
testdata.NewTestMsg(addr),
|
||||
testdata.NewTestMsg(addr),
|
||||
testdata.NewTestMsg(addr),
|
||||
testdata.NewTestMsg(addr),
|
||||
testCases := []struct {
|
||||
name string
|
||||
valAddr fmt.Stringer
|
||||
args []string
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"invalid validator address",
|
||||
val[0].Address,
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
"invalid Bech32 prefix",
|
||||
},
|
||||
{
|
||||
"valid transaction",
|
||||
sdk.ValAddress(val[0].Address),
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
"",
|
||||
},
|
||||
{
|
||||
"valid transaction (with commission)",
|
||||
sdk.ValAddress(val[0].Address),
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=true", cli.FlagCommission),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
// Keep track of number of calls
|
||||
const chunkSize = 2
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
|
||||
callCount := 0
|
||||
err := newSplitAndApply(
|
||||
func(clientCtx client.Context, fs *pflag.FlagSet, msgs ...sdk.Msg) error {
|
||||
callCount++
|
||||
s.Run(tc.name, func() {
|
||||
args := append([]string{tc.valAddr.String()}, tc.args...)
|
||||
|
||||
require.NotNil(t, clientCtx)
|
||||
require.NotNil(t, msgs)
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
cmd := cli.NewWithdrawRewardsCmd()
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(args)
|
||||
s.Require().NoError(client.SetCmdClientContextHandler(s.clientCtx, cmd))
|
||||
|
||||
if callCount < 3 {
|
||||
require.Equal(t, len(msgs), 2)
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, args)
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
require.Equal(t, len(msgs), 1)
|
||||
s.Require().NoError(err)
|
||||
msg := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), msg), out.String())
|
||||
}
|
||||
|
||||
return nil
|
||||
},
|
||||
clientCtx, nil, msgs, chunkSize)
|
||||
|
||||
require.NoError(t, err, "")
|
||||
require.Equal(t, 3, callCount)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CLITestSuite) TestTxWithdrawAllRewardsCmd() {
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"invalid transaction (offline)",
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagOffline),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
"cannot generate tx in offline mode",
|
||||
},
|
||||
{
|
||||
"valid transaction",
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.NewWithdrawAllRewardsCmd()
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
msg := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), msg), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CLITestSuite) TestTxSetWithdrawAddrCmd() {
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
respType proto.Message
|
||||
}{
|
||||
{
|
||||
"invalid withdraw address",
|
||||
[]string{
|
||||
"foo",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, nil,
|
||||
},
|
||||
{
|
||||
"valid transaction",
|
||||
[]string{
|
||||
val[0].Address.String(),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, &sdk.TxResponse{},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.NewSetWithdrawAddrCmd(address.NewBech32Codec("cosmos"))
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CLITestSuite) TestTxFundCommunityPoolCmd() {
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
respType proto.Message
|
||||
}{
|
||||
{
|
||||
"invalid funding amount",
|
||||
[]string{
|
||||
"-43foocoin",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, nil,
|
||||
},
|
||||
{
|
||||
"valid transaction",
|
||||
[]string{
|
||||
sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(5431))).String(),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, &sdk.TxResponse{},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.NewFundCommunityPoolCmd()
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
59
x/distribution/client/cli/util_test.go
Normal file
59
x/distribution/client/cli/util_test.go
Normal file
@ -0,0 +1,59 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
|
||||
"github.com/cosmos/cosmos-sdk/testutil/testdata"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
)
|
||||
|
||||
func Test_splitAndCall_NoMessages(t *testing.T) {
|
||||
clientCtx := client.Context{}
|
||||
|
||||
err := newSplitAndApply(nil, clientCtx, nil, nil, 10)
|
||||
require.NoError(t, err, "")
|
||||
}
|
||||
|
||||
func Test_splitAndCall_Splitting(t *testing.T) {
|
||||
clientCtx := client.Context{}
|
||||
|
||||
addr := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address())
|
||||
|
||||
// Add five messages
|
||||
msgs := []sdk.Msg{
|
||||
testdata.NewTestMsg(addr),
|
||||
testdata.NewTestMsg(addr),
|
||||
testdata.NewTestMsg(addr),
|
||||
testdata.NewTestMsg(addr),
|
||||
testdata.NewTestMsg(addr),
|
||||
}
|
||||
|
||||
// Keep track of number of calls
|
||||
const chunkSize = 2
|
||||
|
||||
callCount := 0
|
||||
err := newSplitAndApply(
|
||||
func(clientCtx client.Context, fs *pflag.FlagSet, msgs ...sdk.Msg) error {
|
||||
callCount++
|
||||
|
||||
require.NotNil(t, clientCtx)
|
||||
require.NotNil(t, msgs)
|
||||
|
||||
if callCount < 3 {
|
||||
require.Equal(t, len(msgs), 2)
|
||||
} else {
|
||||
require.Equal(t, len(msgs), 1)
|
||||
}
|
||||
|
||||
return nil
|
||||
},
|
||||
clientCtx, nil, msgs, chunkSize)
|
||||
|
||||
require.NoError(t, err, "")
|
||||
require.Equal(t, 3, callCount)
|
||||
}
|
||||
@ -1,32 +0,0 @@
|
||||
package testutil
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
distrcli "github.com/cosmos/cosmos-sdk/x/distribution/client/cli"
|
||||
)
|
||||
|
||||
func MsgWithdrawDelegatorRewardExec(clientCtx client.Context, valAddr fmt.Stringer, extraArgs ...string) ([]byte, error) {
|
||||
buf := new(bytes.Buffer)
|
||||
clientCtx = clientCtx.WithOutput(buf)
|
||||
|
||||
ctx := context.Background()
|
||||
ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx)
|
||||
|
||||
args := []string{valAddr.String()}
|
||||
args = append(args, extraArgs...)
|
||||
|
||||
cmd := distrcli.NewWithdrawRewardsCmd()
|
||||
cmd.SetErr(buf)
|
||||
cmd.SetOut(buf)
|
||||
cmd.SetArgs(args)
|
||||
|
||||
if err := cmd.ExecuteContext(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buf.Bytes(), nil
|
||||
}
|
||||
@ -1,7 +1,6 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -10,7 +9,6 @@ import (
|
||||
|
||||
"cosmossdk.io/x/evidence"
|
||||
"cosmossdk.io/x/evidence/client/cli"
|
||||
abci "github.com/cometbft/cometbft/abci/types"
|
||||
rpcclientmock "github.com/cometbft/cometbft/rpc/client/mock"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
@ -19,7 +17,6 @@ import (
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keyring"
|
||||
svrcmd "github.com/cosmos/cosmos-sdk/server/cmd"
|
||||
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
testutilmod "github.com/cosmos/cosmos-sdk/types/module/testutil"
|
||||
)
|
||||
|
||||
@ -37,51 +34,25 @@ func TestGetQueryCmd(t *testing.T) {
|
||||
|
||||
testCases := map[string]struct {
|
||||
args []string
|
||||
ctxGen func() client.Context
|
||||
expCmdOutput string
|
||||
expectedOutput string
|
||||
expectErr bool
|
||||
expectErrMsg string
|
||||
}{
|
||||
"non-existent evidence": {
|
||||
[]string{"DF0C23E8634E480F84B9D5674A7CDC9816466DEC28A3358F73260F68D28D7660"},
|
||||
func() client.Context {
|
||||
bz, _ := encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
Value: bz,
|
||||
})
|
||||
return baseCtx.WithClient(c)
|
||||
},
|
||||
"DF0C23E8634E480F84B9D5674A7CDC9816466DEC28A3358F73260F68D28D7660",
|
||||
"invalid args": {
|
||||
[]string{"foo", "bar"},
|
||||
"",
|
||||
true,
|
||||
"accepts at most 1 arg(s)",
|
||||
},
|
||||
"all evidence (default pagination)": {
|
||||
[]string{},
|
||||
func() client.Context {
|
||||
bz, _ := encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
Value: bz,
|
||||
})
|
||||
return baseCtx.WithClient(c)
|
||||
},
|
||||
"",
|
||||
"evidence: []\npagination: null",
|
||||
false,
|
||||
"",
|
||||
},
|
||||
"all evidence (json output)": {
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=json", flags.FlagOutput),
|
||||
},
|
||||
func() client.Context {
|
||||
bz, _ := encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
Value: bz,
|
||||
})
|
||||
return baseCtx.WithClient(c)
|
||||
},
|
||||
"",
|
||||
`{"evidence":[],"pagination":null}`,
|
||||
false,
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -89,31 +60,21 @@ func TestGetQueryCmd(t *testing.T) {
|
||||
tc := tc
|
||||
|
||||
t.Run(name, func(t *testing.T) {
|
||||
var outBuf bytes.Buffer
|
||||
|
||||
clientCtx := tc.ctxGen().WithOutput(&outBuf)
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
|
||||
cmd := cli.GetQueryCmd()
|
||||
cmd.SetOut(io.Discard)
|
||||
require.NotNil(t, cmd)
|
||||
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(tc.args)
|
||||
|
||||
require.NoError(t, client.SetCmdClientContextHandler(clientCtx, cmd))
|
||||
|
||||
if len(tc.args) != 0 {
|
||||
require.Contains(t, fmt.Sprint(cmd), tc.expCmdOutput)
|
||||
}
|
||||
require.NoError(t, client.SetCmdClientContextHandler(baseCtx, cmd))
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(baseCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
require.Error(t, err)
|
||||
require.Contains(t, err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
require.NoError(t, err)
|
||||
}
|
||||
require.Contains(t, fmt.Sprint(cmd), "evidence [] [] Query for evidence by hash or for all (paginated) submitted evidence")
|
||||
|
||||
require.Contains(t, strings.TrimSpace(out.String()), tc.expectedOutput)
|
||||
})
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@ require (
|
||||
cosmossdk.io/store v0.1.0-alpha.1.0.20230328185921-37ba88872dbc
|
||||
github.com/cometbft/cometbft v0.37.1-0.20230411132551-3a91d155e664
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418140744-0dde947d0ab7
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419074131-aa683247d515
|
||||
github.com/cosmos/gogoproto v1.4.8
|
||||
github.com/golang/mock v1.6.0
|
||||
github.com/golang/protobuf v1.5.3
|
||||
|
||||
@ -183,8 +183,8 @@ github.com/cosmos/cosmos-db v1.0.0-rc.1 h1:SjnT8B6WKMW9WEIX32qMhnEEKcI7ZP0+G1Sa9
|
||||
github.com/cosmos/cosmos-db v1.0.0-rc.1/go.mod h1:Dnmk3flSf5lkwCqvvjNpoxjpXzhxnCAFzKHlbaForso=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418140744-0dde947d0ab7 h1:+Q/K5pdQdQjp21gIxlQgGy4dOZk9gUBSQmJCYIf1bWA=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418140744-0dde947d0ab7/go.mod h1:BPvKPN63ettXrpz67uM1rHEqX/UVVkAfceFCPyp217E=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419074131-aa683247d515 h1:KMbJ5nAA0Xk79z0D1oL3kiw9lBYiqlV3ZqUxXVbbgBY=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419074131-aa683247d515/go.mod h1:BPvKPN63ettXrpz67uM1rHEqX/UVVkAfceFCPyp217E=
|
||||
github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y=
|
||||
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
|
||||
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
@ -70,7 +69,6 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
WithOutput(io.Discard).
|
||||
WithChainID("test-chain")
|
||||
|
||||
var outBuf bytes.Buffer
|
||||
ctxGen := func() client.Context {
|
||||
bz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
@ -79,7 +77,7 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
|
||||
return s.baseCtx.WithClient(c)
|
||||
}
|
||||
s.clientCtx = ctxGen().WithOutput(&outBuf)
|
||||
s.clientCtx = ctxGen()
|
||||
|
||||
if testing.Short() {
|
||||
s.T().Skip("skipping test in unit-tests mode.")
|
||||
@ -640,7 +638,6 @@ func (s *CLITestSuite) TestFilteredFeeAllowance() {
|
||||
pub, err := k.GetPubKey()
|
||||
s.Require().NoError(err)
|
||||
grantee := sdk.AccAddress(pub.Address())
|
||||
|
||||
clientCtx := s.clientCtx
|
||||
|
||||
commonFlags := []string{
|
||||
@ -649,15 +646,12 @@ func (s *CLITestSuite) TestFilteredFeeAllowance() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100))).String()),
|
||||
}
|
||||
spendLimit := sdk.NewCoin("stake", sdkmath.NewInt(1000))
|
||||
|
||||
allowMsgs := strings.Join([]string{sdk.MsgTypeURL(&govv1beta1.MsgSubmitProposal{}), sdk.MsgTypeURL(&govv1.MsgVoteWeighted{})}, ",")
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
respType proto.Message
|
||||
expectedCode uint32
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"invalid granter address",
|
||||
@ -671,7 +665,7 @@ func (s *CLITestSuite) TestFilteredFeeAllowance() {
|
||||
},
|
||||
commonFlags...,
|
||||
),
|
||||
true, &sdk.TxResponse{}, 0,
|
||||
"key not found",
|
||||
},
|
||||
{
|
||||
"invalid grantee address",
|
||||
@ -685,7 +679,7 @@ func (s *CLITestSuite) TestFilteredFeeAllowance() {
|
||||
},
|
||||
commonFlags...,
|
||||
),
|
||||
true, &sdk.TxResponse{}, 0,
|
||||
"decoding bech32 failed",
|
||||
},
|
||||
{
|
||||
"valid filter fee grant",
|
||||
@ -699,7 +693,7 @@ func (s *CLITestSuite) TestFilteredFeeAllowance() {
|
||||
},
|
||||
commonFlags...,
|
||||
),
|
||||
false, &sdk.TxResponse{}, 0,
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -709,22 +703,21 @@ func (s *CLITestSuite) TestFilteredFeeAllowance() {
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.NewCmdFeeGrant(codecaddress.NewBech32Codec("cosmos"))
|
||||
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
|
||||
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
msg := &sdk.TxResponse{}
|
||||
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), msg), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// exec filtered fee allowance
|
||||
cases := []struct {
|
||||
name string
|
||||
malleate func() error
|
||||
respType proto.Message
|
||||
expectedCode uint32
|
||||
name string
|
||||
malleate func() error
|
||||
}{
|
||||
{
|
||||
"valid proposal tx",
|
||||
@ -735,8 +728,6 @@ func (s *CLITestSuite) TestFilteredFeeAllowance() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100))).String()),
|
||||
)
|
||||
},
|
||||
&sdk.TxResponse{},
|
||||
0,
|
||||
},
|
||||
{
|
||||
"valid weighted_vote tx",
|
||||
@ -746,8 +737,6 @@ func (s *CLITestSuite) TestFilteredFeeAllowance() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100))).String()),
|
||||
)
|
||||
},
|
||||
&sdk.TxResponse{},
|
||||
2,
|
||||
},
|
||||
{
|
||||
"should fail with unauthorized msgs",
|
||||
@ -768,8 +757,6 @@ func (s *CLITestSuite) TestFilteredFeeAllowance() {
|
||||
|
||||
return err
|
||||
},
|
||||
&sdk.TxResponse{},
|
||||
7,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ require (
|
||||
cosmossdk.io/store v0.1.0-alpha.1.0.20230328185921-37ba88872dbc
|
||||
github.com/cometbft/cometbft v0.37.1-0.20230411132551-3a91d155e664
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418200457-cd283a676d79
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419124727-7b10ada768f4
|
||||
github.com/cosmos/gogoproto v1.4.8
|
||||
github.com/golang/mock v1.6.0
|
||||
github.com/golang/protobuf v1.5.3
|
||||
|
||||
@ -187,8 +187,8 @@ github.com/cosmos/cosmos-db v1.0.0-rc.1 h1:SjnT8B6WKMW9WEIX32qMhnEEKcI7ZP0+G1Sa9
|
||||
github.com/cosmos/cosmos-db v1.0.0-rc.1/go.mod h1:Dnmk3flSf5lkwCqvvjNpoxjpXzhxnCAFzKHlbaForso=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418200457-cd283a676d79 h1:Qa98Gl7JmoPWfrmfn/sL+vyeNZcqjM7EXhIypvUDkFs=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418200457-cd283a676d79/go.mod h1:BPvKPN63ettXrpz67uM1rHEqX/UVVkAfceFCPyp217E=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419124727-7b10ada768f4 h1:tZ2vcNWznBxIIK37nlgrh4n/n5aQv0KY6VzIb86xTNs=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419124727-7b10ada768f4/go.mod h1:BPvKPN63ettXrpz67uM1rHEqX/UVVkAfceFCPyp217E=
|
||||
github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y=
|
||||
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
|
||||
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -52,7 +51,6 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
WithOutput(io.Discard).
|
||||
WithChainID("test-chain")
|
||||
|
||||
var outBuf bytes.Buffer
|
||||
ctxGen := func() client.Context {
|
||||
bz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
@ -60,7 +58,7 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
})
|
||||
return s.baseCtx.WithClient(c)
|
||||
}
|
||||
s.clientCtx = ctxGen().WithOutput(&outBuf)
|
||||
s.clientCtx = ctxGen()
|
||||
}
|
||||
|
||||
func (s *CLITestSuite) TestGenTxCmd() {
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -10,7 +9,6 @@ import (
|
||||
sdkmath "cosmossdk.io/math"
|
||||
abci "github.com/cometbft/cometbft/abci/types"
|
||||
rpcclientmock "github.com/cometbft/cometbft/rpc/client/mock"
|
||||
"github.com/cosmos/gogoproto/proto"
|
||||
"github.com/stretchr/testify/suite"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
@ -54,7 +52,6 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
WithOutput(io.Discard).
|
||||
WithChainID("test-chain")
|
||||
|
||||
var outBuf bytes.Buffer
|
||||
ctxGen := func() client.Context {
|
||||
bz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
@ -62,7 +59,7 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
})
|
||||
return s.baseCtx.WithClient(c)
|
||||
}
|
||||
s.clientCtx = ctxGen().WithOutput(&outBuf)
|
||||
s.clientCtx = ctxGen()
|
||||
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
|
||||
@ -130,10 +127,9 @@ func (s *CLITestSuite) TestNewCmdSubmitProposal() {
|
||||
defer validPropFile.Close()
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
respType proto.Message
|
||||
name string
|
||||
args []string
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"invalid proposal",
|
||||
@ -142,7 +138,7 @@ func (s *CLITestSuite) TestNewCmdSubmitProposal() {
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, nil,
|
||||
"invalid decimal coin expression",
|
||||
},
|
||||
{
|
||||
"valid proposal",
|
||||
@ -153,7 +149,7 @@ func (s *CLITestSuite) TestNewCmdSubmitProposal() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -164,11 +160,13 @@ func (s *CLITestSuite) TestNewCmdSubmitProposal() {
|
||||
cmd := cli.NewCmdSubmitProposal()
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
msg := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), msg), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -195,10 +193,9 @@ func (s *CLITestSuite) TestNewCmdSubmitLegacyProposal() {
|
||||
defer validPropFile.Close()
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
respType proto.Message
|
||||
name string
|
||||
args []string
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"invalid proposal (file)",
|
||||
@ -208,7 +205,7 @@ func (s *CLITestSuite) TestNewCmdSubmitLegacyProposal() {
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, nil,
|
||||
"failed to parse proposal: proposal title is required",
|
||||
},
|
||||
{
|
||||
"invalid proposal",
|
||||
@ -220,7 +217,7 @@ func (s *CLITestSuite) TestNewCmdSubmitLegacyProposal() {
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, nil,
|
||||
"failed to parse proposal: proposal title is required",
|
||||
},
|
||||
{
|
||||
"valid transaction (file)",
|
||||
@ -232,7 +229,7 @@ func (s *CLITestSuite) TestNewCmdSubmitLegacyProposal() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
{
|
||||
"valid transaction",
|
||||
@ -246,7 +243,7 @@ func (s *CLITestSuite) TestNewCmdSubmitLegacyProposal() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -257,11 +254,13 @@ func (s *CLITestSuite) TestNewCmdSubmitLegacyProposal() {
|
||||
cmd := cli.NewCmdSubmitLegacyProposal()
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
msg := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), msg), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -271,31 +270,33 @@ func (s *CLITestSuite) TestNewCmdDeposit() {
|
||||
val := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
name string
|
||||
args []string
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"without proposal id",
|
||||
"invalid proposal id",
|
||||
[]string{
|
||||
"abc",
|
||||
sdk.NewCoin("stake", sdkmath.NewInt(10)).String(), // 10stake
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true,
|
||||
"proposal-id abc not a valid uint, please input a valid proposal-id",
|
||||
},
|
||||
{
|
||||
"without deposit amount",
|
||||
[]string{
|
||||
"1",
|
||||
"invalidCoin",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true,
|
||||
"invalid decimal coin expression: invalidCoin",
|
||||
},
|
||||
{
|
||||
"deposit on a proposal",
|
||||
@ -307,23 +308,24 @@ func (s *CLITestSuite) TestNewCmdDeposit() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false,
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
var resp sdk.TxResponse
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.NewCmdDeposit()
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), &resp), out.String())
|
||||
resp := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), resp), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -335,18 +337,12 @@ func (s *CLITestSuite) TestNewCmdVote() {
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
expectedCode uint32
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"invalid vote",
|
||||
[]string{},
|
||||
true, 0,
|
||||
},
|
||||
{
|
||||
"vote for invalid proposal",
|
||||
[]string{
|
||||
"10",
|
||||
"abc",
|
||||
"yes",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
@ -354,7 +350,19 @@ func (s *CLITestSuite) TestNewCmdVote() {
|
||||
fmt.Sprintf("--metadata=%s", "AQ=="),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, 3,
|
||||
"proposal-id abc not a valid int, please input a valid proposal-id",
|
||||
},
|
||||
{
|
||||
"invalid vote",
|
||||
[]string{
|
||||
"1",
|
||||
"AYE",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
"'AYE' is not a valid vote option",
|
||||
},
|
||||
{
|
||||
"valid vote",
|
||||
@ -366,7 +374,7 @@ func (s *CLITestSuite) TestNewCmdVote() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, 0,
|
||||
"",
|
||||
},
|
||||
{
|
||||
"valid vote with metadata",
|
||||
@ -379,7 +387,7 @@ func (s *CLITestSuite) TestNewCmdVote() {
|
||||
fmt.Sprintf("--metadata=%s", "AQ=="),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, 0,
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -387,15 +395,15 @@ func (s *CLITestSuite) TestNewCmdVote() {
|
||||
tc := tc
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.NewCmdVote()
|
||||
var txResp sdk.TxResponse
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), &txResp), out.String())
|
||||
resp := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), resp), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -407,25 +415,31 @@ func (s *CLITestSuite) TestNewCmdWeightedVote() {
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
expectedCode uint32
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"invalid vote",
|
||||
[]string{},
|
||||
true, 0,
|
||||
},
|
||||
{
|
||||
"vote for invalid proposal",
|
||||
[]string{
|
||||
"10",
|
||||
"abc",
|
||||
"yes",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, 3,
|
||||
"proposal-id abc not a valid int, please input a valid proposal-id",
|
||||
},
|
||||
{
|
||||
"invalid vote",
|
||||
[]string{
|
||||
"1",
|
||||
"AYE",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val[0].Address.String()),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
"'AYE' is not a valid vote option",
|
||||
},
|
||||
{
|
||||
"valid vote",
|
||||
@ -437,7 +451,7 @@ func (s *CLITestSuite) TestNewCmdWeightedVote() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, 0,
|
||||
"",
|
||||
},
|
||||
{
|
||||
"valid vote with metadata",
|
||||
@ -450,7 +464,7 @@ func (s *CLITestSuite) TestNewCmdWeightedVote() {
|
||||
fmt.Sprintf("--metadata=%s", "AQ=="),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, 0,
|
||||
"",
|
||||
},
|
||||
{
|
||||
"invalid valid split vote string",
|
||||
@ -462,7 +476,7 @@ func (s *CLITestSuite) TestNewCmdWeightedVote() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
true, 0,
|
||||
"'yes/0.6' is not a valid vote option",
|
||||
},
|
||||
{
|
||||
"valid split vote",
|
||||
@ -474,7 +488,7 @@ func (s *CLITestSuite) TestNewCmdWeightedVote() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
|
||||
},
|
||||
false, 0,
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -482,15 +496,14 @@ func (s *CLITestSuite) TestNewCmdWeightedVote() {
|
||||
tc := tc
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.NewCmdWeightedVote()
|
||||
var txResp sdk.TxResponse
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), &txResp), out.String())
|
||||
resp := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), resp), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,6 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -94,7 +93,6 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
WithChainID("test-chain")
|
||||
|
||||
s.ctx = svrcmd.CreateExecuteContext(context.Background())
|
||||
var outBuf bytes.Buffer
|
||||
ctxGen := func() client.Context {
|
||||
bz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
@ -102,7 +100,7 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
})
|
||||
return s.baseCtx.WithClient(c)
|
||||
}
|
||||
s.clientCtx = ctxGen().WithOutput(&outBuf)
|
||||
s.clientCtx = ctxGen()
|
||||
|
||||
cfg, err := network.DefaultConfigWithAppConfig(nfttestutil.AppConfig)
|
||||
s.Require().NoError(err)
|
||||
|
||||
@ -11,7 +11,7 @@ require (
|
||||
cosmossdk.io/store v0.1.0-alpha.1.0.20230328185921-37ba88872dbc
|
||||
github.com/cometbft/cometbft v0.37.1-0.20230411132551-3a91d155e664
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418200457-cd283a676d79
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419124727-7b10ada768f4
|
||||
github.com/cosmos/gogoproto v1.4.8
|
||||
github.com/golang/mock v1.6.0
|
||||
github.com/golang/protobuf v1.5.3
|
||||
|
||||
@ -182,8 +182,8 @@ github.com/cosmos/cosmos-db v1.0.0-rc.1 h1:SjnT8B6WKMW9WEIX32qMhnEEKcI7ZP0+G1Sa9
|
||||
github.com/cosmos/cosmos-db v1.0.0-rc.1/go.mod h1:Dnmk3flSf5lkwCqvvjNpoxjpXzhxnCAFzKHlbaForso=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418200457-cd283a676d79 h1:Qa98Gl7JmoPWfrmfn/sL+vyeNZcqjM7EXhIypvUDkFs=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418200457-cd283a676d79/go.mod h1:BPvKPN63ettXrpz67uM1rHEqX/UVVkAfceFCPyp217E=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419124727-7b10ada768f4 h1:tZ2vcNWznBxIIK37nlgrh4n/n5aQv0KY6VzIb86xTNs=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419124727-7b10ada768f4/go.mod h1:BPvKPN63ettXrpz67uM1rHEqX/UVVkAfceFCPyp217E=
|
||||
github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y=
|
||||
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
|
||||
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"testing"
|
||||
@ -52,7 +51,6 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
WithOutput(io.Discard).
|
||||
WithChainID("test-chain")
|
||||
|
||||
var outBuf bytes.Buffer
|
||||
ctxGen := func() client.Context {
|
||||
bz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
@ -61,7 +59,7 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
|
||||
return s.baseCtx.WithClient(c)
|
||||
}
|
||||
s.clientCtx = ctxGen().WithOutput(&outBuf)
|
||||
s.clientCtx = ctxGen()
|
||||
|
||||
k, _, err := s.clientCtx.Keyring.NewMnemonic("NewValidator", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1)
|
||||
s.Require().NoError(err)
|
||||
|
||||
@ -3,8 +3,6 @@ package cli_test
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/cosmos/gogoproto/proto"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
@ -16,9 +14,7 @@ func (s *CLITestSuite) TestNewUnjailTxCmd() {
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
expectedCode uint32
|
||||
respType proto.Message
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"valid transaction",
|
||||
@ -28,7 +24,7 @@ func (s *CLITestSuite) TestNewUnjailTxCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), // sync mode as there are no funds yet
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -40,14 +36,12 @@ func (s *CLITestSuite) TestNewUnjailTxCmd() {
|
||||
clientCtx := s.clientCtx
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
|
||||
txResp := tc.respType.(*sdk.TxResponse)
|
||||
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
|
||||
txResp := &sdk.TxResponse{}
|
||||
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), txResp), out.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@ -289,6 +289,7 @@ $ %s tx staking unbond %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj 100stake --from
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
delAddr := clientCtx.GetFromAddress()
|
||||
valAddr, err := sdk.ValAddressFromBech32(args[0])
|
||||
if err != nil {
|
||||
|
||||
@ -1,14 +1,12 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"testing"
|
||||
|
||||
abci "github.com/cometbft/cometbft/abci/types"
|
||||
rpcclientmock "github.com/cometbft/cometbft/rpc/client/mock"
|
||||
"github.com/cosmos/gogoproto/proto"
|
||||
"github.com/spf13/pflag"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/stretchr/testify/suite"
|
||||
@ -51,7 +49,6 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
WithOutput(io.Discard).
|
||||
WithChainID("test-chain")
|
||||
|
||||
var outBuf bytes.Buffer
|
||||
ctxGen := func() client.Context {
|
||||
bz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{})
|
||||
c := clitestutil.NewMockCometRPC(abci.ResponseQuery{
|
||||
@ -59,7 +56,7 @@ func (s *CLITestSuite) SetupSuite() {
|
||||
})
|
||||
return s.baseCtx.WithClient(c)
|
||||
}
|
||||
s.clientCtx = ctxGen().WithOutput(&outBuf)
|
||||
s.clientCtx = ctxGen()
|
||||
|
||||
s.addrs = make([]sdk.AccAddress, 0)
|
||||
for i := 0; i < 3; i++ {
|
||||
@ -231,11 +228,9 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() {
|
||||
defer noMonikerJSONFile.Close()
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
expErrMsg string
|
||||
respType proto.Message
|
||||
name string
|
||||
args []string
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"invalid transaction (missing amount)",
|
||||
@ -246,9 +241,7 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true,
|
||||
"must specify amount of coins to bond",
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"invalid transaction (missing pubkey)",
|
||||
@ -259,9 +252,7 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true,
|
||||
"must specify the JSON encoded pubkey",
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"invalid transaction (missing moniker)",
|
||||
@ -272,9 +263,7 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true,
|
||||
"must specify the moniker name",
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"valid transaction with all fields",
|
||||
@ -285,7 +274,7 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, "", &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
{
|
||||
"valid transaction without optional fields",
|
||||
@ -296,19 +285,20 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, "", &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
}
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
s.Run(tc.name, func() {
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
require.Error(err)
|
||||
require.Contains(err.Error(), tc.expErrMsg)
|
||||
require.Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
require.NoError(err, "test: %s\noutput: %s", tc.name, out.String())
|
||||
err = s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType)
|
||||
resp := &sdk.TxResponse{}
|
||||
err = s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), resp)
|
||||
require.NoError(err, out.String(), "test: %s, output\n:", tc.name, out.String())
|
||||
}
|
||||
})
|
||||
@ -326,32 +316,30 @@ func (s *CLITestSuite) TestNewEditValidatorCmd() {
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
expectedCode uint32
|
||||
respType proto.Message
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"with no edit flag (since all are optional)",
|
||||
"wrong from address",
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, "with wrong from address"),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true, 0, nil,
|
||||
"key not found",
|
||||
},
|
||||
{
|
||||
"with no edit flag (since all are optional)",
|
||||
"valid with no edit flag (since all are optional)",
|
||||
[]string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
{
|
||||
"edit validator details",
|
||||
"valid with edit validator details",
|
||||
[]string{
|
||||
fmt.Sprintf("--details=%s", details),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]),
|
||||
@ -359,7 +347,7 @@ func (s *CLITestSuite) TestNewEditValidatorCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
{
|
||||
"edit validator identity",
|
||||
@ -370,7 +358,7 @@ func (s *CLITestSuite) TestNewEditValidatorCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
{
|
||||
"edit validator security-contact",
|
||||
@ -381,7 +369,7 @@ func (s *CLITestSuite) TestNewEditValidatorCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
{
|
||||
"edit validator website",
|
||||
@ -392,7 +380,7 @@ func (s *CLITestSuite) TestNewEditValidatorCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
{
|
||||
"with all edit flags",
|
||||
@ -406,7 +394,7 @@ func (s *CLITestSuite) TestNewEditValidatorCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -415,14 +403,13 @@ func (s *CLITestSuite) TestNewEditValidatorCmd() {
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err, out.String())
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
|
||||
txResp := tc.respType.(*sdk.TxResponse)
|
||||
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
|
||||
resp := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), resp))
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -434,31 +421,31 @@ func (s *CLITestSuite) TestNewDelegateCmd() {
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
expectedCode uint32
|
||||
respType proto.Message
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"without delegate amount",
|
||||
"invalid delegate amount",
|
||||
[]string{
|
||||
sdk.ValAddress(s.addrs[0]).String(),
|
||||
"fooCoin",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true, 0, nil,
|
||||
"invalid decimal coin expression: fooCoin",
|
||||
},
|
||||
{
|
||||
"without validator address",
|
||||
"invalid validator address",
|
||||
[]string{
|
||||
"abc",
|
||||
sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(150)).String(),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true, 0, nil,
|
||||
"decoding bech32 failed",
|
||||
},
|
||||
{
|
||||
"valid transaction of delegate",
|
||||
@ -470,7 +457,7 @@ func (s *CLITestSuite) TestNewDelegateCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -479,14 +466,13 @@ func (s *CLITestSuite) TestNewDelegateCmd() {
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err, out.String())
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
|
||||
txResp := tc.respType.(*sdk.TxResponse)
|
||||
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
|
||||
resp := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), resp))
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -498,21 +484,20 @@ func (s *CLITestSuite) TestNewRedelegateCmd() {
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
expectedCode uint32
|
||||
respType proto.Message
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"without amount",
|
||||
"invalid amount",
|
||||
[]string{
|
||||
sdk.ValAddress(s.addrs[0]).String(), // src-validator-addr
|
||||
sdk.ValAddress(s.addrs[1]).String(), // dst-validator-addr
|
||||
"fooCoin",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true, 0, nil,
|
||||
"invalid decimal coin expression: fooCoin",
|
||||
},
|
||||
{
|
||||
"valid transaction of delegate",
|
||||
@ -526,7 +511,7 @@ func (s *CLITestSuite) TestNewRedelegateCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -535,14 +520,13 @@ func (s *CLITestSuite) TestNewRedelegateCmd() {
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err, out.String())
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
|
||||
txResp := tc.respType.(*sdk.TxResponse)
|
||||
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
|
||||
resp := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), resp))
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -554,31 +538,31 @@ func (s *CLITestSuite) TestNewUnbondCmd() {
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
expectedCode uint32
|
||||
respType proto.Message
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"Without unbond amount",
|
||||
"invalid unbond amount",
|
||||
[]string{
|
||||
sdk.ValAddress(s.addrs[0]).String(),
|
||||
"foo",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true, 0, nil,
|
||||
"invalid decimal coin expression: foo",
|
||||
},
|
||||
{
|
||||
"Without validator address",
|
||||
"invalid validator address",
|
||||
[]string{
|
||||
"foo",
|
||||
sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(150)).String(),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true, 0, nil,
|
||||
"decoding bech32 failed",
|
||||
},
|
||||
{
|
||||
"valid transaction of unbond",
|
||||
@ -590,7 +574,7 @@ func (s *CLITestSuite) TestNewUnbondCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -599,14 +583,13 @@ func (s *CLITestSuite) TestNewUnbondCmd() {
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err, out.String())
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
|
||||
txResp := tc.respType.(*sdk.TxResponse)
|
||||
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
|
||||
resp := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), resp))
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -618,42 +601,46 @@ func (s *CLITestSuite) TestNewCancelUnbondingDelegationCmd() {
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
expectErr bool
|
||||
expectedCode uint32
|
||||
respType proto.Message
|
||||
expectErrMsg string
|
||||
}{
|
||||
{
|
||||
"Without validator address",
|
||||
"invalid validator address",
|
||||
[]string{
|
||||
"foo",
|
||||
sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(150)).String(),
|
||||
sdk.NewInt(10000).String(),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true, 0, nil,
|
||||
"decoding bech32 failed",
|
||||
},
|
||||
{
|
||||
"Without canceling unbond delegation amount",
|
||||
"invalid canceling unbond delegation amount",
|
||||
[]string{
|
||||
sdk.ValAddress(s.addrs[0]).String(),
|
||||
"fooCoin",
|
||||
sdk.NewInt(10000).String(),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true, 0, nil,
|
||||
"invalid decimal coin expression",
|
||||
},
|
||||
{
|
||||
"Without unbond creation height",
|
||||
"without unbond creation height",
|
||||
[]string{
|
||||
sdk.ValAddress(s.addrs[0]).String(),
|
||||
sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(150)).String(),
|
||||
"abc",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]),
|
||||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
true, 0, nil,
|
||||
"invalid height: invalid height: 0",
|
||||
},
|
||||
{
|
||||
"valid transaction of canceling unbonding delegation",
|
||||
@ -666,7 +653,7 @@ func (s *CLITestSuite) TestNewCancelUnbondingDelegationCmd() {
|
||||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()),
|
||||
},
|
||||
false, 0, &sdk.TxResponse{},
|
||||
"",
|
||||
},
|
||||
}
|
||||
|
||||
@ -675,14 +662,13 @@ func (s *CLITestSuite) TestNewCancelUnbondingDelegationCmd() {
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
|
||||
if tc.expectErr {
|
||||
if tc.expectErrMsg != "" {
|
||||
s.Require().Error(err)
|
||||
s.Require().Contains(err.Error(), tc.expectErrMsg)
|
||||
} else {
|
||||
s.Require().NoError(err, out.String())
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||
|
||||
txResp := tc.respType.(*sdk.TxResponse)
|
||||
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
|
||||
resp := &sdk.TxResponse{}
|
||||
s.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), resp))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,85 +0,0 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"testing"
|
||||
|
||||
rpcclientmock "github.com/cometbft/cometbft/rpc/client/mock"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"cosmossdk.io/x/upgrade"
|
||||
upgradecli "cosmossdk.io/x/upgrade/client/cli"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keyring"
|
||||
svrcmd "github.com/cosmos/cosmos-sdk/server/cmd"
|
||||
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
|
||||
testutilmod "github.com/cosmos/cosmos-sdk/types/module/testutil"
|
||||
)
|
||||
|
||||
func TestModuleVersionsCLI(t *testing.T) {
|
||||
cmd := upgradecli.GetModuleVersionsCmd()
|
||||
cmd.SetOut(io.Discard)
|
||||
require.NotNil(t, cmd)
|
||||
|
||||
encCfg := testutilmod.MakeTestEncodingConfig(upgrade.AppModuleBasic{})
|
||||
kr := keyring.NewInMemory(encCfg.Codec)
|
||||
baseCtx := client.Context{}.
|
||||
WithKeyring(kr).
|
||||
WithTxConfig(encCfg.TxConfig).
|
||||
WithCodec(encCfg.Codec).
|
||||
WithClient(clitestutil.MockCometRPC{Client: rpcclientmock.Client{}}).
|
||||
WithAccountRetriever(client.MockAccountRetriever{}).
|
||||
WithOutput(io.Discard).
|
||||
WithChainID("test-chain")
|
||||
|
||||
testCases := []struct {
|
||||
msg string
|
||||
args []string
|
||||
expCmdOuptut string
|
||||
}{
|
||||
{
|
||||
msg: "test full query with json output",
|
||||
args: []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", flags.FlagOutput)},
|
||||
expCmdOuptut: `--height=1 --output=json`,
|
||||
},
|
||||
{
|
||||
msg: "test full query with text output",
|
||||
args: []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", flags.FlagOutput)},
|
||||
expCmdOuptut: `--height=1 --output=text`,
|
||||
},
|
||||
{
|
||||
msg: "test single module",
|
||||
args: []string{"bank", fmt.Sprintf("--%s=1", flags.FlagHeight)},
|
||||
expCmdOuptut: `bank --height=1`,
|
||||
},
|
||||
{
|
||||
msg: "test non-existent module",
|
||||
args: []string{"abcdefg", fmt.Sprintf("--%s=1", flags.FlagHeight)},
|
||||
expCmdOuptut: `abcdefg --height=1`,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
|
||||
t.Run(tc.msg, func(t *testing.T) {
|
||||
ctx := svrcmd.CreateExecuteContext(context.Background())
|
||||
|
||||
cmd.SetOut(io.Discard)
|
||||
require.NotNil(t, cmd)
|
||||
|
||||
cmd.SetContext(ctx)
|
||||
cmd.SetArgs(tc.args)
|
||||
|
||||
require.NoError(t, client.SetCmdClientContextHandler(baseCtx, cmd))
|
||||
|
||||
if len(tc.args) != 0 {
|
||||
require.Contains(t, fmt.Sprint(cmd), tc.expCmdOuptut)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -13,7 +13,7 @@ require (
|
||||
github.com/cometbft/cometbft v0.37.1-0.20230411132551-3a91d155e664
|
||||
github.com/cosmos/cosmos-db v1.0.0-rc.1
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418140744-0dde947d0ab7
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419074131-aa683247d515
|
||||
github.com/cosmos/gogoproto v1.4.8
|
||||
github.com/golang/protobuf v1.5.3
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.16.0
|
||||
|
||||
@ -347,8 +347,8 @@ github.com/cosmos/cosmos-db v1.0.0-rc.1 h1:SjnT8B6WKMW9WEIX32qMhnEEKcI7ZP0+G1Sa9
|
||||
github.com/cosmos/cosmos-db v1.0.0-rc.1/go.mod h1:Dnmk3flSf5lkwCqvvjNpoxjpXzhxnCAFzKHlbaForso=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418140744-0dde947d0ab7 h1:+Q/K5pdQdQjp21gIxlQgGy4dOZk9gUBSQmJCYIf1bWA=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230418140744-0dde947d0ab7/go.mod h1:BPvKPN63ettXrpz67uM1rHEqX/UVVkAfceFCPyp217E=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419074131-aa683247d515 h1:KMbJ5nAA0Xk79z0D1oL3kiw9lBYiqlV3ZqUxXVbbgBY=
|
||||
github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230419074131-aa683247d515/go.mod h1:BPvKPN63ettXrpz67uM1rHEqX/UVVkAfceFCPyp217E=
|
||||
github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y=
|
||||
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
|
||||
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
|
||||
|
||||
Loading…
Reference in New Issue
Block a user