From 5f3f534e07258849372c2586561f15ca219f0660 Mon Sep 17 00:00:00 2001 From: MSalopek Date: Thu, 1 Feb 2024 11:21:25 +0100 Subject: [PATCH] tests: add extra tests to check limits --- x/feegrant/keeper/keeper_test.go | 35 ++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/x/feegrant/keeper/keeper_test.go b/x/feegrant/keeper/keeper_test.go index f6764404e764a..348c6326bdf52 100644 --- a/x/feegrant/keeper/keeper_test.go +++ b/x/feegrant/keeper/keeper_test.go @@ -460,3 +460,38 @@ func (suite *KeeperTestSuite) TestPruneGrants() { }) } } + +func (suite *KeeperTestSuite) TestPruneGrantsEdgecases() { + eth := sdk.NewCoins(sdk.NewInt64Coin("eth", 123)) + now := suite.ctx.BlockTime() + oneYearExpiry := now.AddDate(1, 0, 0) + + granter := suite.addrs[1] + grantee1 := suite.addrs[2] + err := suite.feegrantKeeper.GrantAllowance(suite.ctx, granter, grantee1, &feegrant.BasicAllowance{ + SpendLimit: eth, + Expiration: &oneYearExpiry, + }) + suite.NoError(err) + + grantee2 := suite.addrs[3] + err = suite.feegrantKeeper.GrantAllowance(suite.ctx, granter, grantee2, &feegrant.BasicAllowance{ + SpendLimit: eth, + Expiration: &now, + }) + suite.NoError(err) + + // expect 2 active grants + grantsBeforePrune, err := suite.feegrantKeeper.AllowancesByGranter(suite.ctx, &feegrant.QueryAllowancesByGranterRequest{Granter: granter.String()}) + suite.NoError(err) + suite.Len(grantsBeforePrune.Allowances, 2) + + // use blocktime that would result in both grants being expired + expireCtx := suite.ctx.WithBlockTime(now.AddDate(1, 0, 1)) + + // expect 1 grant to be removed due to the imposed limit + suite.feegrantKeeper.RemoveExpiredAllowances(expireCtx, 1) + grantsAfterPrune, err := suite.feegrantKeeper.AllowancesByGranter(suite.ctx, &feegrant.QueryAllowancesByGranterRequest{Granter: granter.String()}) + suite.NoError(err) + suite.Len(grantsAfterPrune.Allowances, 1) +}