From 34e22fbcb8859b18381a6c9e6704227c7ac5d5d3 Mon Sep 17 00:00:00 2001 From: Jonathan Gimeno Date: Wed, 11 Mar 2020 17:45:02 +0100 Subject: [PATCH 1/7] refactor parsing to use unified version --- x/gov/client/cli/parse.go | 3 ++- x/params/client/cli/tx.go | 7 +++++- x/params/client/cli/tx_test.go | 45 ++++++++++++++++++++++++++++++++++ x/params/client/utils/utils.go | 2 +- 4 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 x/params/client/cli/tx_test.go diff --git a/x/gov/client/cli/parse.go b/x/gov/client/cli/parse.go index dd9415f18d19..e29840db7463 100644 --- a/x/gov/client/cli/parse.go +++ b/x/gov/client/cli/parse.go @@ -24,7 +24,8 @@ func parseSubmitProposalFlags() (*proposal, error) { for _, flag := range ProposalFlags { if viper.GetString(flag) != "" { - return nil, fmt.Errorf("--%s flag provided alongside --proposal, which is a noop", flag) + return nil, fmt.Errorf( + "--%s flag provided alongside --proposal, which is a noop", flag) } } diff --git a/x/params/client/cli/tx.go b/x/params/client/cli/tx.go index 67a890a51e96..6f5624083539 100644 --- a/x/params/client/cli/tx.go +++ b/x/params/client/cli/tx.go @@ -77,7 +77,12 @@ Where proposal.json contains: from := cliCtx.GetFromAddress() content := paramproposal.NewParameterChangeProposal(proposal.Title, proposal.Description, proposal.Changes.ToParamChanges()) - msg := govtypes.NewMsgSubmitProposal(content, proposal.Deposit, from) + deposit, err := sdk.ParseCoins(proposal.Deposit) + if err != nil { + return err + } + + msg := govtypes.NewMsgSubmitProposal(content, deposit, from) if err := msg.ValidateBasic(); err != nil { return err } diff --git a/x/params/client/cli/tx_test.go b/x/params/client/cli/tx_test.go new file mode 100644 index 000000000000..0f3cb5c499a3 --- /dev/null +++ b/x/params/client/cli/tx_test.go @@ -0,0 +1,45 @@ +package cli + +import ( + "io/ioutil" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/x/params/client/utils" +) + +func TestParseProposal(t *testing.T) { + cdc := codec.New() + okJSON, err := ioutil.TempFile("", "proposal") + require.Nil(t, err, "unexpected error") + okJSON.WriteString(` +{ + "title": "Staking Param Change", + "description": "Update max validators", + "changes": [ + { + "subspace": "staking", + "key": "MaxValidators", + "value": 1 + } + ], + "deposit": "1000stake" +} +`) + + proposal, err := utils.ParseParamChangeProposalJSON(cdc, okJSON.Name()) + require.NoError(t, err) + + require.Equal(t, "Staking Param Change", proposal.Title) + require.Equal(t, "Update max validators", proposal.Description) + require.Equal(t, "1000stake", proposal.Deposit) + require.Equal(t, utils.ParamChangesJSON{ + { + Subspace: "staking", + Key: "MaxValidators", + Value: []byte{0x31}, + }, + }, proposal.Changes) +} diff --git a/x/params/client/utils/utils.go b/x/params/client/utils/utils.go index 231c5e2b0605..2cac0b21a839 100644 --- a/x/params/client/utils/utils.go +++ b/x/params/client/utils/utils.go @@ -29,7 +29,7 @@ type ( Title string `json:"title" yaml:"title"` Description string `json:"description" yaml:"description"` Changes ParamChangesJSON `json:"changes" yaml:"changes"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` + Deposit string `json:"deposit" yaml:"deposit"` } // ParamChangeProposalReq defines a parameter change proposal request body. From 36554e73e22206dbee0c7f5f031b6319c4a669df Mon Sep 17 00:00:00 2001 From: Jonathan Gimeno Date: Wed, 11 Mar 2020 18:03:47 +0100 Subject: [PATCH 2/7] refactor cli tx for distribution param change request --- x/distribution/client/cli/tx.go | 13 ++++++++++-- x/distribution/client/cli/tx_test.go | 30 ++++++++++++++++++++++++++++ x/distribution/client/cli/utils.go | 4 ++-- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/x/distribution/client/cli/tx.go b/x/distribution/client/cli/tx.go index a033fd28dc1c..12baebcf07fe 100644 --- a/x/distribution/client/cli/tx.go +++ b/x/distribution/client/cli/tx.go @@ -248,9 +248,18 @@ Where proposal.json contains: } from := cliCtx.GetFromAddress() - content := types.NewCommunityPoolSpendProposal(proposal.Title, proposal.Description, proposal.Recipient, proposal.Amount) - msg := gov.NewMsgSubmitProposal(content, proposal.Deposit, from) + amount, err := sdk.ParseCoins(proposal.Amount) + if err != nil { + return err + } + content := types.NewCommunityPoolSpendProposal(proposal.Title, proposal.Description, proposal.Recipient, amount) + + deposit, err := sdk.ParseCoins(proposal.Deposit) + if err != nil { + return err + } + msg := gov.NewMsgSubmitProposal(content, deposit, from) if err := msg.ValidateBasic(); err != nil { return err } diff --git a/x/distribution/client/cli/tx_test.go b/x/distribution/client/cli/tx_test.go index 860b31fa634c..d8f8b3921c1b 100644 --- a/x/distribution/client/cli/tx_test.go +++ b/x/distribution/client/cli/tx_test.go @@ -1,8 +1,11 @@ package cli import ( + "io/ioutil" "testing" + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/assert" "github.com/tendermint/tendermint/crypto/secp256k1" @@ -77,3 +80,30 @@ func Test_splitAndCall_Splitting(t *testing.T) { assert.NoError(t, err, "") assert.Equal(t, 3, callCount) } + +func TestParseProposal(t *testing.T) { + cdc := codec.New() + okJSON, err := ioutil.TempFile("", "proposal") + require.Nil(t, err, "unexpected error") + okJSON.WriteString(` +{ + "title": "Community Pool Spend", + "description": "Pay me some Atoms!", + "recipient": "cosmos1s5afhd6gxevu37mkqcvvsj8qeylhn0rz46zdlq", + "amount": "1000stake", + "deposit": "1000stake" +} +`) + + proposal, err := ParseCommunityPoolSpendProposalJSON(cdc, okJSON.Name()) + require.NoError(t, err) + + addr, err := sdk.AccAddressFromBech32("cosmos1s5afhd6gxevu37mkqcvvsj8qeylhn0rz46zdlq") + require.NoError(t, err) + + require.Equal(t, "Community Pool Spend", proposal.Title) + require.Equal(t, "Pay me some Atoms!", proposal.Description) + require.Equal(t, addr, proposal.Recipient) + require.Equal(t, "1000stake", proposal.Deposit) + require.Equal(t, "1000stake", proposal.Amount) +} diff --git a/x/distribution/client/cli/utils.go b/x/distribution/client/cli/utils.go index 286016250228..4d4169a7fad0 100644 --- a/x/distribution/client/cli/utils.go +++ b/x/distribution/client/cli/utils.go @@ -13,8 +13,8 @@ type ( Title string `json:"title" yaml:"title"` Description string `json:"description" yaml:"description"` Recipient sdk.AccAddress `json:"recipient" yaml:"recipient"` - Amount sdk.Coins `json:"amount" yaml:"amount"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` + Amount string `json:"amount" yaml:"amount"` + Deposit string `json:"deposit" yaml:"deposit"` } ) From 382e5021b24c2dd3faeefef30959d8db7b087e8a Mon Sep 17 00:00:00 2001 From: Jonathan Gimeno Date: Wed, 11 Mar 2020 18:06:39 +0100 Subject: [PATCH 3/7] update cli documentation distribution --- x/distribution/client/cli/tx.go | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/x/distribution/client/cli/tx.go b/x/distribution/client/cli/tx.go index 12baebcf07fe..35d12391d057 100644 --- a/x/distribution/client/cli/tx.go +++ b/x/distribution/client/cli/tx.go @@ -220,18 +220,8 @@ Where proposal.json contains: "title": "Community Pool Spend", "description": "Pay me some Atoms!", "recipient": "cosmos1s5afhd6gxevu37mkqcvvsj8qeylhn0rz46zdlq", - "amount": [ - { - "denom": "stake", - "amount": "10000" - } - ], - "deposit": [ - { - "denom": "stake", - "amount": "10000" - } - ] + "amount": "1000stake", + "deposit": "1000stake" } `, version.ClientName, From 1c7ec9e3391b0f02e1984a9628e76d25f7238446 Mon Sep 17 00:00:00 2001 From: Jonathan Gimeno Date: Wed, 11 Mar 2020 18:07:49 +0100 Subject: [PATCH 4/7] update params cli msg --- x/params/client/cli/tx.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/x/params/client/cli/tx.go b/x/params/client/cli/tx.go index 6f5624083539..969d9052ea56 100644 --- a/x/params/client/cli/tx.go +++ b/x/params/client/cli/tx.go @@ -53,12 +53,7 @@ Where proposal.json contains: "value": 105 } ], - "deposit": [ - { - "denom": "stake", - "amount": "10000" - } - ] + "deposit": "1000stake" } `, version.ClientName, From 520b397dc2157bd5dd29d97357d1c4ffb1c383eb Mon Sep 17 00:00:00 2001 From: Jonathan Gimeno Date: Wed, 11 Mar 2020 18:12:10 +0100 Subject: [PATCH 5/7] update cli --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad2a9a102562..c00a127ee293 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ balances or a single balance by denom when the `denom` query parameter is presen * (client) [\#5640](https://github.com/cosmos/cosmos-sdk/pull/5640) The rest server endpoint `/swagger-ui/` is replaced by ´/´. * (x/auth) [\#5702](https://github.com/cosmos/cosmos-sdk/pull/5702) The `x/auth` querier route has changed from `"acc"` to `"auth"`. * (store/types) [\#5730](https://github.com/cosmos/cosmos-sdk/pull/5730) store.types.Cp() is removed in favour of types.CopyBytes(). +* (client) [\#5640](https://github.com/cosmos/cosmos-sdk/issues/5783) Unify all coins representations on json client requests. ### API Breaking Changes From 810a37802c66f15ba28be0ddfb8a99ce3d55cccc Mon Sep 17 00:00:00 2001 From: Jonathan Gimeno Date: Thu, 12 Mar 2020 14:17:16 +0100 Subject: [PATCH 6/7] Update CHANGELOG.md Co-Authored-By: Alexander Bezobchuk --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e659229a266..c5c2d3ff6d58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,7 +44,7 @@ balances or a single balance by denom when the `denom` query parameter is presen * (client) [\#5640](https://github.com/cosmos/cosmos-sdk/pull/5640) The rest server endpoint `/swagger-ui/` is replaced by ´/´. * (x/auth) [\#5702](https://github.com/cosmos/cosmos-sdk/pull/5702) The `x/auth` querier route has changed from `"acc"` to `"auth"`. * (store/types) [\#5730](https://github.com/cosmos/cosmos-sdk/pull/5730) store.types.Cp() is removed in favour of types.CopyBytes(). -* (client) [\#5640](https://github.com/cosmos/cosmos-sdk/issues/5783) Unify all coins representations on json client requests. +* (client) [\#5640](https://github.com/cosmos/cosmos-sdk/issues/5783) Unify all coins representations on JSON client requests for governance proposals. ### API Breaking Changes From ee0e0aeaff8b47edfaad8b4ad7df61f202ffe802 Mon Sep 17 00:00:00 2001 From: Jonathan Gimeno Date: Thu, 12 Mar 2020 14:27:19 +0100 Subject: [PATCH 7/7] undo change --- x/gov/client/cli/parse.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x/gov/client/cli/parse.go b/x/gov/client/cli/parse.go index e29840db7463..dd9415f18d19 100644 --- a/x/gov/client/cli/parse.go +++ b/x/gov/client/cli/parse.go @@ -24,8 +24,7 @@ func parseSubmitProposalFlags() (*proposal, error) { for _, flag := range ProposalFlags { if viper.GetString(flag) != "" { - return nil, fmt.Errorf( - "--%s flag provided alongside --proposal, which is a noop", flag) + return nil, fmt.Errorf("--%s flag provided alongside --proposal, which is a noop", flag) } }