package keeper_test import ( "testing" "cosmossdk.io/core/appmodule" "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" cmtprototypes "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" "github.com/cosmos/cosmos-sdk/codec" addresscodec "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/testutil/integration" sdk "github.com/cosmos/cosmos-sdk/types" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" "github.com/cosmos/cosmos-sdk/x/auth" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/cosmos-sdk/x/bank" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" auctionTypes "git.vdb.to/cerc-io/laconic2d/x/auction" auctionkeeper "git.vdb.to/cerc-io/laconic2d/x/auction/keeper" auctionmodule "git.vdb.to/cerc-io/laconic2d/x/auction/module" bondTypes "git.vdb.to/cerc-io/laconic2d/x/bond" registryTypes "git.vdb.to/cerc-io/laconic2d/x/registry" ) type KeeperTestSuite struct { suite.Suite app *integration.App sdkCtx sdk.Context cdc codec.Codec keys map[string]*storetypes.KVStoreKey accountKeeper authkeeper.AccountKeeper bankKeeper bankkeeper.Keeper auctionKeeper *auctionkeeper.Keeper } func (kts *KeeperTestSuite) SetupTest() { keys := storetypes.NewKVStoreKeys( authtypes.StoreKey, banktypes.StoreKey, auctionTypes.StoreKey, ) cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}, auctionmodule.AppModule{}).Codec logger := log.NewNopLogger() // Use log.NewTestLogger(kts.T()) for help with debugging cms := integration.CreateMultiStore(keys, logger) newCtx := sdk.NewContext(cms, cmtprototypes.Header{}, true, logger) authority := authtypes.NewModuleAddress("gov") maccPerms := map[string][]string{ minttypes.ModuleName: {authtypes.Minter}, auctionTypes.ModuleName: {}, auctionTypes.AuctionBurnModuleAccountName: {}, bondTypes.ModuleName: {}, registryTypes.ModuleName: {}, registryTypes.RecordRentModuleAccountName: {}, registryTypes.AuthorityRentModuleAccountName: {}, } accountKeeper := authkeeper.NewAccountKeeper( cdc, runtime.NewKVStoreService(keys[authtypes.StoreKey]), authtypes.ProtoBaseAccount, maccPerms, addresscodec.NewBech32Codec(sdk.Bech32MainPrefix), sdk.Bech32MainPrefix, authority.String(), ) blockedAddresses := map[string]bool{ accountKeeper.GetAuthority(): false, } bankKeeper := bankkeeper.NewBaseKeeper( cdc, runtime.NewKVStoreService(keys[banktypes.StoreKey]), accountKeeper, blockedAddresses, authority.String(), log.NewNopLogger(), ) auctionKeeper := auctionkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[auctionTypes.StoreKey]), accountKeeper, bankKeeper) authModule := auth.NewAppModule(cdc, accountKeeper, authsims.RandomGenesisAccounts, nil) bankModule := bank.NewAppModule(cdc, bankKeeper, accountKeeper, nil) auctionModule := auctionmodule.NewAppModule(cdc, auctionKeeper) integrationApp := integration.NewIntegrationApp(newCtx, logger, keys, cdc, map[string]appmodule.AppModule{ authtypes.ModuleName: authModule, banktypes.ModuleName: bankModule, auctionTypes.ModuleName: auctionModule, }) sdkCtx := sdk.UnwrapSDKContext(integrationApp.Context()) // Register MsgServer and QueryServer auctionTypes.RegisterMsgServer(integrationApp.MsgServiceRouter(), auctionkeeper.NewMsgServerImpl(auctionKeeper)) auctionTypes.RegisterQueryServer(integrationApp.QueryHelper(), auctionkeeper.NewQueryServerImpl(auctionKeeper)) // set default staking params assert.Nil(kts.T(), auctionKeeper.Params.Set(sdkCtx, auctionTypes.DefaultParams())) kts.app = integrationApp kts.sdkCtx, kts.cdc, kts.keys = sdkCtx, cdc, keys kts.accountKeeper, kts.bankKeeper, kts.auctionKeeper = accountKeeper, bankKeeper, auctionKeeper } func TestKeeperTestSuite(t *testing.T) { suite.Run(t, new(KeeperTestSuite)) }