* temp commit * setbalance now is internal * remove set balances in genesis * feedback test commit * update tests * fix: genesis panic message * fix not bonded pool * fix(staking): genesis test * fix(simapp): rollback state fix change * fix(staking): genesis large val set test * [Bank Refactor] Frojdi jonathan/remove setsupply (#8491) * init supply in a different way * remove external usage of set supply * change(staking): replace SetSupply with MintCoins in tests * change(evidence): replace SetSupply with MintCoins in tests * change(crisis): remove SetSupply in tests * change(bank): remove set supply from genesis tests * change(bank): remove set supply from keeper tests * change(bank): remove remaining set supply usage from keeper tests * change(bank): remove set supply usage from grpc query and querier tests * change(bank): remove SetSupply from keeper interface Co-authored-by: Frojdi Dymylja <frojdi.dymylja@gmail.com> * remove setbalances from genesis in gov * remove keyring * add init genesis state * change(staking): make genesis checks coherent and add tests * remove setbalances on distribution * fix(staking): genesis tests * [Bank Refactor]: Remove SetBalances usage from the code and tests (#8509) * change(distribution): remove SetBalances usage from keeper tests * add(simapp): FundAccount utility function * chore(staking): use FundAccount in keeper tests * change(staking): remove usage of SetBalance in allocation tests * change(staking): remove usage of SetBalance in delegation tests * change(staking): remove usage of SetBalance in proposal handler tests * change(staking): remove usage of SetBalances in grpc query tests * change(staking): remove usage of SetBalances in operations tests * change(distribution): remove usage of SetBalances in genesis * change(authz): remove usage of SetBalances keeper and operations test * fix(authz): TestKeeperFees failing test * change(slashing): remove SetBalances from expected BankKeeper * change(slashing): remove usage of SetBalances in tests * change(distribution): remove SetBalances from expected BankKeeper * change(genutil): remove usage of SetBalances from tests * change(gov): remove SetBalances from expected BankKeeper * change(gov): remove usage of SetBalances from tests * change(staking): remove usage of SetBalances from slash tests * change(staking): remove SetBalances from expected BankKeeper * change(staking): remove usage of SetBalances from delegation tests * change(staking): remove usage of SetBalances from operations tests * change(staking): remove usage of SetBalances from validator tests * change(bank): remove usage of SetBalances from app tests * change(bank): remove usage of SetBalances from bench tests * change(bank): remove usage of SetBalances from querier tests * change(bank): remove usage of SetBalances from grpc query tests * change(bank): remove usage of SetBalances from operations tests * change(bank): partially remove usage of SetBalances from keeper tests * change(bank): finalize removal of usage of SetBalances from keeper tests * change(auth): remove usage of SetBalances from verify tests * change(auth): partially remove usage of SetBalances from tests * [Bank refactor]: finalize removal of setbalances from auth (#8527) * add tests with is check tx * temp commit * fix test * fix other test and remove setbalances * change(auth): remove usage of SetBalances is vesting tests Co-authored-by: Jonathan Gimeno <jgimeno@gmail.com> * change(types): remove usage of SetBalances in queries * fix(types): pagination tests * [Bank refactor] fix pagination tests (#8550) * fix tests * lint * change(bank): remove SetBalances from keeper public API Co-authored-by: Jonathan Gimeno <jgimeno@gmail.com> Co-authored-by: SaReN <sahithnarahari@gmail.com> * change(bank): remove SubtractCoins from keeper public API * change(ibc/transfer): remove AddCoins from relay tests * change(bank): remove AddCoins from public keeper API * fix imports * remove set balances * fix fee test * remove set balances * fix(staking): remove dependency on minter authorization for staking pools * chore: update CHANGELOG.md * update: x/distribution/keeper/keeper_test.go Co-authored-by: Robert Zaremba <robert@zaremba.ch> * Update simapp/test_helpers.go Co-authored-by: Robert Zaremba <robert@zaremba.ch> * Update x/staking/genesis_test.go Co-authored-by: Robert Zaremba <robert@zaremba.ch> * fix(simapp): FundAccount amount variable name * fix some PR issues Co-authored-by: Frojdi Dymylja <frojdi.dymylja@gmail.com> Co-authored-by: Frojdi Dymylja <33157909+fdymylja@users.noreply.github.com> Co-authored-by: SaReN <sahithnarahari@gmail.com> Co-authored-by: Alessio Treglia <alessio@tendermint.com> Co-authored-by: Robert Zaremba <robert@zaremba.ch>
119 lines
3.7 KiB
Go
119 lines
3.7 KiB
Go
package crisis_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
|
|
|
|
"github.com/cosmos/cosmos-sdk/simapp"
|
|
"github.com/cosmos/cosmos-sdk/testutil/testdata"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/x/crisis"
|
|
"github.com/cosmos/cosmos-sdk/x/crisis/types"
|
|
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
|
|
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
|
|
)
|
|
|
|
var (
|
|
testModuleName = "dummy"
|
|
dummyRouteWhichPasses = types.NewInvarRoute(testModuleName, "which-passes", func(_ sdk.Context) (string, bool) { return "", false })
|
|
dummyRouteWhichFails = types.NewInvarRoute(testModuleName, "which-fails", func(_ sdk.Context) (string, bool) { return "whoops", true })
|
|
)
|
|
|
|
func createTestApp() (*simapp.SimApp, sdk.Context, []sdk.AccAddress) {
|
|
app := simapp.Setup(false)
|
|
ctx := app.NewContext(false, tmproto.Header{})
|
|
|
|
constantFee := sdk.NewInt64Coin(sdk.DefaultBondDenom, 10)
|
|
app.CrisisKeeper.SetConstantFee(ctx, constantFee)
|
|
app.StakingKeeper.SetParams(ctx, stakingtypes.DefaultParams())
|
|
|
|
app.CrisisKeeper.RegisterRoute(testModuleName, dummyRouteWhichPasses.Route, dummyRouteWhichPasses.Invar)
|
|
app.CrisisKeeper.RegisterRoute(testModuleName, dummyRouteWhichFails.Route, dummyRouteWhichFails.Invar)
|
|
|
|
feePool := distrtypes.InitialFeePool()
|
|
feePool.CommunityPool = sdk.NewDecCoinsFromCoins(sdk.NewCoins(constantFee)...)
|
|
app.DistrKeeper.SetFeePool(ctx, feePool)
|
|
|
|
addrs := simapp.AddTestAddrs(app, ctx, 1, sdk.NewInt(10000))
|
|
|
|
return app, ctx, addrs
|
|
}
|
|
|
|
//____________________________________________________________________________
|
|
|
|
func TestHandleMsgVerifyInvariant(t *testing.T) {
|
|
app, ctx, addrs := createTestApp()
|
|
sender := addrs[0]
|
|
|
|
cases := []struct {
|
|
name string
|
|
msg sdk.Msg
|
|
expectedResult string
|
|
}{
|
|
{"bad invariant route", types.NewMsgVerifyInvariant(sender, testModuleName, "route-that-doesnt-exist"), "fail"},
|
|
{"invariant broken", types.NewMsgVerifyInvariant(sender, testModuleName, dummyRouteWhichFails.Route), "panic"},
|
|
{"invariant passing", types.NewMsgVerifyInvariant(sender, testModuleName, dummyRouteWhichPasses.Route), "pass"},
|
|
{"invalid msg", testdata.NewTestMsg(), "fail"},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
tc := tc
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
h := crisis.NewHandler(app.CrisisKeeper)
|
|
|
|
switch tc.expectedResult {
|
|
case "fail":
|
|
res, err := h(ctx, tc.msg)
|
|
require.Error(t, err)
|
|
require.Nil(t, res)
|
|
|
|
case "pass":
|
|
res, err := h(ctx, tc.msg)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, res)
|
|
|
|
case "panic":
|
|
require.Panics(t, func() {
|
|
h(ctx, tc.msg) // nolint:errcheck
|
|
})
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestHandleMsgVerifyInvariantWithNotEnoughSenderCoins(t *testing.T) {
|
|
app, ctx, addrs := createTestApp()
|
|
sender := addrs[0]
|
|
coin := app.BankKeeper.GetAllBalances(ctx, sender)[0]
|
|
excessCoins := sdk.NewCoin(coin.Denom, coin.Amount.AddRaw(1))
|
|
app.CrisisKeeper.SetConstantFee(ctx, excessCoins)
|
|
|
|
h := crisis.NewHandler(app.CrisisKeeper)
|
|
msg := types.NewMsgVerifyInvariant(sender, testModuleName, dummyRouteWhichPasses.Route)
|
|
|
|
res, err := h(ctx, msg)
|
|
require.Error(t, err)
|
|
require.Nil(t, res)
|
|
}
|
|
|
|
func TestHandleMsgVerifyInvariantWithInvariantBrokenAndNotEnoughPoolCoins(t *testing.T) {
|
|
app, ctx, addrs := createTestApp()
|
|
sender := addrs[0]
|
|
|
|
// set the community pool to empty
|
|
feePool := app.DistrKeeper.GetFeePool(ctx)
|
|
feePool.CommunityPool = sdk.DecCoins{}
|
|
app.DistrKeeper.SetFeePool(ctx, feePool)
|
|
|
|
h := crisis.NewHandler(app.CrisisKeeper)
|
|
msg := types.NewMsgVerifyInvariant(sender, testModuleName, dummyRouteWhichFails.Route)
|
|
|
|
var res *sdk.Result
|
|
require.Panics(t, func() {
|
|
res, _ = h(ctx, msg)
|
|
}, fmt.Sprintf("%v", res))
|
|
}
|