github.com/Finschia/finschia-sdk@v0.48.1/simapp/simd/cmd/genaccounts_test.go (about) 1 package cmd_test 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 8 "github.com/spf13/viper" 9 "github.com/stretchr/testify/require" 10 11 "github.com/Finschia/ostracon/libs/log" 12 13 "github.com/Finschia/finschia-sdk/client" 14 "github.com/Finschia/finschia-sdk/client/flags" 15 "github.com/Finschia/finschia-sdk/crypto/hd" 16 "github.com/Finschia/finschia-sdk/crypto/keyring" 17 "github.com/Finschia/finschia-sdk/server" 18 "github.com/Finschia/finschia-sdk/simapp" 19 simcmd "github.com/Finschia/finschia-sdk/simapp/simd/cmd" 20 "github.com/Finschia/finschia-sdk/testutil/testdata" 21 sdk "github.com/Finschia/finschia-sdk/types" 22 "github.com/Finschia/finschia-sdk/types/module" 23 "github.com/Finschia/finschia-sdk/x/genutil" 24 genutiltest "github.com/Finschia/finschia-sdk/x/genutil/client/testutil" 25 ) 26 27 var testMbm = module.NewBasicManager(genutil.AppModuleBasic{}) 28 29 func TestAddGenesisAccountCmd(t *testing.T) { 30 _, _, addr1 := testdata.KeyTestPubAddr() 31 tests := []struct { 32 name string 33 addr string 34 denom string 35 withKeyring bool 36 expectErr bool 37 }{ 38 { 39 name: "invalid address", 40 addr: "", 41 denom: "1000atom", 42 withKeyring: false, 43 expectErr: true, 44 }, 45 { 46 name: "valid address", 47 addr: addr1.String(), 48 denom: "1000atom", 49 withKeyring: false, 50 expectErr: false, 51 }, 52 { 53 name: "multiple denoms", 54 addr: addr1.String(), 55 denom: "1000atom, 2000stake", 56 withKeyring: false, 57 expectErr: false, 58 }, 59 { 60 name: "with keyring", 61 addr: "ser", 62 denom: "1000atom", 63 withKeyring: true, 64 expectErr: false, 65 }, 66 } 67 68 for _, tc := range tests { 69 tc := tc 70 t.Run(tc.name, func(t *testing.T) { 71 home := t.TempDir() 72 logger := log.NewNopLogger() 73 cfg, err := genutiltest.CreateDefaultTendermintConfig(home) 74 require.NoError(t, err) 75 76 appCodec := simapp.MakeTestEncodingConfig().Marshaler 77 err = genutiltest.ExecInitCmd(testMbm, home, appCodec) 78 require.NoError(t, err) 79 80 serverCtx := server.NewContext(viper.New(), cfg, logger) 81 clientCtx := client.Context{}.WithCodec(appCodec).WithHomeDir(home) 82 83 if tc.withKeyring { 84 path := hd.CreateHDPath(118, 0, 0).String() 85 kr, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendMemory, home, nil) 86 require.NoError(t, err) 87 _, _, err = kr.NewMnemonic(tc.addr, keyring.English, path, keyring.DefaultBIP39Passphrase, hd.Secp256k1) 88 require.NoError(t, err) 89 clientCtx = clientCtx.WithKeyring(kr) 90 } 91 92 ctx := context.Background() 93 ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) 94 ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx) 95 96 cmd := simcmd.AddGenesisAccountCmd(home) 97 cmd.SetArgs([]string{ 98 tc.addr, 99 tc.denom, 100 fmt.Sprintf("--%s=home", flags.FlagHome), 101 }) 102 103 if tc.expectErr { 104 require.Error(t, cmd.ExecuteContext(ctx)) 105 } else { 106 require.NoError(t, cmd.ExecuteContext(ctx)) 107 } 108 }) 109 } 110 }