package testutil import ( "context" "cosmossdk.io/x/bank/types" sdk "github.com/cosmos/cosmos-sdk/types" ) // minimalBankKeeper is a subset of the bankkeeper.Keeper interface that is used // for the bank testing utilities. type minimalBankKeeper interface { MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error } // FundAccount is a utility function that funds an account by minting and // sending the coins to the address. This should be used for testing purposes // only! // // TODO: Instead of using the mint module account, which has the // permission of minting, create a "faucet" account. (@fdymylja) func FundAccount(ctx context.Context, bankKeeper minimalBankKeeper, addr sdk.AccAddress, amounts sdk.Coins) error { if err := bankKeeper.MintCoins(ctx, types.MintModuleName, amounts); err != nil { return err } return bankKeeper.SendCoinsFromModuleToAccount(ctx, types.MintModuleName, addr, amounts) } // FundModuleAccount is a utility function that funds a module account by // minting and sending the coins to the address. This should be used for testing // purposes only! // // TODO: Instead of using the mint module account, which has the // permission of minting, create a "faucet" account. (@fdymylja) func FundModuleAccount(ctx context.Context, bankKeeper minimalBankKeeper, recipientMod string, amounts sdk.Coins) error { if err := bankKeeper.MintCoins(ctx, types.MintModuleName, amounts); err != nil { return err } return bankKeeper.SendCoinsFromModuleToModule(ctx, types.MintModuleName, recipientMod, amounts) }