github.com/Finschia/finschia-sdk@v0.48.1/x/evidence/types/evidence_test.go (about) 1 package types_test 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 abci "github.com/tendermint/tendermint/abci/types" 9 10 sdk "github.com/Finschia/finschia-sdk/types" 11 "github.com/Finschia/finschia-sdk/x/evidence/types" 12 ) 13 14 func TestEquivocation_Valid(t *testing.T) { 15 n, _ := time.Parse(time.RFC3339, "2006-01-02T15:04:05Z") 16 addr := sdk.ConsAddress("foo_________________") 17 18 e := types.Equivocation{ 19 Height: 100, 20 Time: n, 21 Power: 1000000, 22 ConsensusAddress: addr.String(), 23 } 24 25 require.Equal(t, e.GetTotalPower(), int64(0)) 26 require.Equal(t, e.GetValidatorPower(), e.Power) 27 require.Equal(t, e.GetTime(), e.Time) 28 require.Equal(t, e.GetConsensusAddress().String(), e.ConsensusAddress) 29 require.Equal(t, e.GetHeight(), e.Height) 30 require.Equal(t, e.Type(), types.TypeEquivocation) 31 require.Equal(t, e.Route(), types.RouteEquivocation) 32 require.Equal(t, e.Hash().String(), "1EB689FD54073D3FCF1212FB87281324B9ED2B690C32454B403778451F5D817D") 33 require.Equal(t, e.String(), "height: 100\ntime: 2006-01-02T15:04:05Z\npower: 1000000\nconsensus_address: linkvalcons1vehk7h6lta047h6lta047h6lta047h6l94rfde\n") 34 require.NoError(t, e.ValidateBasic()) 35 } 36 37 func TestEquivocationValidateBasic(t *testing.T) { 38 var zeroTime time.Time 39 addr := sdk.ConsAddress("foo_________________") 40 41 n, _ := time.Parse(time.RFC3339, "2006-01-02T15:04:05Z") 42 testCases := []struct { 43 name string 44 e types.Equivocation 45 expectErr bool 46 }{ 47 {"valid", types.Equivocation{100, n, 1000000, addr.String()}, false}, 48 {"invalid time", types.Equivocation{100, zeroTime, 1000000, addr.String()}, true}, 49 {"invalid height", types.Equivocation{0, n, 1000000, addr.String()}, true}, 50 {"invalid power", types.Equivocation{100, n, 0, addr.String()}, true}, 51 {"invalid address", types.Equivocation{100, n, 1000000, ""}, true}, 52 } 53 54 for _, tc := range testCases { 55 tc := tc 56 t.Run(tc.name, func(t *testing.T) { 57 require.Equal(t, tc.expectErr, tc.e.ValidateBasic() != nil) 58 }) 59 } 60 } 61 62 func TestEvidenceAddressConversion(t *testing.T) { 63 sdk.GetConfig().SetBech32PrefixForConsensusNode("testcnclcons", "testcnclconspub") 64 tmEvidence := abci.Evidence{ 65 Type: abci.EvidenceType_DUPLICATE_VOTE, 66 Validator: abci.Validator{ 67 Address: []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 68 Power: 100, 69 }, 70 Height: 1, 71 Time: time.Now(), 72 TotalVotingPower: 100, 73 } 74 evidence := types.FromABCIEvidence(tmEvidence).(*types.Equivocation) 75 consAddr := evidence.GetConsensusAddress() 76 // Check the address is the same after conversion 77 require.Equal(t, tmEvidence.Validator.Address, consAddr.Bytes()) 78 sdk.GetConfig().SetBech32PrefixForConsensusNode(sdk.Bech32PrefixConsAddr, sdk.Bech32PrefixConsPub) 79 }