Fix add-genesis-account in simd (#7069)
* Update genaccounts to use encoding/json * Fix add genesis accounts * Add test for genaccounts * Code cleanup
This commit is contained in:
parent
d2de7a0441
commit
24bc89183e
|
@ -2,6 +2,7 @@ package cmd
|
|||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
|
@ -140,7 +141,7 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa
|
|||
}
|
||||
authGenState.Accounts = genAccs
|
||||
|
||||
authGenStateBz, err := cdc.MarshalJSON(authGenState)
|
||||
authGenStateBz, err := cdc.MarshalJSON(&authGenState)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to marshal auth genesis state: %w", err)
|
||||
}
|
||||
|
@ -158,7 +159,7 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa
|
|||
|
||||
appState[banktypes.ModuleName] = bankGenStateBz
|
||||
|
||||
appStateJSON, err := cdc.MarshalJSON(appState)
|
||||
appStateJSON, err := json.Marshal(appState)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to marshal application genesis state: %w", err)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
package cmd_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/tendermint/tendermint/libs/log"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/server"
|
||||
"github.com/cosmos/cosmos-sdk/simapp"
|
||||
simcmd "github.com/cosmos/cosmos-sdk/simapp/simd/cmd"
|
||||
"github.com/cosmos/cosmos-sdk/testutil"
|
||||
"github.com/cosmos/cosmos-sdk/testutil/testdata"
|
||||
"github.com/cosmos/cosmos-sdk/types/module"
|
||||
"github.com/cosmos/cosmos-sdk/x/genutil"
|
||||
genutiltest "github.com/cosmos/cosmos-sdk/x/genutil/client/testutil"
|
||||
)
|
||||
|
||||
var testMbm = module.NewBasicManager(genutil.AppModuleBasic{})
|
||||
|
||||
func TestAddGenesisAccountCmd(t *testing.T) {
|
||||
_, _, addr1 := testdata.KeyTestPubAddr()
|
||||
tests := []struct {
|
||||
name string
|
||||
addr string
|
||||
denom string
|
||||
expectErr bool
|
||||
}{
|
||||
{
|
||||
name: "invalid address",
|
||||
addr: "",
|
||||
denom: "1000atom",
|
||||
expectErr: true,
|
||||
},
|
||||
{
|
||||
name: "valid address",
|
||||
addr: addr1.String(),
|
||||
denom: "1000atom",
|
||||
expectErr: false,
|
||||
},
|
||||
{
|
||||
name: "multiple denoms",
|
||||
addr: addr1.String(),
|
||||
denom: "1000atom, 2000stake",
|
||||
expectErr: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
home, cleanup := testutil.NewTestCaseDir(t)
|
||||
defer cleanup()
|
||||
|
||||
logger := log.NewNopLogger()
|
||||
cfg, err := genutiltest.CreateDefaultTendermintConfig(home)
|
||||
require.NoError(t, err)
|
||||
|
||||
appCodec, _ := simapp.MakeCodecs()
|
||||
err = genutiltest.ExecInitCmd(testMbm, home, appCodec)
|
||||
require.NoError(t, err)
|
||||
|
||||
serverCtx := server.NewContext(viper.New(), cfg, logger)
|
||||
clientCtx := client.Context{}.WithJSONMarshaler(appCodec).WithHomeDir(home)
|
||||
|
||||
ctx := context.Background()
|
||||
ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx)
|
||||
ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx)
|
||||
|
||||
cmd := simcmd.AddGenesisAccountCmd(home)
|
||||
cmd.SetArgs([]string{
|
||||
tc.addr,
|
||||
tc.denom,
|
||||
fmt.Sprintf("--%s=home", flags.FlagHome)})
|
||||
|
||||
if tc.expectErr {
|
||||
require.Error(t, cmd.ExecuteContext(ctx))
|
||||
} else {
|
||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package cli
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
@ -17,6 +17,7 @@ import (
|
|||
"github.com/cosmos/cosmos-sdk/testutil/network"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
|
||||
"github.com/cosmos/cosmos-sdk/x/staking/types"
|
||||
)
|
||||
|
||||
|
@ -51,7 +52,7 @@ func (s *IntegrationTestSuite) TestGenTxCmd() {
|
|||
dir, clean := testutil.NewTestCaseDir(s.T())
|
||||
defer clean()
|
||||
|
||||
cmd := GenTxCmd(
|
||||
cmd := cli.GenTxCmd(
|
||||
simapp.ModuleBasics,
|
||||
val.ClientCtx.TxConfig, banktypes.GenesisBalancesIterator{}, val.ClientCtx.HomeDir)
|
||||
|
||||
|
@ -63,7 +64,7 @@ func (s *IntegrationTestSuite) TestGenTxCmd() {
|
|||
|
||||
genTxFile := filepath.Join(dir, "myTx")
|
||||
cmd.SetArgs([]string{
|
||||
fmt.Sprintf("--%s=%s", flagChainID, s.network.Config.ChainID),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagChainID, s.network.Config.ChainID),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagOutputDocument, genTxFile),
|
||||
val.Moniker,
|
||||
})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package cli
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
|
@ -12,7 +12,6 @@ import (
|
|||
"github.com/spf13/viper"
|
||||
"github.com/stretchr/testify/require"
|
||||
abci_server "github.com/tendermint/tendermint/abci/server"
|
||||
tmcfg "github.com/tendermint/tendermint/config"
|
||||
"github.com/tendermint/tendermint/libs/cli"
|
||||
"github.com/tendermint/tendermint/libs/log"
|
||||
|
||||
|
@ -25,22 +24,12 @@ import (
|
|||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/types/module"
|
||||
"github.com/cosmos/cosmos-sdk/x/genutil"
|
||||
genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
|
||||
genutiltest "github.com/cosmos/cosmos-sdk/x/genutil/client/testutil"
|
||||
)
|
||||
|
||||
var testMbm = module.NewBasicManager(genutil.AppModuleBasic{})
|
||||
|
||||
func createDefaultTendermintConfig(rootDir string) (*tmcfg.Config, error) {
|
||||
conf := tmcfg.DefaultConfig()
|
||||
conf.SetRoot(rootDir)
|
||||
tmcfg.EnsureRoot(rootDir)
|
||||
|
||||
if err := conf.ValidateBasic(); err != nil {
|
||||
return nil, fmt.Errorf("error in config file: %v", err)
|
||||
}
|
||||
|
||||
return conf, nil
|
||||
}
|
||||
|
||||
func TestInitCmd(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
|
@ -68,7 +57,7 @@ func TestInitCmd(t *testing.T) {
|
|||
defer cleanup()
|
||||
|
||||
logger := log.NewNopLogger()
|
||||
cfg, err := createDefaultTendermintConfig(home)
|
||||
cfg, err := genutiltest.CreateDefaultTendermintConfig(home)
|
||||
require.NoError(t, err)
|
||||
|
||||
serverCtx := server.NewContext(viper.New(), cfg, logger)
|
||||
|
@ -78,7 +67,7 @@ func TestInitCmd(t *testing.T) {
|
|||
ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx)
|
||||
ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx)
|
||||
|
||||
cmd := InitCmd(testMbm, home)
|
||||
cmd := genutilcli.InitCmd(testMbm, home)
|
||||
cmd.SetArgs(
|
||||
tt.flags(home),
|
||||
)
|
||||
|
@ -106,7 +95,7 @@ func TestEmptyState(t *testing.T) {
|
|||
t.Cleanup(cleanup)
|
||||
|
||||
logger := log.NewNopLogger()
|
||||
cfg, err := createDefaultTendermintConfig(home)
|
||||
cfg, err := genutiltest.CreateDefaultTendermintConfig(home)
|
||||
require.NoError(t, err)
|
||||
|
||||
serverCtx := server.NewContext(viper.New(), cfg, logger)
|
||||
|
@ -116,7 +105,7 @@ func TestEmptyState(t *testing.T) {
|
|||
ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx)
|
||||
ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx)
|
||||
|
||||
cmd := InitCmd(testMbm, home)
|
||||
cmd := genutilcli.InitCmd(testMbm, home)
|
||||
cmd.SetArgs([]string{"appnode-test", fmt.Sprintf("--%s=%s", cli.HomeFlag, home)})
|
||||
|
||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
||||
|
@ -153,21 +142,9 @@ func TestStartStandAlone(t *testing.T) {
|
|||
t.Cleanup(setupClientHome(t))
|
||||
|
||||
logger := log.NewNopLogger()
|
||||
cfg, err := createDefaultTendermintConfig(home)
|
||||
err := genutiltest.ExecInitCmd(testMbm, home, makeCodec())
|
||||
require.NoError(t, err)
|
||||
|
||||
serverCtx := server.NewContext(viper.New(), cfg, logger)
|
||||
clientCtx := client.Context{}.WithJSONMarshaler(makeCodec()).WithHomeDir(home)
|
||||
|
||||
ctx := context.Background()
|
||||
ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx)
|
||||
ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx)
|
||||
|
||||
cmd := InitCmd(testMbm, home)
|
||||
cmd.SetArgs([]string{"appnode-test"})
|
||||
|
||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
||||
|
||||
app, err := mock.NewApp(home, logger)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
@ -191,7 +168,7 @@ func TestStartStandAlone(t *testing.T) {
|
|||
|
||||
func TestInitNodeValidatorFiles(t *testing.T) {
|
||||
home, cleanup := testutil.NewTestCaseDir(t)
|
||||
cfg, err := createDefaultTendermintConfig(home)
|
||||
cfg, err := genutiltest.CreateDefaultTendermintConfig(home)
|
||||
t.Cleanup(cleanup)
|
||||
nodeID, valPubKey, err := genutil.InitializeNodeValidatorFiles(cfg)
|
||||
require.Nil(t, err)
|
||||
|
|
|
@ -11,6 +11,7 @@ import (
|
|||
tmtypes "github.com/tendermint/tendermint/types"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/version"
|
||||
v036 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v0_36"
|
||||
|
@ -20,10 +21,7 @@ import (
|
|||
"github.com/cosmos/cosmos-sdk/x/genutil/types"
|
||||
)
|
||||
|
||||
const (
|
||||
flagGenesisTime = "genesis-time"
|
||||
flagChainID = "chain-id"
|
||||
)
|
||||
const flagGenesisTime = "genesis-time"
|
||||
|
||||
// Allow applications to extend and modify the migration process.
|
||||
//
|
||||
|
@ -111,7 +109,7 @@ $ %s migrate v0.36 /path/to/genesis.json --chain-id=cosmoshub-3 --genesis-time=2
|
|||
genDoc.GenesisTime = t
|
||||
}
|
||||
|
||||
chainID, _ := cmd.Flags().GetString(flagChainID)
|
||||
chainID, _ := cmd.Flags().GetString(flags.FlagChainID)
|
||||
if chainID != "" {
|
||||
genDoc.ChainID = chainID
|
||||
}
|
||||
|
@ -132,7 +130,7 @@ $ %s migrate v0.36 /path/to/genesis.json --chain-id=cosmoshub-3 --genesis-time=2
|
|||
}
|
||||
|
||||
cmd.Flags().String(flagGenesisTime, "", "override genesis_time with this flag")
|
||||
cmd.Flags().String(flagChainID, "", "override chain_id with this flag")
|
||||
cmd.Flags().String(flags.FlagChainID, "", "override chain_id with this flag")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package cli
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
@ -10,11 +10,12 @@ import (
|
|||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/testutil"
|
||||
"github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
|
||||
)
|
||||
|
||||
func TestGetMigrationCallback(t *testing.T) {
|
||||
for _, version := range GetMigrationVersions() {
|
||||
require.NotNil(t, GetMigrationCallback(version))
|
||||
for _, version := range cli.GetMigrationVersions() {
|
||||
require.NotNil(t, cli.GetMigrationCallback(version))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,7 +28,7 @@ func TestMigrateGenesis(t *testing.T) {
|
|||
genesisPath := path.Join(home, "genesis.json")
|
||||
target := "v0.36"
|
||||
|
||||
cmd := MigrateGenesisCmd()
|
||||
cmd := cli.MigrateGenesisCmd()
|
||||
_ = testutil.ApplyMockIODiscardOutErr(cmd)
|
||||
|
||||
clientCtx := client.Context{}.WithJSONMarshaler(cdc)
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
package testutil
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
tmcfg "github.com/tendermint/tendermint/config"
|
||||
"github.com/tendermint/tendermint/libs/cli"
|
||||
"github.com/tendermint/tendermint/libs/log"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
"github.com/cosmos/cosmos-sdk/server"
|
||||
"github.com/cosmos/cosmos-sdk/testutil"
|
||||
"github.com/cosmos/cosmos-sdk/types/module"
|
||||
genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
|
||||
)
|
||||
|
||||
func ExecInitCmd(testMbm module.BasicManager, home string, cdc codec.JSONMarshaler) error {
|
||||
logger := log.NewNopLogger()
|
||||
cfg, err := CreateDefaultTendermintConfig(home)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cmd := genutilcli.InitCmd(testMbm, home)
|
||||
serverCtx := server.NewContext(viper.New(), cfg, logger)
|
||||
clientCtx := client.Context{}.WithJSONMarshaler(cdc).WithHomeDir(home)
|
||||
|
||||
_, out := testutil.ApplyMockIO(cmd)
|
||||
clientCtx = clientCtx.WithOutput(out)
|
||||
|
||||
ctx := context.Background()
|
||||
ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx)
|
||||
ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx)
|
||||
|
||||
cmd.SetArgs([]string{"appnode-test", fmt.Sprintf("--%s=%s", cli.HomeFlag, home)})
|
||||
|
||||
return cmd.ExecuteContext(ctx)
|
||||
}
|
||||
|
||||
func CreateDefaultTendermintConfig(rootDir string) (*tmcfg.Config, error) {
|
||||
conf := tmcfg.DefaultConfig()
|
||||
conf.SetRoot(rootDir)
|
||||
tmcfg.EnsureRoot(rootDir)
|
||||
|
||||
if err := conf.ValidateBasic(); err != nil {
|
||||
return nil, fmt.Errorf("error in config file: %v", err)
|
||||
}
|
||||
|
||||
return conf, nil
|
||||
}
|
Loading…
Reference in New Issue