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  }