diff --git a/crypto/keyring/keyring.go b/crypto/keyring/keyring.go index ef1cec74fd..7cd3bd3107 100644 --- a/crypto/keyring/keyring.go +++ b/crypto/keyring/keyring.go @@ -482,11 +482,11 @@ func (ks keystore) Delete(uid string) error { func (ks keystore) KeyByAddress(address sdk.Address) (*Record, error) { ik, err := ks.db.Get(addrHexKeyAsString(address)) if err != nil { - return nil, wrapKeyNotFound(err, fmt.Sprint("key with address ", address.String(), "not found")) + return nil, wrapKeyNotFound(err, fmt.Sprintf("key with address %s not found", address.String())) } if len(ik.Data) == 0 { - return nil, wrapKeyNotFound(err, fmt.Sprint("key with address ", address.String(), "not found")) + return nil, wrapKeyNotFound(err, fmt.Sprintf("key with address %s not found", address.String())) } return ks.Key(string(ik.Data)) diff --git a/x/group/client/cli/tx.go b/x/group/client/cli/tx.go index 3f01be2f73..3a3602f874 100644 --- a/x/group/client/cli/tx.go +++ b/x/group/client/cli/tx.go @@ -580,7 +580,7 @@ Example: }`, version.AppName), Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { - prop, err := parseCLIProposal(args[0]) + prop, err := getCLIProposal(args[0]) if err != nil { return err } diff --git a/x/group/client/cli/util.go b/x/group/client/cli/util.go index 2c187bdd70..e7ac279985 100644 --- a/x/group/client/cli/util.go +++ b/x/group/client/cli/util.go @@ -42,23 +42,25 @@ func execFromString(execStr string) group.Exec { // CLIProposal defines a Msg-based group proposal for CLI purposes. type CLIProposal struct { - GroupPolicyAddress string + GroupPolicyAddress string `json:"group_policy_address"` // Messages defines an array of sdk.Msgs proto-JSON-encoded as Anys. - Messages []json.RawMessage - Metadata string - Proposers []string + Messages []json.RawMessage `json:"messages"` + Metadata string `json:"metadata"` + Proposers []string `json:"proposers"` } -func parseCLIProposal(path string) (CLIProposal, error) { - var p CLIProposal - +func getCLIProposal(path string) (CLIProposal, error) { contents, err := os.ReadFile(path) if err != nil { return CLIProposal{}, err } - err = json.Unmarshal(contents, &p) - if err != nil { + return parseCLIProposal(contents) +} + +func parseCLIProposal(contents []byte) (CLIProposal, error) { + var p CLIProposal + if err := json.Unmarshal(contents, &p); err != nil { return CLIProposal{}, err } diff --git a/x/group/client/cli/util_test.go b/x/group/client/cli/util_test.go new file mode 100644 index 0000000000..8d0b0d1994 --- /dev/null +++ b/x/group/client/cli/util_test.go @@ -0,0 +1,30 @@ +package cli + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func Test_ParseCLIProposal(t *testing.T) { + data := []byte(`{ + "group_policy_address": "cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf", + "messages": [ + { + "@type": "/cosmos.bank.v1beta1.MsgSend", + "from_address": "cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf", + "to_address": "cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf", + "amount":[{"denom": "stake","amount": "10"}] + } + ], + "metadata": "4pIMOgIGx1vZGU=", + "proposers": ["cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf"] + }`) + + result, err := parseCLIProposal(data) + require.NoError(t, err) + require.Equal(t, result.GroupPolicyAddress, "cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf") + require.NotEmpty(t, result.Metadata) + require.Equal(t, result.Metadata, "4pIMOgIGx1vZGU=") + require.Equal(t, result.Proposers, []string{"cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf"}) +}