github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/evidence/handler_test.go (about) 1 package evidence_test 2 3 import ( 4 "testing" 5 6 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/simapp" 7 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/evidence" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/evidence/internal/types" 10 11 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 12 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto/ed25519" 13 "github.com/stretchr/testify/suite" 14 ) 15 16 type HandlerTestSuite struct { 17 suite.Suite 18 19 ctx sdk.Context 20 handler sdk.Handler 21 keeper evidence.Keeper 22 } 23 24 func (suite *HandlerTestSuite) SetupTest() { 25 checkTx := false 26 app := simapp.Setup(checkTx) 27 28 // get the app's codec and register custom testing types 29 cdc := app.Codec() 30 cdc.RegisterConcrete(types.TestEquivocationEvidence{}, "test/TestEquivocationEvidence", nil) 31 32 // recreate keeper in order to use custom testing types 33 evidenceKeeper := evidence.NewKeeper( 34 cdc, app.GetKey(evidence.StoreKey), app.GetSubspace(evidence.ModuleName), app.StakingKeeper, app.SlashingKeeper, 35 ) 36 router := evidence.NewRouter() 37 router = router.AddRoute(types.TestEvidenceRouteEquivocation, types.TestEquivocationHandler(*evidenceKeeper)) 38 evidenceKeeper.SetRouter(router) 39 40 suite.ctx = app.BaseApp.NewContext(checkTx, abci.Header{Height: 1}) 41 suite.handler = evidence.NewHandler(*evidenceKeeper) 42 suite.keeper = *evidenceKeeper 43 } 44 45 func (suite *HandlerTestSuite) TestMsgSubmitEvidence_Valid() { 46 pk := ed25519.GenPrivKey() 47 sv := types.TestVote{ 48 ValidatorAddress: pk.PubKey().Address(), 49 Height: 11, 50 Round: 0, 51 } 52 53 sig, err := pk.Sign(sv.SignBytes(suite.ctx.ChainID())) 54 suite.NoError(err) 55 sv.Signature = sig 56 57 s := sdk.AccAddress("test") 58 e := types.TestEquivocationEvidence{ 59 Power: 100, 60 TotalPower: 100000, 61 PubKey: pk.PubKey(), 62 VoteA: sv, 63 VoteB: sv, 64 } 65 66 ctx := suite.ctx.WithIsCheckTx(false) 67 msg := evidence.NewMsgSubmitEvidence(e, s) 68 res, err := suite.handler(ctx, msg) 69 suite.NoError(err) 70 suite.NotNil(res) 71 suite.Equal(e.Hash().Bytes(), res.Data) 72 } 73 74 func (suite *HandlerTestSuite) TestMsgSubmitEvidence_Invalid() { 75 pk := ed25519.GenPrivKey() 76 sv := types.TestVote{ 77 ValidatorAddress: pk.PubKey().Address(), 78 Height: 11, 79 Round: 0, 80 } 81 82 sig, err := pk.Sign(sv.SignBytes(suite.ctx.ChainID())) 83 suite.NoError(err) 84 sv.Signature = sig 85 86 s := sdk.AccAddress("test") 87 e := types.TestEquivocationEvidence{ 88 Power: 100, 89 TotalPower: 100000, 90 PubKey: pk.PubKey(), 91 VoteA: sv, 92 VoteB: types.TestVote{Height: 10, Round: 1}, 93 } 94 95 ctx := suite.ctx.WithIsCheckTx(false) 96 msg := evidence.NewMsgSubmitEvidence(e, s) 97 res, err := suite.handler(ctx, msg) 98 suite.Error(err) 99 suite.Nil(res) 100 } 101 102 func TestHandlerTestSuite(t *testing.T) { 103 suite.Run(t, new(HandlerTestSuite)) 104 }