Adds missing cli tests in x/staking (#7158)
This commit is contained in:
parent
92cd5884aa
commit
9cb27fb171
|
@ -909,6 +909,357 @@ not_bonded_tokens: "0"`,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *IntegrationTestSuite) TestNewCmdEditValidator() {
|
||||||
|
val := s.network.Validators[0]
|
||||||
|
|
||||||
|
details := "bio"
|
||||||
|
identity := "test identity"
|
||||||
|
securityContact := "test contact"
|
||||||
|
website := "https://test.com"
|
||||||
|
|
||||||
|
testCases := []struct {
|
||||||
|
name string
|
||||||
|
args []string
|
||||||
|
expectErr bool
|
||||||
|
respType proto.Message
|
||||||
|
expectedCode uint32
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"with no edit flag (since all are optional)",
|
||||||
|
[]string{
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, "with wrong from address"),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
true, nil, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"with no edit flag (since all are optional)",
|
||||||
|
[]string{
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"edit validator details",
|
||||||
|
[]string{
|
||||||
|
fmt.Sprintf("--details=%s", details),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"edit validator identity",
|
||||||
|
[]string{
|
||||||
|
fmt.Sprintf("--identity=%s", identity),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"edit validator security-contact",
|
||||||
|
[]string{
|
||||||
|
fmt.Sprintf("--security-contact=%s", securityContact),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"edit validator website",
|
||||||
|
[]string{
|
||||||
|
fmt.Sprintf("--website=%s", website),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"with all edit flags",
|
||||||
|
[]string{
|
||||||
|
fmt.Sprintf("--details=%s", details),
|
||||||
|
fmt.Sprintf("--identity=%s", identity),
|
||||||
|
fmt.Sprintf("--security-contact=%s", securityContact),
|
||||||
|
fmt.Sprintf("--website=%s", website),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
tc := tc
|
||||||
|
|
||||||
|
s.Run(tc.name, func() {
|
||||||
|
cmd := cli.NewEditValidatorCmd()
|
||||||
|
clientCtx := val.ClientCtx
|
||||||
|
|
||||||
|
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
|
||||||
|
if tc.expectErr {
|
||||||
|
s.Require().Error(err)
|
||||||
|
} else {
|
||||||
|
s.Require().NoError(err, out.String())
|
||||||
|
s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||||
|
|
||||||
|
txResp := tc.respType.(*sdk.TxResponse)
|
||||||
|
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *IntegrationTestSuite) TestNewCmdDelegate() {
|
||||||
|
val := s.network.Validators[0]
|
||||||
|
|
||||||
|
info, _, err := val.ClientCtx.Keyring.NewMnemonic("NewAccount", keyring.English, sdk.FullFundraiserPath, hd.Secp256k1)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
newAddr := sdk.AccAddress(info.GetPubKey().Address())
|
||||||
|
|
||||||
|
_, err = banktestutil.MsgSendExec(
|
||||||
|
val.ClientCtx,
|
||||||
|
val.Address,
|
||||||
|
newAddr,
|
||||||
|
sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(200))), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
testCases := []struct {
|
||||||
|
name string
|
||||||
|
args []string
|
||||||
|
expectErr bool
|
||||||
|
respType proto.Message
|
||||||
|
expectedCode uint32
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"without delegate amount",
|
||||||
|
[]string{
|
||||||
|
val.ValAddress.String(),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, newAddr.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
true, nil, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"without validator address",
|
||||||
|
[]string{
|
||||||
|
sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(150)).String(),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, newAddr.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
true, nil, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"valid transaction of delegate",
|
||||||
|
[]string{
|
||||||
|
val.ValAddress.String(),
|
||||||
|
sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(150)).String(),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, newAddr.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
tc := tc
|
||||||
|
|
||||||
|
s.Run(tc.name, func() {
|
||||||
|
cmd := cli.NewDelegateCmd()
|
||||||
|
clientCtx := val.ClientCtx
|
||||||
|
|
||||||
|
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
|
||||||
|
if tc.expectErr {
|
||||||
|
s.Require().Error(err)
|
||||||
|
} else {
|
||||||
|
s.Require().NoError(err, out.String())
|
||||||
|
s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||||
|
|
||||||
|
txResp := tc.respType.(*sdk.TxResponse)
|
||||||
|
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *IntegrationTestSuite) TestNewCmdRedelegate() {
|
||||||
|
val := s.network.Validators[0]
|
||||||
|
val2 := s.network.Validators[1]
|
||||||
|
|
||||||
|
testCases := []struct {
|
||||||
|
name string
|
||||||
|
args []string
|
||||||
|
expectErr bool
|
||||||
|
respType proto.Message
|
||||||
|
expectedCode uint32
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"without amount",
|
||||||
|
[]string{
|
||||||
|
val.ValAddress.String(), // src-validator-addr
|
||||||
|
val2.ValAddress.String(), // dst-validator-addr
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
true, nil, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"with wrong source validator address",
|
||||||
|
[]string{
|
||||||
|
`cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj`, // src-validator-addr
|
||||||
|
val2.ValAddress.String(), // dst-validator-addr
|
||||||
|
sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(150)).String(), // amount
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 4,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"with wrong destination validator address",
|
||||||
|
[]string{
|
||||||
|
val.ValAddress.String(), // dst-validator-addr
|
||||||
|
`cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj`, // src-validator-addr
|
||||||
|
sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(150)).String(), // amount
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 39,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"valid transaction of delegate",
|
||||||
|
[]string{
|
||||||
|
val.ValAddress.String(), // src-validator-addr
|
||||||
|
val2.ValAddress.String(), // dst-validator-addr
|
||||||
|
sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(150)).String(), // amount
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagGas, "auto"),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
tc := tc
|
||||||
|
|
||||||
|
s.Run(tc.name, func() {
|
||||||
|
cmd := cli.NewRedelegateCmd()
|
||||||
|
clientCtx := val.ClientCtx
|
||||||
|
|
||||||
|
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
|
||||||
|
if tc.expectErr {
|
||||||
|
s.Require().Error(err)
|
||||||
|
} else {
|
||||||
|
s.Require().NoError(err, out.String())
|
||||||
|
s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||||
|
|
||||||
|
txResp := tc.respType.(*sdk.TxResponse)
|
||||||
|
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *IntegrationTestSuite) TestNewCmdUnbond() {
|
||||||
|
val := s.network.Validators[0]
|
||||||
|
|
||||||
|
testCases := []struct {
|
||||||
|
name string
|
||||||
|
args []string
|
||||||
|
expectErr bool
|
||||||
|
respType proto.Message
|
||||||
|
expectedCode uint32
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"Without unbond amount",
|
||||||
|
[]string{
|
||||||
|
val.ValAddress.String(),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
true, nil, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Without validator address",
|
||||||
|
[]string{
|
||||||
|
sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(150)).String(),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
true, nil, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"valid transaction of unbond",
|
||||||
|
[]string{
|
||||||
|
val.ValAddress.String(),
|
||||||
|
sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(150)).String(),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
|
||||||
|
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
|
||||||
|
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
|
||||||
|
},
|
||||||
|
false, &sdk.TxResponse{}, 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
tc := tc
|
||||||
|
|
||||||
|
s.Run(tc.name, func() {
|
||||||
|
cmd := cli.NewUnbondCmd()
|
||||||
|
clientCtx := val.ClientCtx
|
||||||
|
|
||||||
|
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
|
||||||
|
if tc.expectErr {
|
||||||
|
s.Require().Error(err)
|
||||||
|
} else {
|
||||||
|
s.Require().NoError(err, out.String())
|
||||||
|
s.Require().NoError(clientCtx.JSONMarshaler.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
|
||||||
|
|
||||||
|
txResp := tc.respType.(*sdk.TxResponse)
|
||||||
|
s.Require().Equal(tc.expectedCode, txResp.Code, out.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestIntegrationTestSuite(t *testing.T) {
|
func TestIntegrationTestSuite(t *testing.T) {
|
||||||
suite.Run(t, new(IntegrationTestSuite))
|
suite.Run(t, new(IntegrationTestSuite))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue