chore: Replace testify with gotest.tools in distribution integration tests (#14495)

This commit is contained in:
Likhita Polavarapu 2023-01-05 16:36:07 +05:30 committed by GitHub
parent 8c6739abae
commit fcd544f4f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 336 additions and 296 deletions

View File

@ -4,9 +4,9 @@ import (
"testing"
"cosmossdk.io/math"
"github.com/stretchr/testify/require"
abci "github.com/tendermint/tendermint/abci/types"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
"gotest.tools/v3/assert"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -34,7 +34,7 @@ func TestAllocateTokensToValidatorWithCommission(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -57,10 +57,10 @@ func TestAllocateTokensToValidatorWithCommission(t *testing.T) {
expected := sdk.DecCoins{
{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(5)},
}
require.Equal(t, expected, distrKeeper.GetValidatorAccumulatedCommission(ctx, val.GetOperator()).Commission)
assert.DeepEqual(t, expected, distrKeeper.GetValidatorAccumulatedCommission(ctx, val.GetOperator()).Commission)
// check current rewards
require.Equal(t, expected, distrKeeper.GetValidatorCurrentRewards(ctx, val.GetOperator()).Rewards)
assert.DeepEqual(t, expected, distrKeeper.GetValidatorCurrentRewards(ctx, val.GetOperator()).Rewards)
}
func TestAllocateTokensToManyValidators(t *testing.T) {
@ -77,7 +77,7 @@ func TestAllocateTokensToManyValidators(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -106,21 +106,21 @@ func TestAllocateTokensToManyValidators(t *testing.T) {
}
// assert initial state: zero outstanding rewards, zero community pool, zero commission, zero current rewards
require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsZero())
require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero())
require.True(t, distrKeeper.GetFeePool(ctx).CommunityPool.IsZero())
require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero())
require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero())
require.True(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards.IsZero())
require.True(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards.IsZero())
assert.Assert(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsZero())
assert.Assert(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero())
assert.Assert(t, distrKeeper.GetFeePool(ctx).CommunityPool.IsZero())
assert.Assert(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero())
assert.Assert(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero())
assert.Assert(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards.IsZero())
assert.Assert(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards.IsZero())
// allocate tokens as if both had voted and second was proposer
fees := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)))
feeCollector := accountKeeper.GetModuleAccount(ctx, types.FeeCollectorName)
require.NotNil(t, feeCollector)
assert.Assert(t, feeCollector != nil)
// fund fee collector
require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, feeCollector.GetName(), fees))
assert.NilError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, feeCollector.GetName(), fees))
accountKeeper.SetAccount(ctx, feeCollector)
@ -137,23 +137,23 @@ func TestAllocateTokensToManyValidators(t *testing.T) {
distrKeeper.AllocateTokens(ctx, 200, votes)
// 98 outstanding rewards (100 less 2 to community pool)
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(490, 1)}}, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards)
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(490, 1)}}, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(490, 1)}}, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(490, 1)}}, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards)
// 2 community pool coins
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(2)}}, distrKeeper.GetFeePool(ctx).CommunityPool)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(2)}}, distrKeeper.GetFeePool(ctx).CommunityPool)
// 50% commission for first proposer, (0.5 * 98%) * 100 / 2 = 23.25
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(2450, 2)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(2450, 2)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
// zero commission for second proposer
require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero())
assert.Assert(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero())
// just staking.proportional for first proposer less commission = (0.5 * 98%) * 100 / 2 = 24.50
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(2450, 2)}}, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(2450, 2)}}, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards)
// proposer reward + staking.proportional for second proposer = (0.5 * (98%)) * 100 = 49
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(490, 1)}}, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(490, 1)}}, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards)
}
func TestAllocateTokensTruncation(t *testing.T) {
@ -170,7 +170,7 @@ func TestAllocateTokensTruncation(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -207,22 +207,22 @@ func TestAllocateTokensTruncation(t *testing.T) {
}
// assert initial state: zero outstanding rewards, zero community pool, zero commission, zero current rewards
require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsZero())
require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero())
require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero())
require.True(t, distrKeeper.GetFeePool(ctx).CommunityPool.IsZero())
require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero())
require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero())
require.True(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards.IsZero())
require.True(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards.IsZero())
assert.Assert(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsZero())
assert.Assert(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero())
assert.Assert(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero())
assert.Assert(t, distrKeeper.GetFeePool(ctx).CommunityPool.IsZero())
assert.Assert(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero())
assert.Assert(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero())
assert.Assert(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards.IsZero())
assert.Assert(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards.IsZero())
// allocate tokens as if both had voted and second was proposer
fees := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(634195840)))
feeCollector := accountKeeper.GetModuleAccount(ctx, types.FeeCollectorName)
require.NotNil(t, feeCollector)
assert.Assert(t, feeCollector != nil)
require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, feeCollector.GetName(), fees))
assert.NilError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, feeCollector.GetName(), fees))
accountKeeper.SetAccount(ctx, feeCollector)
@ -242,7 +242,7 @@ func TestAllocateTokensTruncation(t *testing.T) {
}
distrKeeper.AllocateTokens(ctx, 31, votes)
require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsValid())
require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsValid())
require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[2]).Rewards.IsValid())
assert.Assert(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsValid())
assert.Assert(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsValid())
assert.Assert(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[2]).Rewards.IsValid())
}

View File

@ -4,8 +4,8 @@ import (
"testing"
"cosmossdk.io/math"
"github.com/stretchr/testify/require"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
"gotest.tools/v3/assert"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -32,7 +32,7 @@ func TestCalculateRewardsBasic(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -57,19 +57,19 @@ func TestCalculateRewardsBasic(t *testing.T) {
del := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0])
// historical count should be 2 (once for validator init, once for delegation init)
require.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
assert.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
// end period
endingPeriod := distrKeeper.IncrementValidatorPeriod(ctx, val)
// historical count should be 2 still
require.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
assert.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
// calculate delegation rewards
rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod)
// rewards should be zero
require.True(t, rewards.IsZero())
assert.Assert(t, rewards.IsZero())
// allocate some rewards
initial := int64(10)
@ -83,10 +83,10 @@ func TestCalculateRewardsBasic(t *testing.T) {
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod)
// rewards should be half the tokens
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 2)}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 2)}}, rewards)
// commission should be the other half
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 2)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 2)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
}
func TestCalculateRewardsAfterSlash(t *testing.T) {
@ -101,7 +101,7 @@ func TestCalculateRewardsAfterSlash(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -131,7 +131,7 @@ func TestCalculateRewardsAfterSlash(t *testing.T) {
rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod)
// rewards should be zero
require.True(t, rewards.IsZero())
assert.Assert(t, rewards.IsZero())
// start out block height
ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3)
@ -157,10 +157,10 @@ func TestCalculateRewardsAfterSlash(t *testing.T) {
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod)
// rewards should be half the tokens
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial.QuoRaw(2))}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial.QuoRaw(2))}}, rewards)
// commission should be the other half
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial.QuoRaw(2))}},
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial.QuoRaw(2))}},
distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
}
@ -176,7 +176,7 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -206,7 +206,7 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) {
rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod)
// rewards should be zero
require.True(t, rewards.IsZero())
assert.Assert(t, rewards.IsZero())
// start out block height
ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3)
@ -244,10 +244,10 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) {
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod)
// rewards should be half the tokens
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial)}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial)}}, rewards)
// commission should be the other half
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial)}},
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial)}},
distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
}
@ -263,7 +263,7 @@ func TestCalculateRewardsMultiDelegator(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -314,16 +314,16 @@ func TestCalculateRewardsMultiDelegator(t *testing.T) {
rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod)
// rewards for del1 should be 3/4 initial
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial * 3 / 4)}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial * 3 / 4)}}, rewards)
// calculate delegation rewards for del2
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod)
// rewards for del2 should be 1/4 initial
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial * 1 / 4)}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial * 1 / 4)}}, rewards)
// commission should be equal to initial (50% twice)
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
}
func TestWithdrawDelegationRewardsBasic(t *testing.T) {
@ -340,7 +340,7 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -354,7 +354,7 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) {
// set module account coins
distrAcc := distrKeeper.GetDistributionAccount(ctx)
require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, balanceTokens))))
assert.NilError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, balanceTokens))))
accountKeeper.SetModuleAccount(ctx, distrAcc)
// create validator with 50% commission
@ -364,7 +364,7 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) {
// assert correct initial balance
expTokens := balanceTokens.Sub(valTokens)
require.Equal(t,
assert.DeepEqual(t,
sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, expTokens)},
bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])),
)
@ -385,29 +385,29 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) {
distrKeeper.AllocateTokensToValidator(ctx, val, tokens)
// historical count should be 2 (initial + latest for delegation)
require.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
assert.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
// withdraw rewards
_, err = distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0])
require.Nil(t, err)
assert.Assert(t, err == nil)
// historical count should still be 2 (added one record, cleared one)
require.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
assert.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
// assert correct balance
exp := balanceTokens.Sub(valTokens).Add(initial.QuoRaw(2))
require.Equal(t,
assert.DeepEqual(t,
sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, exp)},
bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])),
)
// withdraw commission
_, err = distrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0])
require.Nil(t, err)
assert.Assert(t, err == nil)
// assert correct balance
exp = balanceTokens.Sub(valTokens).Add(initial)
require.Equal(t,
assert.DeepEqual(t,
sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, exp)},
bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])),
)
@ -425,7 +425,7 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -455,7 +455,7 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) {
rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod)
// rewards should be zero
require.True(t, rewards.IsZero())
assert.Assert(t, rewards.IsZero())
// start out block height
ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3)
@ -487,10 +487,10 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) {
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod)
// rewards should be half the tokens
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, rewards)
// commission should be the other half
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
}
func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) {
@ -505,7 +505,7 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -567,16 +567,16 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) {
rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod)
// rewards for del1 should be 2/3 initial (half initial first period, 1/6 initial second period)
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial.QuoInt64(2).Add(initial.QuoInt64(6))}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial.QuoInt64(2).Add(initial.QuoInt64(6))}}, rewards)
// calculate delegation rewards for del2
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod)
// rewards for del2 should be initial / 3
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial.QuoInt64(3)}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial.QuoInt64(3)}}, rewards)
// commission should be equal to initial (twice 50% commission, unaffected by slashing)
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
}
func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
@ -593,7 +593,7 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -606,7 +606,7 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
// set module account coins
distrAcc := distrKeeper.GetDistributionAccount(ctx)
require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000)))))
assert.NilError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000)))))
accountKeeper.SetModuleAccount(ctx, distrAcc)
tokens := sdk.DecCoins{sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, math.LegacyNewDec(initial))}
@ -629,13 +629,13 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
distrKeeper.AllocateTokensToValidator(ctx, val, tokens)
// historical count should be 2 (validator init, delegation init)
require.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
assert.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
// second delegation
tstaking.Delegate(sdk.AccAddress(valAddrs[1]), valAddrs[0], sdk.NewInt(100))
// historical count should be 3 (second delegation init)
require.Equal(t, uint64(3), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
assert.Equal(t, uint64(3), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
// fetch updated validator
val = stakingKeeper.Validator(ctx, valAddrs[0])
@ -652,18 +652,18 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
// first delegator withdraws
_, err = distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0])
require.NoError(t, err)
assert.NilError(t, err)
// second delegator withdraws
_, err = distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[1]), valAddrs[0])
require.NoError(t, err)
assert.NilError(t, err)
// historical count should be 3 (validator init + two delegations)
require.Equal(t, uint64(3), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
assert.Equal(t, uint64(3), distrKeeper.GetValidatorHistoricalReferenceCount(ctx))
// validator withdraws commission
_, err = distrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0])
require.NoError(t, err)
assert.NilError(t, err)
// end period
endingPeriod := distrKeeper.IncrementValidatorPeriod(ctx, val)
@ -672,16 +672,16 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod)
// rewards for del1 should be zero
require.True(t, rewards.IsZero())
assert.Assert(t, rewards.IsZero())
// calculate delegation rewards for del2
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod)
// rewards for del2 should be zero
require.True(t, rewards.IsZero())
assert.Assert(t, rewards.IsZero())
// commission should be zero
require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero())
assert.Assert(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero())
// next block
ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1)
@ -691,7 +691,7 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
// first delegator withdraws again
_, err = distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0])
require.NoError(t, err)
assert.NilError(t, err)
// end period
endingPeriod = distrKeeper.IncrementValidatorPeriod(ctx, val)
@ -700,16 +700,16 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod)
// rewards for del1 should be zero
require.True(t, rewards.IsZero())
assert.Assert(t, rewards.IsZero())
// calculate delegation rewards for del2
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod)
// rewards for del2 should be 1/4 initial
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 4)}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 4)}}, rewards)
// commission should be half initial
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 2)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 2)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission)
// next block
ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1)
@ -719,7 +719,7 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
// withdraw commission
_, err = distrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0])
require.NoError(t, err)
assert.NilError(t, err)
// end period
endingPeriod = distrKeeper.IncrementValidatorPeriod(ctx, val)
@ -728,16 +728,16 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod)
// rewards for del1 should be 1/4 initial
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 4)}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 4)}}, rewards)
// calculate delegation rewards for del2
rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod)
// rewards for del2 should be 1/2 initial
require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 2)}}, rewards)
assert.DeepEqual(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial / 2)}}, rewards)
// commission should be zero
require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero())
assert.Assert(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero())
}
func Test100PercentCommissionReward(t *testing.T) {
@ -754,7 +754,7 @@ func Test100PercentCommissionReward(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -765,7 +765,7 @@ func Test100PercentCommissionReward(t *testing.T) {
// set module account coins
distrAcc := distrKeeper.GetDistributionAccount(ctx)
require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000)))))
assert.NilError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000)))))
accountKeeper.SetModuleAccount(ctx, distrAcc)
tokens := sdk.DecCoins{sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, math.LegacyNewDec(initial))}
@ -802,10 +802,10 @@ func Test100PercentCommissionReward(t *testing.T) {
distrKeeper.AllocateTokensToValidator(ctx, val, tokens)
rewards, err := distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0])
require.NoError(t, err)
assert.NilError(t, err)
zeroRewards := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, math.ZeroInt())}
require.True(t, rewards.IsEqual(zeroRewards))
assert.Assert(t, rewards.IsEqual(zeroRewards))
events := ctx.EventManager().Events()
lastEvent := events[len(events)-1]
@ -816,5 +816,5 @@ func Test100PercentCommissionReward(t *testing.T) {
hasValue = true
}
}
require.True(t, hasValue)
assert.Assert(t, hasValue)
}

