From f8486aeca5c7b9c1e0a4a0ef09e9b45ef35a01c6 Mon Sep 17 00:00:00 2001 From: Federico Kunze Date: Fri, 12 Oct 2018 19:05:22 -0700 Subject: [PATCH 1/6] Add deposits endpoint and tests --- client/lcd/lcd_test.go | 18 +++++++++++++++++ x/gov/client/rest/rest.go | 41 +++++++++++++++++++++++++++++++++------ x/gov/queryable.go | 2 +- 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/client/lcd/lcd_test.go b/client/lcd/lcd_test.go index 6eef4afd0a..0b774fba9d 100644 --- a/client/lcd/lcd_test.go +++ b/client/lcd/lcd_test.go @@ -746,6 +746,15 @@ func TestProposalsQuery(t *testing.T) { resultTx = doDeposit(t, port, seed2, name2, password2, addr2, proposalID3) tests.WaitForHeight(resultTx.Height+1, port) + deposits := getDeposits(t, port, proposalID1) + require.Len(t, deposits, 1) + + deposits = getDeposits(t, port, proposalID2) + require.Len(t, deposits, 2) + + deposits = getDeposits(t, port, proposalID3) + require.Len(t, deposits, 1) + // Only proposals #1 should be in Deposit Period proposals := getProposalsFilterStatus(t, port, gov.StatusDepositPeriod) require.Len(t, proposals, 1) @@ -1168,6 +1177,15 @@ func getProposal(t *testing.T, port string, proposalID int64) gov.Proposal { return proposal } +func getDeposits(t *testing.T, port string, proposalID int64) []gov.Deposit { + res, body := Request(t, port, "GET", fmt.Sprintf("/gov/proposals/%d/deposits", proposalID), nil) + require.Equal(t, http.StatusOK, res.StatusCode, body) + var deposits []gov.Deposit + err := cdc.UnmarshalJSON([]byte(body), &deposits) + require.Nil(t, err) + return deposits +} + func getDeposit(t *testing.T, port string, proposalID int64, depositerAddr sdk.AccAddress) gov.Deposit { res, body := Request(t, port, "GET", fmt.Sprintf("/gov/proposals/%d/deposits/%s", proposalID, depositerAddr), nil) require.Equal(t, http.StatusOK, res.StatusCode, body) diff --git a/x/gov/client/rest/rest.go b/x/gov/client/rest/rest.go index f66331ad5a..6d4a52ca14 100644 --- a/x/gov/client/rest/rest.go +++ b/x/gov/client/rest/rest.go @@ -31,13 +31,12 @@ func RegisterRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *codec.Codec) r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/deposits", RestProposalID), depositHandlerFn(cdc, cliCtx)).Methods("POST") r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/votes", RestProposalID), voteHandlerFn(cdc, cliCtx)).Methods("POST") - r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}", RestProposalID), queryProposalHandlerFn(cdc)).Methods("GET") - r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/deposits/{%s}", RestProposalID, RestDepositer), queryDepositHandlerFn(cdc)).Methods("GET") - r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/votes/{%s}", RestProposalID, RestVoter), queryVoteHandlerFn(cdc)).Methods("GET") - - r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/votes", RestProposalID), queryVotesOnProposalHandlerFn(cdc)).Methods("GET") - r.HandleFunc("/gov/proposals", queryProposalsWithParameterFn(cdc)).Methods("GET") + r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}", RestProposalID), queryProposalHandlerFn(cdc)).Methods("GET") + r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/deposits", RestProposalID), queryDepositsHandlerFn(cdc, cliCtx)).Methods("GET") + r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/deposits/{%s}", RestProposalID, RestDepositer), queryDepositHandlerFn(cdc)).Methods("GET") + r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/votes", RestProposalID), queryVotesOnProposalHandlerFn(cdc)).Methods("GET") + r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/votes/{%s}", RestProposalID, RestVoter), queryVoteHandlerFn(cdc)).Methods("GET") } type postProposalReq struct { @@ -202,6 +201,36 @@ func queryProposalHandlerFn(cdc *codec.Codec) http.HandlerFunc { } } +func queryDepositsHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + strProposalID := vars[RestProposalID] + + proposalID, ok := utils.ParseInt64OrReturnBadRequest(w, strProposalID) + if !ok { + return + } + + params := gov.QueryDepositsParams{ + ProposalID: proposalID, + } + + bz, err := cdc.MarshalJSON(params) + if err != nil { + utils.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) + return + } + + res, err := cliCtx.QueryWithData("custom/gov/deposits", bz) + if err != nil { + utils.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) + return + } + + w.Write(res) + } +} + func queryDepositHandlerFn(cdc *codec.Codec) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) diff --git a/x/gov/queryable.go b/x/gov/queryable.go index 606f73a9ca..b0cb423749 100644 --- a/x/gov/queryable.go +++ b/x/gov/queryable.go @@ -118,7 +118,7 @@ type QueryDepositsParams struct { // nolint: unparam func queryDeposits(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper) (res []byte, err sdk.Error) { - var params QueryDepositParams + var params QueryDepositsParams err2 := keeper.cdc.UnmarshalJSON(req.Data, ¶ms) if err2 != nil { return []byte{}, sdk.ErrUnknownRequest(fmt.Sprintf("incorrectly formatted request data - %s", err2.Error())) From b6a9457bf43b1ef90d4a2db0e9b86b4f328f3605 Mon Sep 17 00:00:00 2001 From: Federico Kunze Date: Fri, 12 Oct 2018 19:08:56 -0700 Subject: [PATCH 2/6] PENDING --- PENDING.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/PENDING.md b/PENDING.md index 0b4e63ff37..75805fd111 100644 --- a/PENDING.md +++ b/PENDING.md @@ -44,7 +44,7 @@ BREAKING CHANGES * [simulation] \#2162 Added back correct supply invariants * [x/slashing] \#2430 Simulate more slashes, check if validator is jailed before jailing * [x/stake] \#2393 Removed `CompleteUnbonding` and `CompleteRedelegation` Msg types, and instead added unbonding/redelegation queues to endblocker - + * SDK * [core] \#2219 Update to Tendermint 0.24.0 * Validator set updates delayed by one block @@ -75,7 +75,7 @@ BREAKING CHANGES * Mempool now won't build too large blocks, or too computationally expensive blocks * Maximum tx sizes and gas are now removed, and are implicitly the blocks maximums * ABCI validators no longer send the pubkey. The pubkey is only sent in validator updates - * Validator set changes are now delayed by one block + * Validator set changes are now delayed by one block * Block header now includes the next validator sets hash * BFT time is implemented * Secp256k1 signature format has changed @@ -91,6 +91,7 @@ FEATURES * [gaia-lite] [\#1953](https://github.com/cosmos/cosmos-sdk/issues/1953) Add /sign endpoint to sign transactions generated with `generate_only=true`. * [gaia-lite] [\#1954](https://github.com/cosmos/cosmos-sdk/issues/1954) Add /broadcast endpoint to broadcast transactions signed by the /sign endpoint. * [gaia-lite] [\#2113](https://github.com/cosmos/cosmos-sdk/issues/2113) Rename `/accounts/{address}/send` to `/bank/accounts/{address}/transfers`, rename `/accounts/{address}` to `/auth/accounts/{address}` + * [gaia-lite] [\#2478](https://github.com/cosmos/cosmos-sdk/issues/2478) Add query gov proposal's deposits endpoint * Gaia CLI (`gaiacli`) * [cli] Cmds to query staking pool and params From b1109180caa595a7179c4c601b56dd754dd029e6 Mon Sep 17 00:00:00 2001 From: Federico Kunze Date: Fri, 12 Oct 2018 19:12:57 -0700 Subject: [PATCH 3/6] add header --- x/gov/client/rest/rest.go | 1 + 1 file changed, 1 insertion(+) diff --git a/x/gov/client/rest/rest.go b/x/gov/client/rest/rest.go index 6d4a52ca14..b8aa2c0ea9 100644 --- a/x/gov/client/rest/rest.go +++ b/x/gov/client/rest/rest.go @@ -227,6 +227,7 @@ func queryDepositsHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.Ha return } + w.Header().Set("Content-Type", "application/json") w.Write(res) } } From 2b701655d9589cda2fd74a437e1245e604c55947 Mon Sep 17 00:00:00 2001 From: Federico Kunze Date: Mon, 15 Oct 2018 10:27:24 +0200 Subject: [PATCH 4/6] test deposit values --- client/lcd/lcd_test.go | 52 +++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/client/lcd/lcd_test.go b/client/lcd/lcd_test.go index 0b774fba9d..2d14ac041c 100644 --- a/client/lcd/lcd_test.go +++ b/client/lcd/lcd_test.go @@ -10,19 +10,19 @@ import ( "testing" "time" + "github.com/cosmos/cosmos-sdk/client/rpc" "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/ethereum/go-ethereum/p2p" "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" cryptoKeys "github.com/cosmos/cosmos-sdk/crypto/keys" - p2p "github.com/tendermint/tendermint/p2p" ctypes "github.com/tendermint/tendermint/rpc/core/types" client "github.com/cosmos/cosmos-sdk/client" keys "github.com/cosmos/cosmos-sdk/client/keys" - rpc "github.com/cosmos/cosmos-sdk/client/rpc" "github.com/cosmos/cosmos-sdk/codec" tests "github.com/cosmos/cosmos-sdk/tests" sdk "github.com/cosmos/cosmos-sdk/types" @@ -613,7 +613,7 @@ func TestSubmitProposal(t *testing.T) { defer cleanup() // create SubmitProposal TX - resultTx := doSubmitProposal(t, port, seed, name, password, addr) + resultTx := doSubmitProposal(t, port, seed, name, password, addr, 5) tests.WaitForHeight(resultTx.Height+1, port) // check if tx was committed @@ -635,7 +635,7 @@ func TestDeposit(t *testing.T) { defer cleanup() // create SubmitProposal TX - resultTx := doSubmitProposal(t, port, seed, name, password, addr) + resultTx := doSubmitProposal(t, port, seed, name, password, addr, 5) tests.WaitForHeight(resultTx.Height+1, port) // check if tx was committed @@ -650,7 +650,7 @@ func TestDeposit(t *testing.T) { require.Equal(t, "Test", proposal.GetTitle()) // create SubmitProposal TX - resultTx = doDeposit(t, port, seed, name, password, addr, proposalID) + resultTx = doDeposit(t, port, seed, name, password, addr, proposalID, 5) tests.WaitForHeight(resultTx.Height+1, port) // query proposal @@ -669,7 +669,7 @@ func TestVote(t *testing.T) { defer cleanup() // create SubmitProposal TX - resultTx := doSubmitProposal(t, port, seed, name, password, addr) + resultTx := doSubmitProposal(t, port, seed, name, password, addr, 5) tests.WaitForHeight(resultTx.Height+1, port) // check if tx was committed @@ -684,7 +684,7 @@ func TestVote(t *testing.T) { require.Equal(t, "Test", proposal.GetTitle()) // create SubmitProposal TX - resultTx = doDeposit(t, port, seed, name, password, addr, proposalID) + resultTx = doDeposit(t, port, seed, name, password, addr, proposalID, 5) tests.WaitForHeight(resultTx.Height+1, port) // query proposal @@ -725,35 +725,51 @@ func TestProposalsQuery(t *testing.T) { defer cleanup() // Addr1 proposes (and deposits) proposals #1 and #2 - resultTx := doSubmitProposal(t, port, seed, name, password1, addr) + resultTx := doSubmitProposal(t, port, seed, name, password1, addr, 5) var proposalID1 int64 cdc.UnmarshalBinaryBare(resultTx.DeliverTx.GetData(), &proposalID1) tests.WaitForHeight(resultTx.Height+1, port) - resultTx = doSubmitProposal(t, port, seed, name, password1, addr) + resultTx = doSubmitProposal(t, port, seed, name, password1, addr, 5) var proposalID2 int64 cdc.UnmarshalBinaryBare(resultTx.DeliverTx.GetData(), &proposalID2) tests.WaitForHeight(resultTx.Height+1, port) // Addr2 proposes (and deposits) proposals #3 - resultTx = doSubmitProposal(t, port, seed2, name2, password2, addr2) + resultTx = doSubmitProposal(t, port, seed2, name2, password2, addr2, 5) var proposalID3 int64 cdc.UnmarshalBinaryBare(resultTx.DeliverTx.GetData(), &proposalID3) tests.WaitForHeight(resultTx.Height+1, port) // Addr2 deposits on proposals #2 & #3 - resultTx = doDeposit(t, port, seed2, name2, password2, addr2, proposalID2) + resultTx = doDeposit(t, port, seed2, name2, password2, addr2, proposalID2, 5) tests.WaitForHeight(resultTx.Height+1, port) - resultTx = doDeposit(t, port, seed2, name2, password2, addr2, proposalID3) + resultTx = doDeposit(t, port, seed2, name2, password2, addr2, proposalID3, 5) tests.WaitForHeight(resultTx.Height+1, port) + // check deposits match proposal and individual deposits deposits := getDeposits(t, port, proposalID1) require.Len(t, deposits, 1) + deposit := getDeposit(t, port, proposalID1, addr) + require.Equal(t, deposit, deposits[0]) deposits = getDeposits(t, port, proposalID2) require.Len(t, deposits, 2) + deposit = getDeposit(t, port, proposalID2, addr) + require.Equal(t, deposit, deposits[0]) + deposit = getDeposit(t, port, proposalID2, addr2) + require.Equal(t, deposit, deposits[1]) deposits = getDeposits(t, port, proposalID3) require.Len(t, deposits, 1) + deposit = getDeposit(t, port, proposalID3, addr2) + require.Equal(t, deposit, deposits[0]) + + // increasing the amount of the deposit should update the existing one + resultTx = doDeposit(t, port, seed, name, password1, addr, proposalID1, 1) + tests.WaitForHeight(resultTx.Height+1, port) + + deposits = getDeposits(t, port, proposalID1) + require.Len(t, deposits, 1) // Only proposals #1 should be in Deposit Period proposals := getProposalsFilterStatus(t, port, gov.StatusDepositPeriod) @@ -1263,7 +1279,7 @@ func getProposalsFilterStatus(t *testing.T, port string, status gov.ProposalStat return proposals } -func doSubmitProposal(t *testing.T, port, seed, name, password string, proposerAddr sdk.AccAddress) (resultTx ctypes.ResultBroadcastTxCommit) { +func doSubmitProposal(t *testing.T, port, seed, name, password string, proposerAddr sdk.AccAddress, amount int64) (resultTx ctypes.ResultBroadcastTxCommit) { acc := getAccount(t, port, proposerAddr) accnum := acc.GetAccountNumber() @@ -1277,7 +1293,7 @@ func doSubmitProposal(t *testing.T, port, seed, name, password string, proposerA "description": "test", "proposal_type": "Text", "proposer": "%s", - "initial_deposit": [{ "denom": "steak", "amount": "5" }], + "initial_deposit": [{ "denom": "steak", "amount": "%d" }], "base_req": { "name": "%s", "password": "%s", @@ -1285,7 +1301,7 @@ func doSubmitProposal(t *testing.T, port, seed, name, password string, proposerA "account_number":"%d", "sequence":"%d" } - }`, proposerAddr, name, password, chainID, accnum, sequence)) + }`, proposerAddr, amount, name, password, chainID, accnum, sequence)) res, body := Request(t, port, "POST", "/gov/proposals", jsonStr) require.Equal(t, http.StatusOK, res.StatusCode, body) @@ -1296,7 +1312,7 @@ func doSubmitProposal(t *testing.T, port, seed, name, password string, proposerA return results } -func doDeposit(t *testing.T, port, seed, name, password string, proposerAddr sdk.AccAddress, proposalID int64) (resultTx ctypes.ResultBroadcastTxCommit) { +func doDeposit(t *testing.T, port, seed, name, password string, proposerAddr sdk.AccAddress, proposalID int64, amount int64) (resultTx ctypes.ResultBroadcastTxCommit) { acc := getAccount(t, port, proposerAddr) accnum := acc.GetAccountNumber() @@ -1307,7 +1323,7 @@ func doDeposit(t *testing.T, port, seed, name, password string, proposerAddr sdk // deposit on proposal jsonStr := []byte(fmt.Sprintf(`{ "depositer": "%s", - "amount": [{ "denom": "steak", "amount": "5" }], + "amount": [{ "denom": "steak", "amount": "%d" }], "base_req": { "name": "%s", "password": "%s", @@ -1315,7 +1331,7 @@ func doDeposit(t *testing.T, port, seed, name, password string, proposerAddr sdk "account_number":"%d", "sequence": "%d" } - }`, proposerAddr, name, password, chainID, accnum, sequence)) + }`, proposerAddr, amount, name, password, chainID, accnum, sequence)) res, body := Request(t, port, "POST", fmt.Sprintf("/gov/proposals/%d/deposits", proposalID), jsonStr) require.Equal(t, http.StatusOK, res.StatusCode, body) From 8e1d0fbac012eb07904de66d3c237008d38e7c83 Mon Sep 17 00:00:00 2001 From: Federico Kunze Date: Mon, 15 Oct 2018 10:41:37 +0200 Subject: [PATCH 5/6] Add option to indent response --- client/lcd/lcd_test.go | 4 ++-- x/gov/client/rest/rest.go | 49 ++++++++++++++------------------------- 2 files changed, 20 insertions(+), 33 deletions(-) diff --git a/client/lcd/lcd_test.go b/client/lcd/lcd_test.go index 2d14ac041c..79ded57ca2 100644 --- a/client/lcd/lcd_test.go +++ b/client/lcd/lcd_test.go @@ -756,8 +756,8 @@ func TestProposalsQuery(t *testing.T) { require.Len(t, deposits, 2) deposit = getDeposit(t, port, proposalID2, addr) require.Equal(t, deposit, deposits[0]) - deposit = getDeposit(t, port, proposalID2, addr2) - require.Equal(t, deposit, deposits[1]) + deposit2 := getDeposit(t, port, proposalID2, addr2) + require.Equal(t, deposit2, deposits[1]) deposits = getDeposits(t, port, proposalID3) require.Len(t, deposits, 1) diff --git a/x/gov/client/rest/rest.go b/x/gov/client/rest/rest.go index b8aa2c0ea9..e7d9770e2c 100644 --- a/x/gov/client/rest/rest.go +++ b/x/gov/client/rest/rest.go @@ -31,12 +31,12 @@ func RegisterRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *codec.Codec) r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/deposits", RestProposalID), depositHandlerFn(cdc, cliCtx)).Methods("POST") r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/votes", RestProposalID), voteHandlerFn(cdc, cliCtx)).Methods("POST") - r.HandleFunc("/gov/proposals", queryProposalsWithParameterFn(cdc)).Methods("GET") - r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}", RestProposalID), queryProposalHandlerFn(cdc)).Methods("GET") + r.HandleFunc("/gov/proposals", queryProposalsWithParameterFn(cdc, cliCtx)).Methods("GET") + r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}", RestProposalID), queryProposalHandlerFn(cdc, cliCtx)).Methods("GET") r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/deposits", RestProposalID), queryDepositsHandlerFn(cdc, cliCtx)).Methods("GET") - r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/deposits/{%s}", RestProposalID, RestDepositer), queryDepositHandlerFn(cdc)).Methods("GET") - r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/votes", RestProposalID), queryVotesOnProposalHandlerFn(cdc)).Methods("GET") - r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/votes/{%s}", RestProposalID, RestVoter), queryVoteHandlerFn(cdc)).Methods("GET") + r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/deposits/{%s}", RestProposalID, RestDepositer), queryDepositHandlerFn(cdc, cliCtx)).Methods("GET") + r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/votes", RestProposalID), queryVotesOnProposalHandlerFn(cdc, cliCtx)).Methods("GET") + r.HandleFunc(fmt.Sprintf("/gov/proposals/{%s}/votes/{%s}", RestProposalID, RestVoter), queryVoteHandlerFn(cdc, cliCtx)).Methods("GET") } type postProposalReq struct { @@ -163,7 +163,7 @@ func voteHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc } } -func queryProposalHandlerFn(cdc *codec.Codec) http.HandlerFunc { +func queryProposalHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) strProposalID := vars[RestProposalID] @@ -179,8 +179,6 @@ func queryProposalHandlerFn(cdc *codec.Codec) http.HandlerFunc { return } - cliCtx := context.NewCLIContext().WithCodec(cdc) - params := gov.QueryProposalParams{ ProposalID: proposalID, } @@ -197,7 +195,7 @@ func queryProposalHandlerFn(cdc *codec.Codec) http.HandlerFunc { return } - w.Write(res) + utils.PostProcessResponse(w, cdc, res, cliCtx.Indent) } } @@ -227,12 +225,11 @@ func queryDepositsHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.Ha return } - w.Header().Set("Content-Type", "application/json") - w.Write(res) + utils.PostProcessResponse(w, cdc, res, cliCtx.Indent) } } -func queryDepositHandlerFn(cdc *codec.Codec) http.HandlerFunc { +func queryDepositHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) strProposalID := vars[RestProposalID] @@ -262,8 +259,6 @@ func queryDepositHandlerFn(cdc *codec.Codec) http.HandlerFunc { return } - cliCtx := context.NewCLIContext().WithCodec(cdc) - params := gov.QueryDepositParams{ ProposalID: proposalID, Depositer: depositerAddr, @@ -295,11 +290,11 @@ func queryDepositHandlerFn(cdc *codec.Codec) http.HandlerFunc { return } - w.Write(res) + utils.PostProcessResponse(w, cdc, res, cliCtx.Indent) } } -func queryVoteHandlerFn(cdc *codec.Codec) http.HandlerFunc { +func queryVoteHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) strProposalID := vars[RestProposalID] @@ -329,8 +324,6 @@ func queryVoteHandlerFn(cdc *codec.Codec) http.HandlerFunc { return } - cliCtx := context.NewCLIContext().WithCodec(cdc) - params := gov.QueryVoteParams{ Voter: voterAddr, ProposalID: proposalID, @@ -365,12 +358,12 @@ func queryVoteHandlerFn(cdc *codec.Codec) http.HandlerFunc { utils.WriteErrorResponse(w, http.StatusNotFound, err.Error()) return } - w.Write(res) + utils.PostProcessResponse(w, cdc, res, cliCtx.Indent) } } // todo: Split this functionality into helper functions to remove the above -func queryVotesOnProposalHandlerFn(cdc *codec.Codec) http.HandlerFunc { +func queryVotesOnProposalHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) strProposalID := vars[RestProposalID] @@ -386,8 +379,6 @@ func queryVotesOnProposalHandlerFn(cdc *codec.Codec) http.HandlerFunc { return } - cliCtx := context.NewCLIContext().WithCodec(cdc) - params := gov.QueryVotesParams{ ProposalID: proposalID, } @@ -403,12 +394,12 @@ func queryVotesOnProposalHandlerFn(cdc *codec.Codec) http.HandlerFunc { return } - w.Write(res) + utils.PostProcessResponse(w, cdc, res, cliCtx.Indent) } } // todo: Split this functionality into helper functions to remove the above -func queryProposalsWithParameterFn(cdc *codec.Codec) http.HandlerFunc { +func queryProposalsWithParameterFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { bechVoterAddr := r.URL.Query().Get(RestVoter) bechDepositerAddr := r.URL.Query().Get(RestDepositer) @@ -460,20 +451,18 @@ func queryProposalsWithParameterFn(cdc *codec.Codec) http.HandlerFunc { return } - cliCtx := context.NewCLIContext().WithCodec(cdc) - res, err := cliCtx.QueryWithData("custom/gov/proposals", bz) if err != nil { utils.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) return } - w.Write(res) + utils.PostProcessResponse(w, cdc, res, cliCtx.Indent) } } // todo: Split this functionality into helper functions to remove the above -func queryTallyOnProposalHandlerFn(cdc *codec.Codec) http.HandlerFunc { +func queryTallyOnProposalHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) strProposalID := vars[RestProposalID] @@ -491,8 +480,6 @@ func queryTallyOnProposalHandlerFn(cdc *codec.Codec) http.HandlerFunc { return } - cliCtx := context.NewCLIContext().WithCodec(cdc) - params := gov.QueryTallyParams{ ProposalID: proposalID, } @@ -510,6 +497,6 @@ func queryTallyOnProposalHandlerFn(cdc *codec.Codec) http.HandlerFunc { return } - w.Write(res) + utils.PostProcessResponse(w, cdc, res, cliCtx.Indent) } } From 6dc6a78422595f5fcc329693ed0111949a0e09f8 Mon Sep 17 00:00:00 2001 From: Federico Kunze Date: Mon, 15 Oct 2018 10:44:15 +0200 Subject: [PATCH 6/6] fix import --- client/lcd/lcd_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/lcd/lcd_test.go b/client/lcd/lcd_test.go index 79ded57ca2..fce58c253d 100644 --- a/client/lcd/lcd_test.go +++ b/client/lcd/lcd_test.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/rpc" "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/ethereum/go-ethereum/p2p" + p2p "github.com/tendermint/tendermint/p2p" "github.com/spf13/viper" "github.com/stretchr/testify/assert" @@ -756,8 +756,8 @@ func TestProposalsQuery(t *testing.T) { require.Len(t, deposits, 2) deposit = getDeposit(t, port, proposalID2, addr) require.Equal(t, deposit, deposits[0]) - deposit2 := getDeposit(t, port, proposalID2, addr2) - require.Equal(t, deposit2, deposits[1]) + deposit = getDeposit(t, port, proposalID2, addr2) + require.Equal(t, deposit, deposits[1]) deposits = getDeposits(t, port, proposalID3) require.Len(t, deposits, 1)