Skip to content

Commit 7bd5634

Browse files
committed
- add unit test for MsgExec dyncomm
1 parent 5a8ef97 commit 7bd5634

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

x/dyncomm/ante/ante_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
apptesting "github.com/classic-terra/core/v2/app/testing"
2222
dyncommante "github.com/classic-terra/core/v2/x/dyncomm/ante"
2323
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
24+
authz "github.com/cosmos/cosmos-sdk/x/authz"
2425
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
2526

2627
abci "github.com/tendermint/tendermint/abci/types"
@@ -205,6 +206,54 @@ func (suite *AnteTestSuite) TestAnte_EnsureDynCommissionIsMinComm() {
205206
suite.Require().NoError(err)
206207
}
207208

209+
func (suite *AnteTestSuite) TestAnte_EnsureDynCommissionIsMinCommAuthz() {
210+
suite.SetupTest() // setup
211+
suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder()
212+
suite.txBuilder.SetGasLimit(400_000)
213+
suite.Ctx = suite.Ctx.WithIsCheckTx(false)
214+
215+
_, _, val1, _ := suite.CreateValidator(50_000_000_000)
216+
priv2, _, acc2 := testdata.KeyTestPubAddr()
217+
suite.CreateValidator(50_000_000_000)
218+
suite.App.DyncommKeeper.UpdateAllBondedValidatorRates(suite.Ctx)
219+
220+
mfd := dyncommante.NewDyncommDecorator(suite.App.DyncommKeeper, suite.App.StakingKeeper)
221+
antehandler := sdk.ChainAnteDecorators(mfd)
222+
223+
dyncomm := suite.App.DyncommKeeper.CalculateDynCommission(suite.Ctx, val1)
224+
invalidtarget := dyncomm.Mul(sdk.NewDecWithPrec(9, 1))
225+
validtarget := dyncomm.Mul(sdk.NewDecWithPrec(11, 1))
226+
227+
// invalid tx fails
228+
editmsg := stakingtypes.NewMsgEditValidator(
229+
val1.GetOperator(),
230+
val1.Description, &invalidtarget, &val1.MinSelfDelegation,
231+
)
232+
233+
execmsg := authz.NewMsgExec(acc2, []sdk.Msg{editmsg})
234+
235+
err := suite.txBuilder.SetMsgs(&execmsg)
236+
suite.Require().NoError(err)
237+
tx, err := suite.CreateTestTx([]cryptotypes.PrivKey{priv2}, []uint64{0}, []uint64{0}, suite.Ctx.ChainID())
238+
suite.Require().NoError(err)
239+
_, err = antehandler(suite.Ctx, tx, false)
240+
suite.Require().Error(err)
241+
242+
// valid tx passes
243+
editmsg = stakingtypes.NewMsgEditValidator(
244+
val1.GetOperator(),
245+
val1.Description, &validtarget, &val1.MinSelfDelegation,
246+
)
247+
execmsg = authz.NewMsgExec(acc2, []sdk.Msg{editmsg})
248+
249+
err = suite.txBuilder.SetMsgs(editmsg)
250+
suite.Require().NoError(err)
251+
tx, err = suite.CreateTestTx([]cryptotypes.PrivKey{priv2}, []uint64{0}, []uint64{0}, suite.Ctx.ChainID())
252+
suite.Require().NoError(err)
253+
_, err = antehandler(suite.Ctx, tx, false)
254+
suite.Require().NoError(err)
255+
}
256+
208257
// go test -v -run ^TestAnteTestSuite/TestAnte_EditValidatorAccountSequence$ github.com/classic-terra/core/v2/x/dyncomm/ante
209258
// check that account keeper sequence no longer increases when editing validator unsuccessfully
210259
func (suite *AnteTestSuite) TestAnte_EditValidatorAccountSequence() {

0 commit comments

Comments
 (0)