github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/slashing/internal/keeper/signing_info_test.go (about) 1 package keeper 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 9 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/slashing/internal/types" 11 ) 12 13 func TestGetSetValidatorSigningInfo(t *testing.T) { 14 ctx, _, _, _, keeper := CreateTestInput(t, types.DefaultParams()) 15 info, found := keeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(Addrs[0])) 16 require.False(t, found) 17 newInfo := types.NewValidatorSigningInfo( 18 sdk.ConsAddress(Addrs[0]), 19 int64(4), 20 int64(3), 21 time.Unix(2, 0), 22 false, 23 int64(10), 24 ) 25 keeper.SetValidatorSigningInfo(ctx, sdk.ConsAddress(Addrs[0]), newInfo) 26 info, found = keeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(Addrs[0])) 27 require.True(t, found) 28 require.Equal(t, info.StartHeight, int64(4)) 29 require.Equal(t, info.IndexOffset, int64(3)) 30 require.Equal(t, info.JailedUntil, time.Unix(2, 0).UTC()) 31 require.Equal(t, info.MissedBlocksCounter, int64(10)) 32 } 33 34 func TestGetSetValidatorMissedBlockBitArray(t *testing.T) { 35 ctx, _, _, _, keeper := CreateTestInput(t, types.DefaultParams()) 36 missed := keeper.GetValidatorMissedBlockBitArray(ctx, sdk.ConsAddress(Addrs[0]), 0) 37 require.False(t, missed) // treat empty key as not missed 38 keeper.SetValidatorMissedBlockBitArray(ctx, sdk.ConsAddress(Addrs[0]), 0, true) 39 missed = keeper.GetValidatorMissedBlockBitArray(ctx, sdk.ConsAddress(Addrs[0]), 0) 40 require.True(t, missed) // now should be missed 41 } 42 43 func TestTombstoned(t *testing.T) { 44 ctx, _, _, _, keeper := CreateTestInput(t, types.DefaultParams()) 45 require.Panics(t, func() { keeper.Tombstone(ctx, sdk.ConsAddress(Addrs[0])) }) 46 require.False(t, keeper.IsTombstoned(ctx, sdk.ConsAddress(Addrs[0]))) 47 48 newInfo := types.NewValidatorSigningInfo( 49 sdk.ConsAddress(Addrs[0]), 50 int64(4), 51 int64(3), 52 time.Unix(2, 0), 53 false, 54 int64(10), 55 ) 56 keeper.SetValidatorSigningInfo(ctx, sdk.ConsAddress(Addrs[0]), newInfo) 57 58 require.False(t, keeper.IsTombstoned(ctx, sdk.ConsAddress(Addrs[0]))) 59 keeper.Tombstone(ctx, sdk.ConsAddress(Addrs[0])) 60 require.True(t, keeper.IsTombstoned(ctx, sdk.ConsAddress(Addrs[0]))) 61 require.Panics(t, func() { keeper.Tombstone(ctx, sdk.ConsAddress(Addrs[0])) }) 62 } 63 64 func TestJailUntil(t *testing.T) { 65 ctx, _, _, _, keeper := CreateTestInput(t, types.DefaultParams()) 66 require.Panics(t, func() { keeper.JailUntil(ctx, sdk.ConsAddress(Addrs[0]), time.Now()) }) 67 68 newInfo := types.NewValidatorSigningInfo( 69 sdk.ConsAddress(Addrs[0]), 70 int64(4), 71 int64(3), 72 time.Unix(2, 0), 73 false, 74 int64(10), 75 ) 76 keeper.SetValidatorSigningInfo(ctx, sdk.ConsAddress(Addrs[0]), newInfo) 77 keeper.JailUntil(ctx, sdk.ConsAddress(Addrs[0]), time.Unix(253402300799, 0).UTC()) 78 79 info, ok := keeper.GetValidatorSigningInfo(ctx, sdk.ConsAddress(Addrs[0])) 80 require.True(t, ok) 81 require.Equal(t, time.Unix(253402300799, 0).UTC(), info.JailedUntil) 82 }