github.com/Finschia/finschia-sdk@v0.48.1/x/capability/genesis_test.go (about) 1 package capability_test 2 3 import ( 4 dbm "github.com/tendermint/tm-db" 5 6 "github.com/Finschia/ostracon/libs/log" 7 tmproto "github.com/tendermint/tendermint/proto/tendermint/types" 8 9 "github.com/Finschia/finschia-sdk/simapp" 10 sdk "github.com/Finschia/finschia-sdk/types" 11 banktypes "github.com/Finschia/finschia-sdk/x/bank/types" 12 "github.com/Finschia/finschia-sdk/x/capability" 13 "github.com/Finschia/finschia-sdk/x/capability/keeper" 14 "github.com/Finschia/finschia-sdk/x/capability/types" 15 stakingtypes "github.com/Finschia/finschia-sdk/x/staking/types" 16 ) 17 18 func (suite *CapabilityTestSuite) TestGenesis() { 19 sk1 := suite.keeper.ScopeToModule(banktypes.ModuleName) 20 sk2 := suite.keeper.ScopeToModule(stakingtypes.ModuleName) 21 22 cap1, err := sk1.NewCapability(suite.ctx, "transfer") 23 suite.Require().NoError(err) 24 suite.Require().NotNil(cap1) 25 26 err = sk2.ClaimCapability(suite.ctx, cap1, "transfer") 27 suite.Require().NoError(err) 28 29 cap2, err := sk2.NewCapability(suite.ctx, "ica") 30 suite.Require().NoError(err) 31 suite.Require().NotNil(cap2) 32 33 genState := capability.ExportGenesis(suite.ctx, *suite.keeper) 34 35 // create new app that does not share persistent or in-memory state 36 // and initialize app from exported genesis state above. 37 db := dbm.NewMemDB() 38 encCdc := simapp.MakeTestEncodingConfig() 39 newApp := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, map[int64]bool{}, simapp.DefaultNodeHome, 5, encCdc, simapp.EmptyAppOptions{}) 40 41 newKeeper := keeper.NewKeeper(suite.cdc, newApp.GetKey(types.StoreKey), newApp.GetMemKey(types.MemStoreKey)) 42 newSk1 := newKeeper.ScopeToModule(banktypes.ModuleName) 43 newSk2 := newKeeper.ScopeToModule(stakingtypes.ModuleName) 44 deliverCtx, _ := newApp.BaseApp.NewUncachedContext(false, tmproto.Header{}).WithBlockGasMeter(sdk.NewInfiniteGasMeter()).CacheContext() 45 46 capability.InitGenesis(deliverCtx, *newKeeper, *genState) 47 48 // check that all previous capabilities exist in new app after InitGenesis 49 sk1Cap1, ok := newSk1.GetCapability(deliverCtx, "transfer") 50 suite.Require().True(ok, "could not get first capability after genesis on first ScopedKeeper") 51 suite.Require().Equal(*cap1, *sk1Cap1, "capability values not equal on first ScopedKeeper") 52 53 sk2Cap1, ok := newSk2.GetCapability(deliverCtx, "transfer") 54 suite.Require().True(ok, "could not get first capability after genesis on first ScopedKeeper") 55 suite.Require().Equal(*cap1, *sk2Cap1, "capability values not equal on first ScopedKeeper") 56 57 sk2Cap2, ok := newSk2.GetCapability(deliverCtx, "ica") 58 suite.Require().True(ok, "could not get second capability after genesis on second ScopedKeeper") 59 suite.Require().Equal(*cap2, *sk2Cap2, "capability values not equal on second ScopedKeeper") 60 }