github.com/Finschia/finschia-sdk@v0.49.1/x/bankplus/keeper/inactive_test.go (about) 1 package keeper 2 3 import ( 4 "crypto/rand" 5 "testing" 6 7 "github.com/Finschia/ostracon/libs/log" 8 "github.com/stretchr/testify/require" 9 tmproto "github.com/tendermint/tendermint/proto/tendermint/types" 10 dbm "github.com/tendermint/tm-db" 11 12 "github.com/Finschia/finschia-sdk/codec" 13 codectypes "github.com/Finschia/finschia-sdk/codec/types" 14 "github.com/Finschia/finschia-sdk/store" 15 sdk "github.com/Finschia/finschia-sdk/types" 16 accountkeeper "github.com/Finschia/finschia-sdk/x/auth/keeper" 17 accounttypes "github.com/Finschia/finschia-sdk/x/auth/types" 18 banktypes "github.com/Finschia/finschia-sdk/x/bank/types" 19 paramtypes "github.com/Finschia/finschia-sdk/x/params/types" 20 ) 21 22 func genAddress() sdk.AccAddress { 23 b := make([]byte, 20) 24 _, err := rand.Read(b) 25 if err != nil { 26 panic(err) 27 } 28 return b 29 } 30 31 func setupKeeper(storeKey *sdk.KVStoreKey) BaseKeeper { 32 registry := codectypes.NewInterfaceRegistry() 33 cdc := codec.NewProtoCodec(registry) 34 amino := codec.NewLegacyAmino() 35 testTransientStoreKey := sdk.NewTransientStoreKey("test") 36 37 accountStoreKey := sdk.NewKVStoreKey(accounttypes.StoreKey) 38 accountSubspace := paramtypes.NewSubspace(cdc, amino, accountStoreKey, testTransientStoreKey, accounttypes.ModuleName) 39 accountKeeper := accountkeeper.NewAccountKeeper(cdc, accountStoreKey, accountSubspace, accounttypes.ProtoBaseAccount, nil) 40 41 bankSubspace := paramtypes.NewSubspace(cdc, amino, storeKey, testTransientStoreKey, banktypes.StoreKey) 42 return NewBaseKeeper(cdc, storeKey, accountKeeper, bankSubspace, nil, false) 43 } 44 45 func setupContext(t *testing.T, storeKey *sdk.KVStoreKey) sdk.Context { 46 t.Helper() 47 db := dbm.NewMemDB() 48 stateStore := store.NewCommitMultiStore(db) 49 stateStore.MountStoreWithDB(storeKey, sdk.StoreTypeIAVL, db) 50 require.NoError(t, stateStore.LoadLatestVersion()) 51 52 return sdk.NewContext(stateStore, tmproto.Header{}, false, log.NewNopLogger()) 53 } 54 55 func TestInactiveAddr(t *testing.T) { 56 storeKey := sdk.NewKVStoreKey(banktypes.StoreKey) 57 bankKeeper := setupKeeper(storeKey) 58 ctx := setupContext(t, storeKey) 59 60 addr := genAddress() 61 62 require.Equal(t, 0, len(bankKeeper.inactiveAddrs)) 63 64 bankKeeper.addToInactiveAddr(ctx, addr) 65 require.True(t, bankKeeper.isStoredInactiveAddr(ctx, addr)) 66 67 // duplicate addition, no error expects. 68 bankKeeper.addToInactiveAddr(ctx, addr) 69 require.True(t, bankKeeper.isStoredInactiveAddr(ctx, addr)) 70 71 bankKeeper.deleteFromInactiveAddr(ctx, addr) 72 require.False(t, bankKeeper.isStoredInactiveAddr(ctx, addr)) 73 74 addr2 := genAddress() 75 require.False(t, bankKeeper.isStoredInactiveAddr(ctx, addr2)) 76 77 // expect no error 78 bankKeeper.deleteFromInactiveAddr(ctx, addr2) 79 80 // test loadAllInactiveAddrs 81 bankKeeper.addToInactiveAddr(ctx, addr) 82 bankKeeper.addToInactiveAddr(ctx, addr2) 83 require.Equal(t, 0, len(bankKeeper.inactiveAddrs)) 84 bankKeeper.loadAllInactiveAddrs(ctx) 85 require.Equal(t, 2, len(bankKeeper.inactiveAddrs)) 86 }