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  }