@@ -21,6 +21,7 @@ import (
21
21
apptesting "github.com/classic-terra/core/v2/app/testing"
22
22
dyncommante "github.com/classic-terra/core/v2/x/dyncomm/ante"
23
23
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
24
+ authz "github.com/cosmos/cosmos-sdk/x/authz"
24
25
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
25
26
26
27
abci "github.com/tendermint/tendermint/abci/types"
@@ -205,6 +206,54 @@ func (suite *AnteTestSuite) TestAnte_EnsureDynCommissionIsMinComm() {
205
206
suite .Require ().NoError (err )
206
207
}
207
208
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
+
208
257
// go test -v -run ^TestAnteTestSuite/TestAnte_EditValidatorAccountSequence$ github.com/classic-terra/core/v2/x/dyncomm/ante
209
258
// check that account keeper sequence no longer increases when editing validator unsuccessfully
210
259
func (suite * AnteTestSuite ) TestAnte_EditValidatorAccountSequence () {
0 commit comments