github.com/Finschia/finschia-sdk@v0.49.1/x/fbridge/testutil/setup.go (about) 1 package testutil 2 3 import ( 4 "testing" 5 6 "github.com/Finschia/ostracon/libs/log" 7 "github.com/golang/mock/gomock" 8 "github.com/stretchr/testify/assert" 9 tmproto "github.com/tendermint/tendermint/proto/tendermint/types" 10 dbm "github.com/tendermint/tm-db" 11 12 "github.com/Finschia/finschia-sdk/client" 13 "github.com/Finschia/finschia-sdk/codec" 14 codectypes "github.com/Finschia/finschia-sdk/codec/types" 15 "github.com/Finschia/finschia-sdk/crypto/keys/secp256k1" 16 "github.com/Finschia/finschia-sdk/std" 17 "github.com/Finschia/finschia-sdk/store" 18 storetypes "github.com/Finschia/finschia-sdk/store/types" 19 sdk "github.com/Finschia/finschia-sdk/types" 20 "github.com/Finschia/finschia-sdk/x/auth/tx" 21 authtypes "github.com/Finschia/finschia-sdk/x/auth/types" 22 "github.com/Finschia/finschia-sdk/x/fbridge/types" 23 ) 24 25 func DefaultContextWithDB(tb testing.TB, key, mkey, tkey storetypes.StoreKey) sdk.Context { 26 tb.Helper() 27 db := dbm.NewMemDB() 28 cms := store.NewCommitMultiStore(db) 29 cms.MountStoreWithDB(key, storetypes.StoreTypeIAVL, db) 30 cms.MountStoreWithDB(mkey, storetypes.StoreTypeMemory, db) 31 cms.MountStoreWithDB(tkey, storetypes.StoreTypeTransient, db) 32 err := cms.LoadLatestVersion() 33 assert.NoError(tb, err) 34 35 ctx := sdk.NewContext(cms, tmproto.Header{}, false, log.NewNopLogger()) 36 37 return ctx 38 } 39 40 type TestEncodingConfig struct { 41 InterfaceRegistry codectypes.InterfaceRegistry 42 Codec codec.Codec 43 TxConfig client.TxConfig 44 Amino *codec.LegacyAmino 45 } 46 47 func MakeTestEncodingConfig() TestEncodingConfig { 48 cdc := codec.NewLegacyAmino() 49 interfaceRegistry := codectypes.NewInterfaceRegistry() 50 marshaler := codec.NewProtoCodec(interfaceRegistry) 51 52 encCfg := TestEncodingConfig{ 53 InterfaceRegistry: interfaceRegistry, 54 Codec: marshaler, 55 TxConfig: tx.NewTxConfig(marshaler, tx.DefaultSignModes), 56 Amino: cdc, 57 } 58 59 std.RegisterLegacyAminoCodec(encCfg.Amino) 60 std.RegisterInterfaces(encCfg.InterfaceRegistry) 61 types.RegisterLegacyAminoCodec(encCfg.Amino) 62 types.RegisterInterfaces(encCfg.InterfaceRegistry) 63 return encCfg 64 } 65 66 func PrepareFbridgeTest(tb testing.TB, n int) (*sdk.KVStoreKey, *sdk.MemoryStoreKey, sdk.Context, TestEncodingConfig, *MockAccountKeeper, *MockBankKeeper, []sdk.AccAddress) { 67 tb.Helper() 68 69 ctrl := gomock.NewController(tb) 70 key := storetypes.NewKVStoreKey(types.StoreKey) 71 memKey := storetypes.NewMemoryStoreKey(types.MemStoreKey) 72 ctx := DefaultContextWithDB(tb, key, memKey, sdk.NewTransientStoreKey("transient_test")) 73 encCfg := MakeTestEncodingConfig() 74 75 authKeeper := NewMockAccountKeeper(ctrl) 76 authKeeper.EXPECT().GetModuleAddress(types.ModuleName).Return(authtypes.NewEmptyModuleAccount("fbridge").GetAddress()).AnyTimes() 77 bankKeeper := NewMockBankKeeper(ctrl) 78 79 addrs := make([]sdk.AccAddress, n) 80 for i := 0; i < n; i++ { 81 addrs[i] = sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address()) 82 } 83 84 return key, memKey, ctx, encCfg, authKeeper, bankKeeper, addrs 85 }