View File

@ -6,8 +6,8 @@ import (
"testing"
"cosmossdk.io/math"
"github.com/stretchr/testify/suite"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
"gotest.tools/v3/assert"
"github.com/cosmos/cosmos-sdk/baseapp"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
@ -25,9 +25,7 @@ import (
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
)
type KeeperTestSuite struct {
suite.Suite
type fixture struct {
ctx sdk.Context
queryClient types.QueryClient
addrs []sdk.AccAddress
@ -40,36 +38,39 @@ type KeeperTestSuite struct {
msgServer types.MsgServer
}
func TestDistributionTestSuite(t *testing.T) {
suite.Run(t, new(KeeperTestSuite))
}
func initFixture(t assert.TestingT) *fixture {
f := &fixture{}
func (suite *KeeperTestSuite) SetupTest() {
app, err := simtestutil.Setup(
testutil.AppConfig,
&suite.interfaceRegistry,
&suite.bankKeeper,
&suite.distrKeeper,
&suite.stakingKeeper,
&f.interfaceRegistry,
&f.bankKeeper,
&f.distrKeeper,
&f.stakingKeeper,
)
suite.NoError(err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
queryHelper := baseapp.NewQueryServerTestHelper(ctx, suite.interfaceRegistry)
types.RegisterQueryServer(queryHelper, keeper.NewQuerier(suite.distrKeeper))
queryHelper := baseapp.NewQueryServerTestHelper(ctx, f.interfaceRegistry)
types.RegisterQueryServer(queryHelper, keeper.NewQuerier(f.distrKeeper))
queryClient := types.NewQueryClient(queryHelper)
suite.ctx = ctx
suite.queryClient = queryClient
f.ctx = ctx
f.queryClient = queryClient
suite.addrs = simtestutil.AddTestAddrs(suite.bankKeeper, suite.stakingKeeper, ctx, 2, sdk.NewInt(1000000000))
suite.valAddrs = simtestutil.ConvertAddrsToValAddrs(suite.addrs)
suite.msgServer = keeper.NewMsgServerImpl(suite.distrKeeper)
f.addrs = simtestutil.AddTestAddrs(f.bankKeeper, f.stakingKeeper, ctx, 2, sdk.NewInt(1000000000))
f.valAddrs = simtestutil.ConvertAddrsToValAddrs(f.addrs)
f.msgServer = keeper.NewMsgServerImpl(f.distrKeeper)
return f
}
func (suite *KeeperTestSuite) TestGRPCParams() {
ctx, queryClient := suite.ctx, suite.queryClient
func TestGRPCParams(t *testing.T) {
t.Parallel()
f := initFixture(t)
ctx, queryClient := f.ctx, f.queryClient
var (
params types.Params
@ -80,7 +81,6 @@ func (suite *KeeperTestSuite) TestGRPCParams() {
testCases := []struct {
msg string
malleate func()
expPass bool
}{
{
"empty params request",
@ -88,7 +88,6 @@ func (suite *KeeperTestSuite) TestGRPCParams() {
req = &types.QueryParamsRequest{}
expParams = types.DefaultParams()
},
true,
},
{
"valid request",
@ -100,33 +99,31 @@ func (suite *KeeperTestSuite) TestGRPCParams() {
WithdrawAddrEnabled: true,
}
suite.NoError(suite.distrKeeper.SetParams(ctx, params))
assert.NilError(t, f.distrKeeper.SetParams(ctx, params))
req = &types.QueryParamsRequest{}
expParams = params
},
true,
},
}
for _, testCase := range testCases {
suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() {
t.Run(fmt.Sprintf("Case %s", testCase.msg), func(t *testing.T) {
testCase.malleate()
paramsRes, err := queryClient.Params(gocontext.Background(), req)
if testCase.expPass {
suite.Require().NoError(err)
suite.Require().NotNil(paramsRes)
suite.Require().Equal(expParams, paramsRes.Params)
} else {
suite.Require().Error(err)
}
assert.NilError(t, err)
assert.Assert(t, paramsRes != nil)
assert.DeepEqual(t, expParams, paramsRes.Params)
})
}
}
func (suite *KeeperTestSuite) TestGRPCValidatorOutstandingRewards() {
ctx, queryClient, valAddrs := suite.ctx, suite.queryClient, suite.valAddrs
func TestGRPCValidatorOutstandingRewards(t *testing.T) {
t.Parallel()
f := initFixture(t)
ctx, queryClient, valAddrs := f.ctx, f.queryClient, f.valAddrs
valCommission := sdk.DecCoins{
sdk.NewDecCoinFromDec("mytoken", math.LegacyNewDec(5000)),
@ -134,15 +131,16 @@ func (suite *KeeperTestSuite) TestGRPCValidatorOutstandingRewards() {
}
// set outstanding rewards
suite.distrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[0], types.ValidatorOutstandingRewards{Rewards: valCommission})
rewards := suite.distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0])
f.distrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[0], types.ValidatorOutstandingRewards{Rewards: valCommission})
rewards := f.distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0])
var req *types.QueryValidatorOutstandingRewardsRequest
testCases := []struct {
msg string
malleate func()
expPass bool
msg string
malleate func()
expPass bool
expErrMsg string
}{
{
"empty request",
@ -150,45 +148,51 @@ func (suite *KeeperTestSuite) TestGRPCValidatorOutstandingRewards() {
req = &types.QueryValidatorOutstandingRewardsRequest{}
},
false,
"empty validator address",
}, {
"valid request",
func() {
req = &types.QueryValidatorOutstandingRewardsRequest{ValidatorAddress: valAddrs[0].String()}
},
true,
"",
},
}
for _, testCase := range testCases {
suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() {
t.Run(fmt.Sprintf("Case %s", testCase.msg), func(t *testing.T) {
testCase.malleate()
validatorOutstandingRewards, err := queryClient.ValidatorOutstandingRewards(gocontext.Background(), req)
if testCase.expPass {
suite.Require().NoError(err)
suite.Require().Equal(rewards, validatorOutstandingRewards.Rewards)
suite.Require().Equal(valCommission, validatorOutstandingRewards.Rewards.Rewards)
assert.NilError(t, err)
assert.DeepEqual(t, rewards, validatorOutstandingRewards.Rewards)
assert.DeepEqual(t, valCommission, validatorOutstandingRewards.Rewards.Rewards)
} else {
suite.Require().Error(err)
suite.Require().Nil(validatorOutstandingRewards)
assert.ErrorContains(t, err, testCase.expErrMsg)
assert.Assert(t, validatorOutstandingRewards == nil)
}
})
}
}
func (suite *KeeperTestSuite) TestGRPCValidatorCommission() {
ctx, queryClient, valAddrs := suite.ctx, suite.queryClient, suite.valAddrs
func TestGRPCValidatorCommission(t *testing.T) {
t.Parallel()
f := initFixture(t)
ctx, queryClient, valAddrs := f.ctx, f.queryClient, f.valAddrs
commission := sdk.DecCoins{{Denom: "token1", Amount: math.LegacyNewDec(4)}, {Denom: "token2", Amount: math.LegacyNewDec(2)}}
suite.distrKeeper.SetValidatorAccumulatedCommission(ctx, valAddrs[0], types.ValidatorAccumulatedCommission{Commission: commission})
f.distrKeeper.SetValidatorAccumulatedCommission(ctx, valAddrs[0], types.ValidatorAccumulatedCommission{Commission: commission})
var req *types.QueryValidatorCommissionRequest
testCases := []struct {
msg string
malleate func()
expPass bool
msg string
malleate func()
expPass bool
expErrMsg string
}{
{
"empty request",
@ -196,6 +200,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorCommission() {
req = &types.QueryValidatorCommissionRequest{}
},
false,
"empty validator address",
},
{
"valid request",
@ -203,29 +208,33 @@ func (suite *KeeperTestSuite) TestGRPCValidatorCommission() {
req = &types.QueryValidatorCommissionRequest{ValidatorAddress: valAddrs[0].String()}
},
true,
"",
},
}
for _, testCase := range testCases {
suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() {
t.Run(fmt.Sprintf("Case %s", testCase.msg), func(t *testing.T) {
testCase.malleate()
commissionRes, err := queryClient.ValidatorCommission(gocontext.Background(), req)
if testCase.expPass {
suite.Require().NoError(err)
suite.Require().NotNil(commissionRes)
suite.Require().Equal(commissionRes.Commission.Commission, commission)
assert.NilError(t, err)
assert.Assert(t, commissionRes != nil)
assert.DeepEqual(t, commissionRes.Commission.Commission, commission)
} else {
suite.Require().Error(err)
suite.Require().Nil(commissionRes)
assert.ErrorContains(t, err, testCase.expErrMsg)
assert.Assert(t, commissionRes == nil)
}
})
}
}
func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() {
ctx, queryClient, valAddrs := suite.ctx, suite.queryClient, suite.valAddrs
func TestGRPCValidatorSlashes(t *testing.T) {
t.Parallel()
f := initFixture(t)
ctx, queryClient, valAddrs := f.ctx, f.queryClient, f.valAddrs
slashes := []types.ValidatorSlashEvent{
types.NewValidatorSlashEvent(3, sdk.NewDecWithPrec(5, 1)),
@ -235,7 +244,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() {
}
for i, slash := range slashes {
suite.distrKeeper.SetValidatorSlashEvent(ctx, valAddrs[0], uint64(i+2), 0, slash)
f.distrKeeper.SetValidatorSlashEvent(ctx, valAddrs[0], uint64(i+2), 0, slash)
}
var (
@ -244,9 +253,10 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() {
)
testCases := []struct {
msg string
malleate func()
expPass bool
msg string
malleate func()
expPass bool
expErrMsg string
}{
{
"empty request",
@ -255,6 +265,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() {
expRes = &types.QueryValidatorSlashesResponse{}
},
false,
"empty validator address",
},
{
"Ending height lesser than start height request",
@ -267,6 +278,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() {
expRes = &types.QueryValidatorSlashesResponse{Pagination: &query.PageResponse{}}
},
false,
"starting height greater than ending height",
},
{
"no slash event validator request",
@ -279,6 +291,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() {
expRes = &types.QueryValidatorSlashesResponse{Pagination: &query.PageResponse{}}
},
true,
"",
},
{
"request slashes with offset 2 and limit 2",
@ -300,6 +313,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() {
}
},
true,
"",
},
{
"request slashes with page limit 3 and count total",
@ -321,6 +335,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() {
}
},
true,
"",
},
{
"request slashes with page limit 4 and count total",
@ -342,45 +357,49 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() {
}
},
true,
"",
},
}
for _, testCase := range testCases {
suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() {
t.Run(fmt.Sprintf("Case %s", testCase.msg), func(t *testing.T) {
testCase.malleate()
slashesRes, err := queryClient.ValidatorSlashes(gocontext.Background(), req)
if testCase.expPass {
suite.Require().NoError(err)
suite.Require().Equal(expRes.GetSlashes(), slashesRes.GetSlashes())
assert.NilError(t, err)
assert.DeepEqual(t, expRes.GetSlashes(), slashesRes.GetSlashes())
} else {
suite.Require().Error(err)
suite.Require().Nil(slashesRes)
assert.ErrorContains(t, err, testCase.expErrMsg)
assert.Assert(t, slashesRes == nil)
}
})
}
}
func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
ctx, addrs, valAddrs := suite.ctx, suite.addrs, suite.valAddrs
func TestGRPCDelegationRewards(t *testing.T) {
t.Parallel()
f := initFixture(t)
tstaking := stakingtestutil.NewHelper(suite.T(), ctx, suite.stakingKeeper)
ctx, addrs, valAddrs := f.ctx, f.addrs, f.valAddrs
tstaking := stakingtestutil.NewHelper(t, ctx, f.stakingKeeper)
tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), math.LegacyNewDec(0))
tstaking.CreateValidator(valAddrs[0], valConsPk0, sdk.NewInt(100), true)
staking.EndBlocker(ctx, suite.stakingKeeper)
staking.EndBlocker(ctx, f.stakingKeeper)
ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1)
queryHelper := baseapp.NewQueryServerTestHelper(ctx, suite.interfaceRegistry)
types.RegisterQueryServer(queryHelper, keeper.NewQuerier(suite.distrKeeper))
queryHelper := baseapp.NewQueryServerTestHelper(ctx, f.interfaceRegistry)
types.RegisterQueryServer(queryHelper, keeper.NewQuerier(f.distrKeeper))
queryClient := types.NewQueryClient(queryHelper)
val := suite.stakingKeeper.Validator(ctx, valAddrs[0])
val := f.stakingKeeper.Validator(ctx, valAddrs[0])
initial := int64(10)
tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(initial)}}
suite.distrKeeper.AllocateTokensToValidator(ctx, val, tokens)
f.distrKeeper.AllocateTokensToValidator(ctx, val, tokens)
// test command delegation rewards grpc
var (
@ -389,9 +408,10 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
)
testCases := []struct {
msg string
malleate func()
expPass bool
msg string
malleate func()
expPass bool
expErrMsg string
}{
{
"empty request",
@ -399,6 +419,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
req = &types.QueryDelegationRewardsRequest{}
},
false,
"empty delegator address",
},
{
"empty delegator request",
@ -409,6 +430,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
}
},
false,
"empty delegator address",
},
{
"empty validator request",
@ -419,6 +441,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
}
},
false,
"empty validator address",
},
{
"request with wrong delegator and validator",
@ -429,6 +452,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
}
},
false,
"validator does not exist",
},
{
"valid request",
@ -443,21 +467,22 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
}
},
true,
"",
},
}
for _, testCase := range testCases {
suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() {
t.Run(fmt.Sprintf("Case %s", testCase.msg), func(t *testing.T) {
testCase.malleate()
rewards, err := queryClient.DelegationRewards(gocontext.Background(), req)
if testCase.expPass {
suite.Require().NoError(err)
suite.Require().Equal(expRes, rewards)
assert.NilError(t, err)
assert.DeepEqual(t, expRes, rewards)
} else {
suite.Require().Error(err)
suite.Require().Nil(rewards)
assert.ErrorContains(t, err, testCase.expErrMsg)
assert.Assert(t, rewards == nil)
}
})
}
@ -469,9 +494,10 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
)
testCases = []struct {
msg string
malleate func()
expPass bool
msg string
malleate func()
expPass bool
expErrMsg string
}{
{
"empty request",
@ -479,6 +505,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
totalRewardsReq = &types.QueryDelegationTotalRewardsRequest{}
},
false,
"empty delegator address",
},
{
"valid total delegation rewards",
@ -496,22 +523,22 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
}
},
true,
"",
},
}
for _, testCase := range testCases {
suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() {
t.Run(fmt.Sprintf("Case %s", testCase.msg), func(t *testing.T) {
testCase.malleate()
totalRewardsRes, err := queryClient.DelegationTotalRewards(gocontext.Background(), totalRewardsReq)
if testCase.expPass {
suite.Require().NoError(err)
suite.Require().Equal(totalRewardsRes, expTotalRewardsRes)
assert.NilError(t, err)
assert.DeepEqual(t, totalRewardsRes, expTotalRewardsRes)
} else {
suite.Require().Error(err)
suite.Require().Nil(totalRewardsRes)
assert.ErrorContains(t, err, testCase.expErrMsg)
assert.Assert(t, totalRewardsRes == nil)
}
})
}
@ -523,9 +550,10 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
)
testCases = []struct {
msg string
malleate func()
expPass bool
msg string
malleate func()
expPass bool
expErrMsg string
}{
{
"empty request",
@ -533,6 +561,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
delegatorValidatorsReq = &types.QueryDelegatorValidatorsRequest{}
},
false,
"empty delegator address",
},
{
"request no delegations address",
@ -544,6 +573,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
expDelegatorValidatorsRes = &types.QueryDelegatorValidatorsResponse{}
},
true,
"",
},
{
"valid request",
@ -556,38 +586,43 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() {
}
},
true,
"",
},
}
for _, testCase := range testCases {
suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() {
t.Run(fmt.Sprintf("Case %s", testCase.msg), func(t *testing.T) {
testCase.malleate()
validators, err := queryClient.DelegatorValidators(gocontext.Background(), delegatorValidatorsReq)
if testCase.expPass {
suite.Require().NoError(err)
suite.Require().Equal(expDelegatorValidatorsRes, validators)
assert.NilError(t, err)
assert.DeepEqual(t, expDelegatorValidatorsRes, validators)
} else {
suite.Require().Error(err)
suite.Require().Nil(validators)
assert.ErrorContains(t, err, testCase.expErrMsg)
assert.Assert(t, validators == nil)
}
})
}
}
func (suite *KeeperTestSuite) TestGRPCDelegatorWithdrawAddress() {
ctx, queryClient, addrs := suite.ctx, suite.queryClient, suite.addrs
func TestGRPCDelegatorWithdrawAddress(t *testing.T) {
t.Parallel()
f := initFixture(t)
err := suite.distrKeeper.SetWithdrawAddr(ctx, addrs[0], addrs[1])
suite.Require().Nil(err)
ctx, queryClient, addrs := f.ctx, f.queryClient, f.addrs
err := f.distrKeeper.SetWithdrawAddr(ctx, addrs[0], addrs[1])
assert.Assert(t, err == nil)
var req *types.QueryDelegatorWithdrawAddressRequest
testCases := []struct {
msg string
malleate func()
expPass bool
msg string
malleate func()
expPass bool
expErrMsg string
}{
{
"empty request",
@ -595,6 +630,7 @@ func (suite *KeeperTestSuite) TestGRPCDelegatorWithdrawAddress() {
req = &types.QueryDelegatorWithdrawAddressRequest{}
},
false,
"empty delegator address",
},
{
"valid request",
@ -602,30 +638,34 @@ func (suite *KeeperTestSuite) TestGRPCDelegatorWithdrawAddress() {
req = &types.QueryDelegatorWithdrawAddressRequest{DelegatorAddress: addrs[0].String()}
},
true,
"",
},
}
for _, testCase := range testCases {
suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() {
t.Run(fmt.Sprintf("Case %s", testCase.msg), func(t *testing.T) {
testCase.malleate()
withdrawAddress, err := queryClient.DelegatorWithdrawAddress(gocontext.Background(), req)
if testCase.expPass {
suite.Require().NoError(err)
suite.Require().Equal(withdrawAddress.WithdrawAddress, addrs[1].String())
assert.NilError(t, err)
assert.Equal(t, withdrawAddress.WithdrawAddress, addrs[1].String())
} else {
suite.Require().Error(err)
suite.Require().Nil(withdrawAddress)
assert.ErrorContains(t, err, testCase.expErrMsg)
assert.Assert(t, withdrawAddress == nil)
}
})
}
}
func (suite *KeeperTestSuite) TestGRPCCommunityPool() {
ctx, queryClient, addrs := suite.ctx, suite.queryClient, suite.addrs
func TestGRPCCommunityPool(t *testing.T) {
t.Parallel()
f := initFixture(t)
ctx, queryClient, addrs := f.ctx, f.queryClient, f.addrs
// reset fee pool
suite.distrKeeper.SetFeePool(ctx, types.InitialFeePool())
f.distrKeeper.SetFeePool(ctx, types.InitialFeePool())
var (
req *types.QueryCommunityPoolRequest
@ -635,7 +675,6 @@ func (suite *KeeperTestSuite) TestGRPCCommunityPool() {
testCases := []struct {
msg string
malleate func()
expPass bool
}{
{
"valid request empty community pool",
@ -643,37 +682,30 @@ func (suite *KeeperTestSuite) TestGRPCCommunityPool() {
req = &types.QueryCommunityPoolRequest{}
expPool = &types.QueryCommunityPoolResponse{}
},
true,
},
{
"valid request",
func() {
amount := sdk.NewCoins(sdk.NewInt64Coin("stake", 100))
suite.Require().NoError(banktestutil.FundAccount(suite.bankKeeper, ctx, addrs[0], amount))
assert.NilError(t, banktestutil.FundAccount(f.bankKeeper, ctx, addrs[0], amount))
err := suite.distrKeeper.FundCommunityPool(ctx, amount, addrs[0])
suite.Require().Nil(err)
err := f.distrKeeper.FundCommunityPool(ctx, amount, addrs[0])
assert.Assert(t, err == nil)
req = &types.QueryCommunityPoolRequest{}
expPool = &types.QueryCommunityPoolResponse{Pool: sdk.NewDecCoinsFromCoins(amount...)}
},
true,
},
}
for _, testCase := range testCases {
suite.Run(fmt.Sprintf("Case %s", testCase.msg), func() {
t.Run(fmt.Sprintf("Case %s", testCase.msg), func(t *testing.T) {
testCase.malleate()
pool, err := queryClient.CommunityPool(gocontext.Background(), req)
if testCase.expPass {
suite.Require().NoError(err)
suite.Require().Equal(expPool, pool)
} else {
suite.Require().Error(err)
suite.Require().Nil(pool)
}
assert.NilError(t, err)
assert.DeepEqual(t, expPool, pool)
})
}
}

View File

@ -1,11 +1,12 @@
package keeper_test
import (
"fmt"
"testing"
"cosmossdk.io/math"
"github.com/stretchr/testify/require"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
"gotest.tools/v3/assert"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -30,7 +31,7 @@ func TestSetWithdrawAddr(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -38,18 +39,18 @@ func TestSetWithdrawAddr(t *testing.T) {
params := distrKeeper.GetParams(ctx)
params.WithdrawAddrEnabled = false
require.NoError(t, distrKeeper.SetParams(ctx, params))
assert.NilError(t, distrKeeper.SetParams(ctx, params))
err = distrKeeper.SetWithdrawAddr(ctx, addr[0], addr[1])
require.NotNil(t, err)
assert.Assert(t, err != nil)
params.WithdrawAddrEnabled = true
require.NoError(t, distrKeeper.SetParams(ctx, params))
assert.NilError(t, distrKeeper.SetParams(ctx, params))
err = distrKeeper.SetWithdrawAddr(ctx, addr[0], addr[1])
require.Nil(t, err)
assert.NilError(t, err)
require.Error(t, distrKeeper.SetWithdrawAddr(ctx, addr[0], distrAcc.GetAddress()))
assert.ErrorContains(t, distrKeeper.SetWithdrawAddr(ctx, addr[0], distrAcc.GetAddress()), fmt.Sprintf("%s is not allowed to receive external funds: unauthorized", distrAcc.GetAddress()))
}
func TestWithdrawValidatorCommission(t *testing.T) {
@ -66,7 +67,7 @@ func TestWithdrawValidatorCommission(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -81,7 +82,7 @@ func TestWithdrawValidatorCommission(t *testing.T) {
// set module account coins
distrAcc := distrKeeper.GetDistributionAccount(ctx)
coins := sdk.NewCoins(sdk.NewCoin("mytoken", sdk.NewInt(2)), sdk.NewCoin("stake", sdk.NewInt(2)))
require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), coins))
assert.NilError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), coins))
accountKeeper.SetModuleAccount(ctx, distrAcc)
@ -89,7 +90,7 @@ func TestWithdrawValidatorCommission(t *testing.T) {
balance := bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0]))
expTokens := stakingKeeper.TokensFromConsensusPower(ctx, 1000)
expCoins := sdk.NewCoins(sdk.NewCoin("stake", expTokens))
require.Equal(t, expCoins, balance)
assert.DeepEqual(t, expCoins, balance)
// set outstanding rewards
distrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[0], types.ValidatorOutstandingRewards{Rewards: valCommission})
@ -99,23 +100,21 @@ func TestWithdrawValidatorCommission(t *testing.T) {
// withdraw commission
_, err = distrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0])
require.NoError(t, err)
assert.NilError(t, err)
// check balance increase
balance = bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0]))
require.Equal(t, sdk.NewCoins(
assert.DeepEqual(t, sdk.NewCoins(
sdk.NewCoin("mytoken", sdk.NewInt(1)),
sdk.NewCoin("stake", expTokens.AddRaw(1)),
), balance)
// check remainder
remainder := distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission
require.Equal(t, sdk.DecCoins{
assert.DeepEqual(t, sdk.DecCoins{
sdk.NewDecCoinFromDec("mytoken", math.LegacyNewDec(1).Quo(math.LegacyNewDec(4))),
sdk.NewDecCoinFromDec("stake", math.LegacyNewDec(1).Quo(math.LegacyNewDec(2))),
}, remainder)
require.True(t, true)
}
func TestGetTotalRewards(t *testing.T) {
@ -130,7 +129,7 @@ func TestGetTotalRewards(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -148,7 +147,7 @@ func TestGetTotalRewards(t *testing.T) {
expectedRewards := valCommission.MulDec(math.LegacyNewDec(2))
totalRewards := distrKeeper.GetTotalRewards(ctx)
require.Equal(t, expectedRewards, totalRewards)
assert.DeepEqual(t, expectedRewards, totalRewards)
}
func TestFundCommunityPool(t *testing.T) {
@ -163,7 +162,7 @@ func TestFundCommunityPool(t *testing.T) {
&distrKeeper,
&stakingKeeper,
)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
@ -173,14 +172,14 @@ func TestFundCommunityPool(t *testing.T) {
addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, math.ZeroInt())
amount := sdk.NewCoins(sdk.NewInt64Coin("stake", 100))
require.NoError(t, banktestutil.FundAccount(bankKeeper, ctx, addr[0], amount))
assert.NilError(t, banktestutil.FundAccount(bankKeeper, ctx, addr[0], amount))
initPool := distrKeeper.GetFeePool(ctx)
require.Empty(t, initPool.CommunityPool)
assert.Assert(t, initPool.CommunityPool.Empty())
err = distrKeeper.FundCommunityPool(ctx, amount, addr[0])
require.Nil(t, err)
assert.NilError(t, err)
require.Equal(t, initPool.CommunityPool.Add(sdk.NewDecCoinsFromCoins(amount...)...), distrKeeper.GetFeePool(ctx).CommunityPool)
require.Empty(t, bankKeeper.GetAllBalances(ctx, addr[0]))
assert.DeepEqual(t, initPool.CommunityPool.Add(sdk.NewDecCoinsFromCoins(amount...)...), distrKeeper.GetFeePool(ctx).CommunityPool)
assert.Assert(t, bankKeeper.GetAllBalances(ctx, addr[0]).Empty())
}

View File

@ -1,7 +1,10 @@
package keeper_test
import (
"testing"
"cosmossdk.io/math"
"gotest.tools/v3/assert"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/distribution/types"
@ -10,7 +13,10 @@ import (
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
)
func (s *KeeperTestSuite) TestMsgUpdateParams() {
func TestMsgUpdateParams(t *testing.T) {
t.Parallel()
f := initFixture(t)
// default params
communityTax := sdk.NewDecWithPrec(2, 2) // 2%
withdrawAddrEnabled := true
@ -38,7 +44,7 @@ func (s *KeeperTestSuite) TestMsgUpdateParams() {
{
name: "community tax > 1",
input: &types.MsgUpdateParams{
Authority: s.distrKeeper.GetAuthority(),
Authority: f.distrKeeper.GetAuthority(),
Params: types.Params{
CommunityTax: sdk.NewDecWithPrec(2, 0),
WithdrawAddrEnabled: withdrawAddrEnabled,
@ -52,7 +58,7 @@ func (s *KeeperTestSuite) TestMsgUpdateParams() {
{
name: "negative community tax",
input: &types.MsgUpdateParams{
Authority: s.distrKeeper.GetAuthority(),
Authority: f.distrKeeper.GetAuthority(),
Params: types.Params{
CommunityTax: sdk.NewDecWithPrec(-2, 1),
WithdrawAddrEnabled: withdrawAddrEnabled,
@ -66,7 +72,7 @@ func (s *KeeperTestSuite) TestMsgUpdateParams() {
{
name: "base proposer reward set",
input: &types.MsgUpdateParams{
Authority: s.distrKeeper.GetAuthority(),
Authority: f.distrKeeper.GetAuthority(),
Params: types.Params{
CommunityTax: communityTax,
BaseProposerReward: sdk.NewDecWithPrec(1, 2),
@ -80,7 +86,7 @@ func (s *KeeperTestSuite) TestMsgUpdateParams() {
{
name: "bonus proposer reward set",
input: &types.MsgUpdateParams{
Authority: s.distrKeeper.GetAuthority(),
Authority: f.distrKeeper.GetAuthority(),
Params: types.Params{
CommunityTax: communityTax,
BaseProposerReward: sdk.ZeroDec(),
@ -94,7 +100,7 @@ func (s *KeeperTestSuite) TestMsgUpdateParams() {
{
name: "all good",
input: &types.MsgUpdateParams{
Authority: s.distrKeeper.GetAuthority(),
Authority: f.distrKeeper.GetAuthority(),
Params: types.Params{
CommunityTax: communityTax,
BaseProposerReward: sdk.ZeroDec(),
@ -108,20 +114,22 @@ func (s *KeeperTestSuite) TestMsgUpdateParams() {
for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
_, err := s.msgServer.UpdateParams(s.ctx, tc.input)
t.Run(tc.name, func(t *testing.T) {
_, err := f.msgServer.UpdateParams(f.ctx, tc.input)
if tc.expErr {
s.Require().Error(err)
s.Require().Contains(err.Error(), tc.expErrMsg)
assert.ErrorContains(t, err, tc.expErrMsg)
} else {
s.Require().NoError(err)
assert.NilError(t, err)
}
})
}
}
func (s *KeeperTestSuite) TestCommunityPoolSpend() {
func TestCommunityPoolSpend(t *testing.T) {
t.Parallel()
f := initFixture(t)
recipient := sdk.AccAddress([]byte("addr1_______________"))
testCases := []struct {
@ -143,7 +151,7 @@ func (s *KeeperTestSuite) TestCommunityPoolSpend() {
{
name: "invalid recipient",
input: &types.MsgCommunityPoolSpend{
Authority: s.distrKeeper.GetAuthority(),
Authority: f.distrKeeper.GetAuthority(),
Recipient: "invalid",
Amount: sdk.NewCoins(sdk.NewCoin("stake", sdk.NewInt(100))),
},
@ -153,7 +161,7 @@ func (s *KeeperTestSuite) TestCommunityPoolSpend() {
{
name: "valid message",
input: &types.MsgCommunityPoolSpend{
Authority: s.distrKeeper.GetAuthority(),
Authority: f.distrKeeper.GetAuthority(),
Recipient: recipient.String(),
Amount: sdk.NewCoins(sdk.NewCoin("stake", sdk.NewInt(100))),
},
@ -163,34 +171,36 @@ func (s *KeeperTestSuite) TestCommunityPoolSpend() {
for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
_, err := s.msgServer.CommunityPoolSpend(s.ctx, tc.input)
t.Run(tc.name, func(t *testing.T) {
_, err := f.msgServer.CommunityPoolSpend(f.ctx, tc.input)
if tc.expErr {
s.Require().Error(err)
s.Require().Contains(err.Error(), tc.expErrMsg)
assert.ErrorContains(t, err, tc.expErrMsg)
} else {
s.Require().NoError(err)
assert.NilError(t, err)
r, err := sdk.AccAddressFromBech32(tc.input.Recipient)
s.Require().NoError(err)
assert.NilError(t, err)
b := s.bankKeeper.GetAllBalances(s.ctx, r)
s.Require().False(b.IsZero())
b := f.bankKeeper.GetAllBalances(f.ctx, r)
assert.Assert(t, b.IsZero() == false)
}
})
}
}
func (s *KeeperTestSuite) TestMsgDepositValidatorRewardsPool() {
tstaking := stakingtestutil.NewHelper(s.T(), s.ctx, s.stakingKeeper)
func TestMsgDepositValidatorRewardsPool(t *testing.T) {
t.Parallel()
f := initFixture(t)
tstaking := stakingtestutil.NewHelper(t, f.ctx, f.stakingKeeper)
tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), math.LegacyNewDec(0))
tstaking.CreateValidator(s.valAddrs[1], valConsPk0, sdk.NewInt(100), true)
tstaking.CreateValidator(f.valAddrs[1], valConsPk0, sdk.NewInt(100), true)
// mint a non-staking token and send to an account
amt := sdk.NewCoins(sdk.NewInt64Coin("foo", 500))
s.bankKeeper.MintCoins(s.ctx, minttypes.ModuleName, amt)
s.bankKeeper.SendCoinsFromModuleToAccount(s.ctx, minttypes.ModuleName, s.addrs[0], amt)
f.bankKeeper.MintCoins(f.ctx, minttypes.ModuleName, amt)
f.bankKeeper.SendCoinsFromModuleToAccount(f.ctx, minttypes.ModuleName, f.addrs[0], amt)
testCases := []struct {
name string
@ -201,25 +211,25 @@ func (s *KeeperTestSuite) TestMsgDepositValidatorRewardsPool() {
{
name: "happy path (staking token)",
input: &types.MsgDepositValidatorRewardsPool{
Authority: s.addrs[0].String(),
ValidatorAddress: s.valAddrs[1].String(),
Amount: sdk.NewCoins(sdk.NewCoin(s.stakingKeeper.BondDenom(s.ctx), sdk.NewInt(100))),
Authority: f.addrs[0].String(),
ValidatorAddress: f.valAddrs[1].String(),
Amount: sdk.NewCoins(sdk.NewCoin(f.stakingKeeper.BondDenom(f.ctx), sdk.NewInt(100))),
},
},
{
name: "happy path (non-staking token)",
input: &types.MsgDepositValidatorRewardsPool{
Authority: s.addrs[0].String(),
ValidatorAddress: s.valAddrs[1].String(),
Authority: f.addrs[0].String(),
ValidatorAddress: f.valAddrs[1].String(),
Amount: amt,
},
},
{
name: "invalid validator",
input: &types.MsgDepositValidatorRewardsPool{
Authority: s.addrs[0].String(),
Authority: f.addrs[0].String(),
ValidatorAddress: sdk.ValAddress([]byte("addr1_______________")).String(),
Amount: sdk.NewCoins(sdk.NewCoin(s.stakingKeeper.BondDenom(s.ctx), sdk.NewInt(100))),
Amount: sdk.NewCoins(sdk.NewCoin(f.stakingKeeper.BondDenom(f.ctx), sdk.NewInt(100))),
},
expErr: true,
expErrMsg: "validator does not exist",
@ -228,23 +238,22 @@ func (s *KeeperTestSuite) TestMsgDepositValidatorRewardsPool() {
for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
_, err := s.msgServer.DepositValidatorRewardsPool(s.ctx, tc.input)
t.Run(tc.name, func(t *testing.T) {
_, err := f.msgServer.DepositValidatorRewardsPool(f.ctx, tc.input)
if tc.expErr {
s.Require().Error(err)
s.Require().Contains(err.Error(), tc.expErrMsg)
assert.ErrorContains(t, err, tc.expErrMsg)
} else {
s.Require().NoError(err)
assert.NilError(t, err)
valAddr, err := sdk.ValAddressFromBech32(tc.input.ValidatorAddress)
s.Require().NoError(err)
assert.NilError(t, err)
// check validator outstanding rewards
outstandingRewards := s.distrKeeper.GetValidatorOutstandingRewards(s.ctx, valAddr)
outstandingRewards := f.distrKeeper.GetValidatorOutstandingRewards(f.ctx, valAddr)
for _, c := range tc.input.Amount {
x := outstandingRewards.Rewards.AmountOf(c.Denom)
s.Require().Equal(x, sdk.NewDecFromInt(c.Amount))
assert.DeepEqual(t, x, sdk.NewDecFromInt(c.Amount))
}
}
})

View File

@ -3,8 +3,8 @@ package distribution_test
import (
"testing"
"github.com/stretchr/testify/require"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
"gotest.tools/v3/assert"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
@ -17,9 +17,9 @@ func TestItCreatesModuleAccountOnInitBlock(t *testing.T) {
var accountKeeper authkeeper.AccountKeeper
app, err := simtestutil.SetupAtGenesis(testutil.AppConfig, &accountKeeper)
require.NoError(t, err)
assert.NilError(t, err)
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
acc := accountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName))
require.NotNil(t, acc)
assert.Assert(t, acc != nil)
}