diff --git a/x/auth/vesting/handler_test.go b/x/auth/vesting/handler_test.go deleted file mode 100644 index b81acb017874..000000000000 --- a/x/auth/vesting/handler_test.go +++ /dev/null @@ -1,226 +0,0 @@ -package vesting_test - -import ( - stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" - "testing" - "time" - - "github.com/stretchr/testify/suite" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - - "cosmossdk.io/simapp" - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - "github.com/cosmos/cosmos-sdk/x/auth/vesting" - "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" -) - -type HandlerTestSuite struct { - suite.Suite - - handler sdk.Handler - app *simapp.SimApp -} - -func (suite *HandlerTestSuite) SetupTest() { - checkTx := false - app := simapp.Setup(suite.T(), checkTx) - - suite.handler = vesting.NewHandler( - app.AccountKeeper, - app.BankKeeper, - app.DistrKeeper, - app.StakingKeeper, - ) - suite.app = app -} - -func (suite *HandlerTestSuite) TestMsgCreateVestingAccount() { - ctx := suite.app.BaseApp.NewContext(false, tmproto.Header{Height: suite.app.LastBlockHeight() + 1}) - - balances := sdk.NewCoins(sdk.NewInt64Coin("test", 1000)) - addr1 := sdk.AccAddress([]byte("addr1_______________")) - addr2 := sdk.AccAddress([]byte("addr2_______________")) - addr3 := sdk.AccAddress([]byte("addr3_______________")) - - acc1 := suite.app.AccountKeeper.NewAccountWithAddress(ctx, addr1) - suite.app.AccountKeeper.SetAccount(ctx, acc1) - suite.Require().NoError(simapp.FundAccount(suite.app.BankKeeper, ctx, addr1, balances)) - - testCases := []struct { - name string - msg *types.MsgCreateVestingAccount - expectErr bool - }{ - { - name: "create delayed vesting account", - msg: types.NewMsgCreateVestingAccount(addr1, addr2, sdk.NewCoins(sdk.NewInt64Coin("test", 100)), ctx.BlockTime().Unix()+10000, true), - expectErr: false, - }, - { - name: "create continuous vesting account", - msg: types.NewMsgCreateVestingAccount(addr1, addr3, sdk.NewCoins(sdk.NewInt64Coin("test", 100)), ctx.BlockTime().Unix()+10000, false), - expectErr: false, - }, - { - name: "continuous vesting account already exists", - msg: types.NewMsgCreateVestingAccount(addr1, addr3, sdk.NewCoins(sdk.NewInt64Coin("test", 100)), ctx.BlockTime().Unix()+10000, false), - expectErr: true, - }, - } - - for _, tc := range testCases { - tc := tc - - suite.Run(tc.name, func() { - res, err := suite.handler(ctx, tc.msg) - if tc.expectErr { - suite.Require().Error(err) - } else { - suite.Require().NoError(err) - suite.Require().NotNil(res) - - toAddr, err := sdk.AccAddressFromBech32(tc.msg.ToAddress) - suite.Require().NoError(err) - accI := suite.app.AccountKeeper.GetAccount(ctx, toAddr) - suite.Require().NotNil(accI) - - if tc.msg.Delayed { - acc, ok := accI.(*types.DelayedVestingAccount) - suite.Require().True(ok) - suite.Require().Equal(tc.msg.Amount, acc.GetVestingCoins(ctx.BlockTime())) - } else { - acc, ok := accI.(*types.ContinuousVestingAccount) - suite.Require().True(ok) - suite.Require().Equal(tc.msg.Amount, acc.GetVestingCoins(ctx.BlockTime())) - } - } - }) - } -} - -func (suite *HandlerTestSuite) TestMsgDonateVestingToken() { - ctx := suite.app.BaseApp.NewContext(false, tmproto.Header{Height: suite.app.LastBlockHeight() + 1}) - - prevCommunityFund := suite.app.DistrKeeper.GetFeePool(ctx).CommunityPool - - balances := sdk.NewCoins(sdk.NewInt64Coin("test", 1000)) - addr1 := sdk.AccAddress([]byte("addr1_______________")) - addr2 := sdk.AccAddress([]byte("addr2_______________")) - addr3 := sdk.AccAddress([]byte("addr3_______________")) - addr4 := sdk.AccAddress([]byte("addr4_______________")) - - valAddr := sdk.ValAddress([]byte("validator___________")) - suite.app.StakingKeeper.SetValidator(ctx, stakingtypes.Validator{ - OperatorAddress: valAddr.String(), - ConsensusPubkey: nil, - Jailed: false, - Status: 0, - Tokens: sdk.NewInt(2), - DelegatorShares: sdk.MustNewDecFromStr("1.1"), - Description: stakingtypes.Description{}, - UnbondingHeight: 0, - UnbondingTime: time.Time{}, - Commission: stakingtypes.Commission{}, - MinSelfDelegation: sdk.NewInt(1), - }) - - acc1 := suite.app.AccountKeeper.NewAccountWithAddress(ctx, addr1) - suite.app.AccountKeeper.SetAccount(ctx, acc1) - suite.Require().NoError(simapp.FundAccount(suite.app.BankKeeper, ctx, addr1, balances)) - - acc2 := types.NewPermanentLockedAccount( - suite.app.AccountKeeper.NewAccountWithAddress(ctx, addr2).(*authtypes.BaseAccount), balances, - ) - acc2.DelegatedVesting = balances - suite.app.AccountKeeper.SetAccount(ctx, acc2) - suite.app.StakingKeeper.SetDelegation(ctx, stakingtypes.Delegation{ - DelegatorAddress: addr2.String(), - ValidatorAddress: valAddr.String(), - Shares: sdk.OneDec(), - }) - suite.Require().NoError(simapp.FundAccount(suite.app.BankKeeper, ctx, addr2, balances)) - - acc3 := types.NewPermanentLockedAccount( - suite.app.AccountKeeper.NewAccountWithAddress(ctx, addr3).(*authtypes.BaseAccount), balances, - ) - suite.app.AccountKeeper.SetAccount(ctx, acc3) - suite.Require().NoError(simapp.FundAccount(suite.app.BankKeeper, ctx, addr3, balances)) - - acc4 := types.NewPermanentLockedAccount( - suite.app.AccountKeeper.NewAccountWithAddress(ctx, addr4).(*authtypes.BaseAccount), balances, - ) - acc4.DelegatedVesting = balances - suite.app.AccountKeeper.SetAccount(ctx, acc4) - suite.app.StakingKeeper.SetDelegation(ctx, stakingtypes.Delegation{ - DelegatorAddress: addr4.String(), - ValidatorAddress: valAddr.String(), - Shares: sdk.MustNewDecFromStr("0.1"), - }) - suite.Require().NoError(simapp.FundAccount(suite.app.BankKeeper, ctx, addr4, balances)) - - testCases := []struct { - name string - msg *types.MsgDonateAllVestingTokens - expectErr bool - }{ - { - name: "donate from normal account", - msg: types.NewMsgDonateAllVestingTokens(addr1), - expectErr: true, - }, - { - name: "donate from vesting account with delegated vesting", - msg: types.NewMsgDonateAllVestingTokens(addr2), - expectErr: true, - }, - { - name: "donate from vesting account", - msg: types.NewMsgDonateAllVestingTokens(addr3), - expectErr: false, - }, - { - name: "donate from vesting account with dust delegation", - msg: types.NewMsgDonateAllVestingTokens(addr4), - expectErr: false, - }, - } - - for _, tc := range testCases { - tc := tc - - suite.Run(tc.name, func() { - // Rollback context after every test case - ctx, _ := ctx.CacheContext() - res, err := suite.handler(ctx, tc.msg) - if tc.expectErr { - suite.Require().Error(err) - } else { - suite.Require().NoError(err) - suite.Require().NotNil(res) - - feePool := suite.app.DistrKeeper.GetFeePool(ctx).CommunityPool.Sub(prevCommunityFund) - communityFund, _ := feePool.TruncateDecimal() - suite.Require().Equal(balances, communityFund) - - fromAddr, err := sdk.AccAddressFromBech32(tc.msg.FromAddress) - suite.Require().NoError(err) - accI := suite.app.AccountKeeper.GetAccount(ctx, fromAddr) - suite.Require().NotNil(accI) - _, ok := accI.(*authtypes.BaseAccount) - suite.Require().True(ok) - balance := suite.app.BankKeeper.GetAllBalances(ctx, fromAddr) - suite.Require().Empty(balance) - - _, broken := stakingkeeper.DelegatorSharesInvariant(suite.app.StakingKeeper)(ctx) - suite.Require().False(broken) - } - }) - } -} - -func TestHandlerTestSuite(t *testing.T) { - suite.Run(t, new(HandlerTestSuite)) -} diff --git a/x/auth/vesting/module.go b/x/auth/vesting/module.go index 381c300e6d2e..a795698b2281 100644 --- a/x/auth/vesting/module.go +++ b/x/auth/vesting/module.go @@ -152,7 +152,7 @@ type VestingInputs struct { AccountKeeper keeper.AccountKeeper BankKeeper types.BankKeeper - DistrKeeper types.DistrKeeper + // DistrKeeper types.DistrKeeper StakingKeeper types.StakingKeeper } @@ -163,7 +163,7 @@ type VestingOutputs struct { } func ProvideModule(in VestingInputs) VestingOutputs { - m := NewAppModule(in.AccountKeeper, in.BankKeeper, in.DistrKeeper, in.StakingKeeper) + m := NewAppModule(in.AccountKeeper, in.BankKeeper, nil, in.StakingKeeper) return VestingOutputs{Module: m} } diff --git a/x/auth/vesting/msg_server.go b/x/auth/vesting/msg_server.go index 8dfb87da2efe..79307c16ac2a 100644 --- a/x/auth/vesting/msg_server.go +++ b/x/auth/vesting/msg_server.go @@ -276,13 +276,5 @@ func (s msgServer) DonateAllVestingTokens(goCtx context.Context, msg *types.MsgD return nil, err } - ctx.EventManager().EmitEvent( - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), - sdk.NewAttribute(sdk.AttributeKeyAmount, vestingCoins.String()), - ), - ) - return &types.MsgDonateAllVestingTokensResponse{}, nil } diff --git a/x/auth/vesting/msg_server_test.go b/x/auth/vesting/msg_server_test.go index 18205f705b2a..c55df14e03dc 100644 --- a/x/auth/vesting/msg_server_test.go +++ b/x/auth/vesting/msg_server_test.go @@ -34,6 +34,8 @@ type VestingTestSuite struct { ctx sdk.Context accountKeeper authkeeper.AccountKeeper bankKeeper *vestingtestutil.MockBankKeeper + distrKeeper *vestingtestutil.MockDistrKeeper + stakingKeeper *vestingtestutil.MockStakingKeeper msgServer vestingtypes.MsgServer } @@ -47,6 +49,8 @@ func (s *VestingTestSuite) SetupTest() { ctrl := gomock.NewController(s.T()) s.bankKeeper = vestingtestutil.NewMockBankKeeper(ctrl) + s.distrKeeper = vestingtestutil.NewMockDistrKeeper(ctrl) + s.stakingKeeper = vestingtestutil.NewMockStakingKeeper(ctrl) s.accountKeeper = authkeeper.NewAccountKeeper( encCfg.Codec, key, @@ -58,7 +62,7 @@ func (s *VestingTestSuite) SetupTest() { vestingtypes.RegisterInterfaces(encCfg.InterfaceRegistry) authtypes.RegisterInterfaces(encCfg.InterfaceRegistry) - s.msgServer = vesting.NewMsgServerImpl(s.accountKeeper, s.bankKeeper) + s.msgServer = vesting.NewMsgServerImpl(s.accountKeeper, s.bankKeeper, s.distrKeeper, s.stakingKeeper) } func (s *VestingTestSuite) TestCreateVestingAccount() { diff --git a/x/auth/vesting/testutil/expected_keepers_mocks.go b/x/auth/vesting/testutil/expected_keepers_mocks.go index fd1fe6140d9c..582d9104f9b2 100644 --- a/x/auth/vesting/testutil/expected_keepers_mocks.go +++ b/x/auth/vesting/testutil/expected_keepers_mocks.go @@ -1,14 +1,17 @@ // Code generated by MockGen. DO NOT EDIT. // Source: x/auth/vesting/types/expected_keepers.go -// Package testutil is a generated GoMock package. -package testutil +// Package mock_types is a generated GoMock package. +package mock_types import ( reflect "reflect" + math "cosmossdk.io/math" + log "github.com/cometbft/cometbft/libs/log" types "github.com/cosmos/cosmos-sdk/types" - gomock "github.com/golang/mock/gomock" + types0 "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/golang/mock/gomock" ) // MockBankKeeper is a mock of BankKeeper interface. @@ -80,3 +83,235 @@ func (mr *MockBankKeeperMockRecorder) SendCoins(ctx, fromAddr, toAddr, amt inter mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendCoins", reflect.TypeOf((*MockBankKeeper)(nil).SendCoins), ctx, fromAddr, toAddr, amt) } + +// MockDistrKeeper is a mock of DistrKeeper interface. +type MockDistrKeeper struct { + ctrl *gomock.Controller + recorder *MockDistrKeeperMockRecorder +} + +// MockDistrKeeperMockRecorder is the mock recorder for MockDistrKeeper. +type MockDistrKeeperMockRecorder struct { + mock *MockDistrKeeper +} + +// NewMockDistrKeeper creates a new mock instance. +func NewMockDistrKeeper(ctrl *gomock.Controller) *MockDistrKeeper { + mock := &MockDistrKeeper{ctrl: ctrl} + mock.recorder = &MockDistrKeeperMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockDistrKeeper) EXPECT() *MockDistrKeeperMockRecorder { + return m.recorder +} + +// FundCommunityPool mocks base method. +func (m *MockDistrKeeper) FundCommunityPool(ctx types.Context, amount types.Coins, sender types.AccAddress) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FundCommunityPool", ctx, amount, sender) + ret0, _ := ret[0].(error) + return ret0 +} + +// FundCommunityPool indicates an expected call of FundCommunityPool. +func (mr *MockDistrKeeperMockRecorder) FundCommunityPool(ctx, amount, sender interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FundCommunityPool", reflect.TypeOf((*MockDistrKeeper)(nil).FundCommunityPool), ctx, amount, sender) +} + +// GetAuthority mocks base method. +func (m *MockDistrKeeper) GetAuthority() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAuthority") + ret0, _ := ret[0].(string) + return ret0 +} + +// GetAuthority indicates an expected call of GetAuthority. +func (mr *MockDistrKeeperMockRecorder) GetAuthority() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAuthority", reflect.TypeOf((*MockDistrKeeper)(nil).GetAuthority)) +} + +// GetTotalRewards mocks base method. +func (m *MockDistrKeeper) GetTotalRewards(ctx types.Context) types.DecCoins { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTotalRewards", ctx) + ret0, _ := ret[0].(types.DecCoins) + return ret0 +} + +// GetTotalRewards indicates an expected call of GetTotalRewards. +func (mr *MockDistrKeeperMockRecorder) GetTotalRewards(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTotalRewards", reflect.TypeOf((*MockDistrKeeper)(nil).GetTotalRewards), ctx) +} + +// Logger mocks base method. +func (m *MockDistrKeeper) Logger(ctx types.Context) log.Logger { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Logger", ctx) + ret0, _ := ret[0].(log.Logger) + return ret0 +} + +// Logger indicates an expected call of Logger. +func (mr *MockDistrKeeperMockRecorder) Logger(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Logger", reflect.TypeOf((*MockDistrKeeper)(nil).Logger), ctx) +} + +// SetWithdrawAddr mocks base method. +func (m *MockDistrKeeper) SetWithdrawAddr(ctx types.Context, delegatorAddr, withdrawAddr types.AccAddress) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SetWithdrawAddr", ctx, delegatorAddr, withdrawAddr) + ret0, _ := ret[0].(error) + return ret0 +} + +// SetWithdrawAddr indicates an expected call of SetWithdrawAddr. +func (mr *MockDistrKeeperMockRecorder) SetWithdrawAddr(ctx, delegatorAddr, withdrawAddr interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetWithdrawAddr", reflect.TypeOf((*MockDistrKeeper)(nil).SetWithdrawAddr), ctx, delegatorAddr, withdrawAddr) +} + +// WithdrawDelegationRewards mocks base method. +func (m *MockDistrKeeper) WithdrawDelegationRewards(ctx types.Context, delAddr types.AccAddress, valAddr types.ValAddress) (types.Coins, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "WithdrawDelegationRewards", ctx, delAddr, valAddr) + ret0, _ := ret[0].(types.Coins) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// WithdrawDelegationRewards indicates an expected call of WithdrawDelegationRewards. +func (mr *MockDistrKeeperMockRecorder) WithdrawDelegationRewards(ctx, delAddr, valAddr interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WithdrawDelegationRewards", reflect.TypeOf((*MockDistrKeeper)(nil).WithdrawDelegationRewards), ctx, delAddr, valAddr) +} + +// WithdrawValidatorCommission mocks base method. +func (m *MockDistrKeeper) WithdrawValidatorCommission(ctx types.Context, valAddr types.ValAddress) (types.Coins, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "WithdrawValidatorCommission", ctx, valAddr) + ret0, _ := ret[0].(types.Coins) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// WithdrawValidatorCommission indicates an expected call of WithdrawValidatorCommission. +func (mr *MockDistrKeeperMockRecorder) WithdrawValidatorCommission(ctx, valAddr interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WithdrawValidatorCommission", reflect.TypeOf((*MockDistrKeeper)(nil).WithdrawValidatorCommission), ctx, valAddr) +} + +// MockStakingKeeper is a mock of StakingKeeper interface. +type MockStakingKeeper struct { + ctrl *gomock.Controller + recorder *MockStakingKeeperMockRecorder +} + +// MockStakingKeeperMockRecorder is the mock recorder for MockStakingKeeper. +type MockStakingKeeperMockRecorder struct { + mock *MockStakingKeeper +} + +// NewMockStakingKeeper creates a new mock instance. +func NewMockStakingKeeper(ctrl *gomock.Controller) *MockStakingKeeper { + mock := &MockStakingKeeper{ctrl: ctrl} + mock.recorder = &MockStakingKeeperMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockStakingKeeper) EXPECT() *MockStakingKeeperMockRecorder { + return m.recorder +} + +// GetDelegatorDelegations mocks base method. +func (m *MockStakingKeeper) GetDelegatorDelegations(ctx types.Context, delegator types.AccAddress, maxRetrieve uint16) []types0.Delegation { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetDelegatorDelegations", ctx, delegator, maxRetrieve) + ret0, _ := ret[0].([]types0.Delegation) + return ret0 +} + +// GetDelegatorDelegations indicates an expected call of GetDelegatorDelegations. +func (mr *MockStakingKeeperMockRecorder) GetDelegatorDelegations(ctx, delegator, maxRetrieve interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDelegatorDelegations", reflect.TypeOf((*MockStakingKeeper)(nil).GetDelegatorDelegations), ctx, delegator, maxRetrieve) +} + +// GetRedelegations mocks base method. +func (m *MockStakingKeeper) GetRedelegations(ctx types.Context, delegator types.AccAddress, maxRetrieve uint16) []types0.Redelegation { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetRedelegations", ctx, delegator, maxRetrieve) + ret0, _ := ret[0].([]types0.Redelegation) + return ret0 +} + +// GetRedelegations indicates an expected call of GetRedelegations. +func (mr *MockStakingKeeperMockRecorder) GetRedelegations(ctx, delegator, maxRetrieve interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRedelegations", reflect.TypeOf((*MockStakingKeeper)(nil).GetRedelegations), ctx, delegator, maxRetrieve) +} + +// GetUnbondingDelegations mocks base method. +func (m *MockStakingKeeper) GetUnbondingDelegations(ctx types.Context, delegator types.AccAddress, maxRetrieve uint16) []types0.UnbondingDelegation { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetUnbondingDelegations", ctx, delegator, maxRetrieve) + ret0, _ := ret[0].([]types0.UnbondingDelegation) + return ret0 +} + +// GetUnbondingDelegations indicates an expected call of GetUnbondingDelegations. +func (mr *MockStakingKeeperMockRecorder) GetUnbondingDelegations(ctx, delegator, maxRetrieve interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUnbondingDelegations", reflect.TypeOf((*MockStakingKeeper)(nil).GetUnbondingDelegations), ctx, delegator, maxRetrieve) +} + +// GetValidator mocks base method. +func (m *MockStakingKeeper) GetValidator(ctx types.Context, addr types.ValAddress) (types0.Validator, bool) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetValidator", ctx, addr) + ret0, _ := ret[0].(types0.Validator) + ret1, _ := ret[1].(bool) + return ret0, ret1 +} + +// GetValidator indicates an expected call of GetValidator. +func (mr *MockStakingKeeperMockRecorder) GetValidator(ctx, addr interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetValidator", reflect.TypeOf((*MockStakingKeeper)(nil).GetValidator), ctx, addr) +} + +// RemoveDelegation mocks base method. +func (m *MockStakingKeeper) RemoveDelegation(ctx types.Context, delegation types0.Delegation) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RemoveDelegation", ctx, delegation) + ret0, _ := ret[0].(error) + return ret0 +} + +// RemoveDelegation indicates an expected call of RemoveDelegation. +func (mr *MockStakingKeeperMockRecorder) RemoveDelegation(ctx, delegation interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveDelegation", reflect.TypeOf((*MockStakingKeeper)(nil).RemoveDelegation), ctx, delegation) +} + +// RemoveValidatorTokensAndShares mocks base method. +func (m *MockStakingKeeper) RemoveValidatorTokensAndShares(ctx types.Context, validator types0.Validator, sharesToRemove types.Dec) (types0.Validator, math.Int) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RemoveValidatorTokensAndShares", ctx, validator, sharesToRemove) + ret0, _ := ret[0].(types0.Validator) + ret1, _ := ret[1].(math.Int) + return ret0, ret1 +} + +// RemoveValidatorTokensAndShares indicates an expected call of RemoveValidatorTokensAndShares. +func (mr *MockStakingKeeperMockRecorder) RemoveValidatorTokensAndShares(ctx, validator, sharesToRemove interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveValidatorTokensAndShares", reflect.TypeOf((*MockStakingKeeper)(nil).RemoveValidatorTokensAndShares), ctx, validator, sharesToRemove) +} diff --git a/x/auth/vesting/types/expected_keepers.go b/x/auth/vesting/types/expected_keepers.go index 2e6d39089ac8..1a1bd981fe09 100644 --- a/x/auth/vesting/types/expected_keepers.go +++ b/x/auth/vesting/types/expected_keepers.go @@ -2,6 +2,7 @@ package types import ( "cosmossdk.io/math" + "github.com/cometbft/cometbft/libs/log" sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -16,6 +17,12 @@ type BankKeeper interface { // DistrKeeper defines the expected interface for distribution keeper type DistrKeeper interface { + GetAuthority() string + Logger(ctx sdk.Context) log.Logger + SetWithdrawAddr(ctx sdk.Context, delegatorAddr sdk.AccAddress, withdrawAddr sdk.AccAddress) error + WithdrawDelegationRewards(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (sdk.Coins, error) + WithdrawValidatorCommission(ctx sdk.Context, valAddr sdk.ValAddress) (sdk.Coins, error) + GetTotalRewards(ctx sdk.Context) (totalRewards sdk.DecCoins) FundCommunityPool(ctx sdk.Context, amount sdk.Coins, sender sdk.AccAddress) error } diff --git a/x/auth/vesting/types/msgs.go b/x/auth/vesting/types/msgs.go index df97106a6608..9441a809557c 100644 --- a/x/auth/vesting/types/msgs.go +++ b/x/auth/vesting/types/msgs.go @@ -17,7 +17,7 @@ const TypeMsgCreatePermanentLockedAccount = "msg_create_permanent_locked_account const TypeMsgCreatePeriodicVestingAccount = "msg_create_periodic_vesting_account" // TypeMsgDonateAllVestingTokens defines the type value for a MsgDonateAllVestingTokens. -const TypeMsgDonateAllVestingTokens = "msg_donate_all_vesting_tokens" +const TypeMsgDonateAllVestingTokens = "msg_donate_all_vesting_tokens" //nolint: gosec var _ sdk.Msg = &MsgCreateVestingAccount{}