github.com/Finschia/finschia-sdk@v0.48.1/x/evidence/genesis_test.go (about) 1 package evidence_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/Finschia/ostracon/types/time" 8 "github.com/stretchr/testify/suite" 9 tmproto "github.com/tendermint/tendermint/proto/tendermint/types" 10 11 "github.com/Finschia/finschia-sdk/crypto/keys/ed25519" 12 "github.com/Finschia/finschia-sdk/simapp" 13 sdk "github.com/Finschia/finschia-sdk/types" 14 "github.com/Finschia/finschia-sdk/x/evidence" 15 "github.com/Finschia/finschia-sdk/x/evidence/exported" 16 "github.com/Finschia/finschia-sdk/x/evidence/keeper" 17 "github.com/Finschia/finschia-sdk/x/evidence/types" 18 ) 19 20 type GenesisTestSuite struct { 21 suite.Suite 22 23 ctx sdk.Context 24 keeper keeper.Keeper 25 } 26 27 func (suite *GenesisTestSuite) SetupTest() { 28 checkTx := false 29 app := simapp.Setup(checkTx) 30 31 suite.ctx = app.BaseApp.NewContext(checkTx, tmproto.Header{Height: 1}) 32 suite.keeper = app.EvidenceKeeper 33 } 34 35 func (suite *GenesisTestSuite) TestInitGenesis() { 36 var ( 37 genesisState *types.GenesisState 38 testEvidence []exported.Evidence 39 pk = ed25519.GenPrivKey() 40 ) 41 42 testCases := []struct { 43 msg string 44 malleate func() 45 expPass bool 46 posttests func() 47 }{ 48 { 49 "valid", 50 func() { 51 testEvidence = make([]exported.Evidence, 100) 52 for i := 0; i < 100; i++ { 53 testEvidence[i] = &types.Equivocation{ 54 Height: int64(i + 1), 55 Power: 100, 56 Time: time.Now().UTC(), 57 ConsensusAddress: pk.PubKey().Address().String(), 58 } 59 } 60 genesisState = types.NewGenesisState(testEvidence) 61 }, 62 true, 63 func() { 64 for _, e := range testEvidence { 65 _, ok := suite.keeper.GetEvidence(suite.ctx, e.Hash()) 66 suite.True(ok) 67 } 68 }, 69 }, 70 { 71 "invalid", 72 func() { 73 testEvidence = make([]exported.Evidence, 100) 74 for i := 0; i < 100; i++ { 75 testEvidence[i] = &types.Equivocation{ 76 Power: 100, 77 Time: time.Now().UTC(), 78 ConsensusAddress: pk.PubKey().Address().String(), 79 } 80 } 81 genesisState = types.NewGenesisState(testEvidence) 82 }, 83 false, 84 func() { 85 suite.Empty(suite.keeper.GetAllEvidence(suite.ctx)) 86 }, 87 }, 88 } 89 90 for _, tc := range testCases { 91 suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { 92 suite.SetupTest() 93 94 tc.malleate() 95 96 if tc.expPass { 97 suite.NotPanics(func() { 98 evidence.InitGenesis(suite.ctx, suite.keeper, genesisState) 99 }) 100 } else { 101 suite.Panics(func() { 102 evidence.InitGenesis(suite.ctx, suite.keeper, genesisState) 103 }) 104 } 105 106 tc.posttests() 107 }) 108 } 109 } 110 111 func (suite *GenesisTestSuite) TestExportGenesis() { 112 pk := ed25519.GenPrivKey() 113 114 testCases := []struct { 115 msg string 116 malleate func() 117 expPass bool 118 posttests func() 119 }{ 120 { 121 "success", 122 func() { 123 suite.keeper.SetEvidence(suite.ctx, &types.Equivocation{ 124 Height: 1, 125 Power: 100, 126 Time: time.Now().UTC(), 127 ConsensusAddress: pk.PubKey().Address().String(), 128 }) 129 }, 130 true, 131 func() {}, 132 }, 133 } 134 135 for _, tc := range testCases { 136 suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { 137 suite.SetupTest() 138 139 tc.malleate() 140 141 if tc.expPass { 142 suite.NotPanics(func() { 143 evidence.ExportGenesis(suite.ctx, suite.keeper) 144 }) 145 } else { 146 suite.Panics(func() { 147 evidence.ExportGenesis(suite.ctx, suite.keeper) 148 }) 149 } 150 151 tc.posttests() 152 }) 153 } 154 } 155 156 func TestGenesisTestSuite(t *testing.T) { 157 suite.Run(t, new(GenesisTestSuite)) 158 }