github.com/Finschia/finschia-sdk@v0.49.1/x/capability/genesis_test.go (about)

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