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:
SaReN
2020-08-17 21:32:16 +00:00
committed by GitHub
parent d2de7a0441
commit 24bc89183e
7 changed files with 166 additions and 47 deletions
+3 -2
View File
@@ -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)
}
+88
View File
@@ -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))
}
})
}
}