@@ -3,6 +3,10 @@ package keeper_test
3
3
import (
4
4
"testing"
5
5
6
+ cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
7
+ cmttime "github.com/cometbft/cometbft/types/time"
8
+ gogotypes "github.com/cosmos/gogoproto/types"
9
+ "github.com/stretchr/testify/require"
6
10
"github.com/stretchr/testify/suite"
7
11
8
12
"cosmossdk.io/core/header"
32
36
randomPermAcc = types .NewEmptyModuleAccount (randomPerm , "random" )
33
37
)
34
38
39
+ func getMaccPerms () map [string ][]string {
40
+ return map [string ][]string {
41
+ "fee_collector" : nil ,
42
+ "mint" : {"minter" },
43
+ "bonded_tokens_pool" : {"burner" , "staking" },
44
+ "not_bonded_tokens_pool" : {"burner" , "staking" },
45
+ multiPerm : {"burner" , "minter" , "staking" },
46
+ randomPerm : {"random" },
47
+ }
48
+ }
49
+
35
50
type KeeperTestSuite struct {
36
51
suite.Suite
37
52
@@ -51,20 +66,11 @@ func (suite *KeeperTestSuite) SetupTest() {
51
66
testCtx := testutil .DefaultContextWithDB (suite .T (), key , storetypes .NewTransientStoreKey ("transient_test" ))
52
67
suite .ctx = testCtx .Ctx .WithHeaderInfo (header.Info {})
53
68
54
- maccPerms := map [string ][]string {
55
- "fee_collector" : nil ,
56
- "mint" : {"minter" },
57
- "bonded_tokens_pool" : {"burner" , "staking" },
58
- "not_bonded_tokens_pool" : {"burner" , "staking" },
59
- multiPerm : {"burner" , "minter" , "staking" },
60
- randomPerm : {"random" },
61
- }
62
-
63
69
suite .accountKeeper = keeper .NewAccountKeeper (
64
70
suite .encCfg .Codec ,
65
71
storeService ,
66
72
types .ProtoBaseAccount ,
67
- maccPerms ,
73
+ getMaccPerms () ,
68
74
authcodec .NewBech32Codec ("cosmos" ),
69
75
"cosmos" ,
70
76
types .NewModuleAddress ("gov" ).String (),
@@ -215,3 +221,41 @@ func (suite *KeeperTestSuite) TestInitGenesis() {
215
221
// we expect nextNum to be 2 because we initialize fee_collector as account number 1
216
222
suite .Require ().Equal (2 , int (nextNum ))
217
223
}
224
+
225
+ func TestNextAccountNumber (t * testing.T ) {
226
+ key := storetypes .NewKVStoreKey (types .StoreKey )
227
+ storeService := runtime .NewKVStoreService (key )
228
+ testCtx := testutil .DefaultContextWithDB (t , key , storetypes .NewTransientStoreKey ("transient_test" ))
229
+ ctx := testCtx .Ctx .WithBlockHeader (cmtproto.Header {Time : cmttime .Now ()})
230
+ encCfg := moduletestutil .MakeTestEncodingConfig ()
231
+
232
+ ak := keeper .NewAccountKeeper (
233
+ encCfg .Codec ,
234
+ storeService ,
235
+ types .ProtoBaseAccount ,
236
+ getMaccPerms (),
237
+ authcodec .NewBech32Codec ("cosmos" ),
238
+ "cosmos" ,
239
+ types .NewModuleAddress ("gov" ).String (),
240
+ )
241
+
242
+ num := uint64 (10 )
243
+ val := & gogotypes.UInt64Value {
244
+ Value : num ,
245
+ }
246
+ data , err := val .Marshal ()
247
+ require .NoError (t , err )
248
+ store := storeService .OpenKVStore (ctx )
249
+ err = store .Set (types .LegacyGlobalAccountNumberKey , data )
250
+ require .NoError (t , err )
251
+
252
+ nextNum := ak .NextAccountNumber (ctx )
253
+ require .Equal (t , num , nextNum )
254
+
255
+ num = uint64 (0 )
256
+ err = ak .AccountNumber .Set (ctx , num )
257
+ require .NoError (t , err )
258
+
259
+ nextNum = ak .NextAccountNumber (ctx )
260
+ require .Equal (t , num , nextNum )
261
+ }
0 commit comments