From 6336f95802d1acf84fcb1deb738b45b544beff84 Mon Sep 17 00:00:00 2001 From: Akhil Kumar P <36399231+akhilkumarpilli@users.noreply.github.com> Date: Mon, 15 Jun 2020 18:26:03 +0530 Subject: [PATCH] x/gov: fix rest single vote and inactive proposal votes list queries (#6388) * Fix single vote and votes list issues * Add unmarshal json test --- x/gov/client/rest/query.go | 2 +- x/gov/types/vote.go | 5 +++++ x/gov/types/vote_test.go | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 x/gov/types/vote_test.go diff --git a/x/gov/client/rest/query.go b/x/gov/client/rest/query.go index 793f6646996e..f9a1174cfe7e 100644 --- a/x/gov/client/rest/query.go +++ b/x/gov/client/rest/query.go @@ -313,7 +313,7 @@ func queryVoteHandlerFn(clientCtx client.Context) http.HandlerFunc { // todo: Split this functionality into helper functions to remove the above func queryVotesOnProposalHandlerFn(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - _, page, limit, err := rest.ParseHTTPArgsWithLimit(r, 0) + _, page, limit, err := rest.ParseHTTPArgs(r) if rest.CheckBadRequestError(w, err) { return } diff --git a/x/gov/types/vote.go b/x/gov/types/vote.go index 13eb41f75d74..11ec05ecea17 100644 --- a/x/gov/types/vote.go +++ b/x/gov/types/vote.go @@ -109,6 +109,11 @@ func (vo *VoteOption) UnmarshalJSON(data []byte) error { return err } + if s == "" { + *vo = OptionEmpty + return nil + } + bz2, err := VoteOptionFromString(s) if err != nil { return err diff --git a/x/gov/types/vote_test.go b/x/gov/types/vote_test.go new file mode 100644 index 000000000000..3e50a33ae9ee --- /dev/null +++ b/x/gov/types/vote_test.go @@ -0,0 +1,36 @@ +package types + +import ( + "encoding/json" + "fmt" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestVoteUnMarshalJSON(t *testing.T) { + tests := []struct { + option string + isError bool + }{ + {"Yes", false}, + {"No", false}, + {"Abstain", false}, + {"NoWithVeto", false}, + {"", false}, + {"misc", true}, + } + for _, tt := range tests { + var vo VoteOption + data, err := json.Marshal(tt.option) + require.NoError(t, err) + + err = vo.UnmarshalJSON(data) + if tt.isError { + require.Error(t, err) + require.EqualError(t, err, fmt.Sprintf("'%s' is not a valid vote option", tt.option)) + } else { + require.NoError(t, err) + } + } +}