Skip to content

Commit

Permalink
x/gov: fix NormalizeProposalType() return values (bp #8808) (#8816)
Browse files Browse the repository at this point in the history
(cherry picked from commit be23295)

Closes: #8806

Co-authored-by: Alessio Treglia <alessio@tendermint.com>
  • Loading branch information
mergify[bot] and Alessio Treglia committed Mar 8, 2021
1 parent a8ace5a commit 69cf20f
Show file tree
Hide file tree
Showing 6 changed files with 120 additions and 10 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ Ref: https://keepachangelog.com/en/1.0.0/

### Bug fixes

* (x/evidence) [#8461](https://github.com/cosmos/cosmos-sdk/pull/8461) Fix bech32 prefix in evidence validator address conversion
* (x/evidence) [\#8461](https://github.com/cosmos/cosmos-sdk/pull/8461) Fix bech32 prefix in evidence validator address conversion
* (x/gov) [\#8806](https://github.com/cosmos/cosmos-sdk/issues/8806) Fix q gov proposals command's mishandling of the --status parameter's values.

## [v0.41.4](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.41.3) - 2021-03-02

Expand Down
8 changes: 8 additions & 0 deletions x/gov/client/cli/cli_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,14 @@ func (s *IntegrationTestSuite) TestCmdGetProposals() {
},
false,
},
{
"get proposals with invalid status",
[]string{
"--status=unknown",
fmt.Sprintf("--%s=json", tmcli.OutputFlag),
},
true,
},
}

for _, tc := range testCases {
Expand Down
20 changes: 15 additions & 5 deletions x/gov/client/rest/grpc_query_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,23 +107,33 @@ func (s *IntegrationTestSuite) TestGetProposalsGRPC() {
val := s.network.Validators[0]

testCases := []struct {
name string
url string
headers map[string]string
expErr bool
name string
url string
headers map[string]string
wantNumProposals int
expErr bool
}{
{
"get proposals with height 1",
fmt.Sprintf("%s/cosmos/gov/v1beta1/proposals", val.APIAddress),
map[string]string{
grpctypes.GRPCBlockHeightHeader: "1",
},
0,
true,
},
{
"valid request",
fmt.Sprintf("%s/cosmos/gov/v1beta1/proposals", val.APIAddress),
map[string]string{},
2,
false,
},
{
"valid request with filter by status",
fmt.Sprintf("%s/cosmos/gov/v1beta1/proposals?proposal_status=1", val.APIAddress),
map[string]string{},
1,
false,
},
}
Expand All @@ -141,7 +151,7 @@ func (s *IntegrationTestSuite) TestGetProposalsGRPC() {
s.Require().Empty(proposals.Proposals)
} else {
s.Require().NoError(err)
s.Require().Len(proposals.Proposals, 2)
s.Require().Len(proposals.Proposals, tc.wantNumProposals)
}
})
}
Expand Down
56 changes: 56 additions & 0 deletions x/gov/client/rest/rest_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,62 @@ import (
"github.com/cosmos/cosmos-sdk/x/gov/types"
)

func (s *IntegrationTestSuite) TestLegacyGetAllProposals() {
val := s.network.Validators[0]

testCases := []struct {
name string
url string
numProposals int
expErr bool
expErrMsg string
}{
{
"get all existing proposals",
fmt.Sprintf("%s/gov/proposals", val.APIAddress),
2, false, "",
},
{
"get proposals in deposit period",
fmt.Sprintf("%s/gov/proposals?status=deposit_period", val.APIAddress),
1, false, "",
},
{
"get proposals in voting period",
fmt.Sprintf("%s/gov/proposals?status=voting_period", val.APIAddress),
1, false, "",
},
{
"wrong status parameter",
fmt.Sprintf("%s/gov/proposals?status=invalidstatus", val.APIAddress),
0, true, "'invalidstatus' is not a valid proposal status",
},
}

for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
respJSON, err := rest.GetRequest(tc.url)
s.Require().NoError(err)

if tc.expErr {
var errResp rest.ErrorResponse
s.Require().NoError(val.ClientCtx.LegacyAmino.UnmarshalJSON(respJSON, &errResp))
s.Require().Equal(errResp.Error, tc.expErrMsg)
} else {
var resp = rest.ResponseWithHeight{}
err = val.ClientCtx.LegacyAmino.UnmarshalJSON(respJSON, &resp)
s.Require().NoError(err)

// Check results.
var proposals types.Proposals
s.Require().NoError(val.ClientCtx.LegacyAmino.UnmarshalJSON(resp.Result, &proposals))
s.Require().Equal(tc.numProposals, len(proposals))
}
})
}
}

func (s *IntegrationTestSuite) TestLegacyGetVote() {
val := s.network.Validators[0]
voterAddressBech32 := val.Address.String()
Expand Down
8 changes: 4 additions & 4 deletions x/gov/client/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ func NormalizeProposalType(proposalType string) string {
func NormalizeProposalStatus(status string) string {
switch status {
case "DepositPeriod", "deposit_period":
return "DepositPeriod"
return types.StatusDepositPeriod.String()
case "VotingPeriod", "voting_period":
return "VotingPeriod"
return types.StatusVotingPeriod.String()
case "Passed", "passed":
return "Passed"
return types.StatusPassed.String()
case "Rejected", "rejected":
return "Rejected"
return types.StatusRejected.String()
default:
return status
}
Expand Down
35 changes: 35 additions & 0 deletions x/gov/client/utils/utils_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package utils_test

import (
"testing"

"github.com/stretchr/testify/require"

"github.com/cosmos/cosmos-sdk/x/gov/client/utils"
)

func TestNormalizeProposalStatus(t *testing.T) {
type args struct {
status string
}
tests := []struct {
name string
args args
want string
}{
{"invalid", args{"unknown"}, "unknown"},
{"deposit_period", args{"deposit_period"}, "PROPOSAL_STATUS_DEPOSIT_PERIOD"},
{"DepositPeriod", args{"DepositPeriod"}, "PROPOSAL_STATUS_DEPOSIT_PERIOD"},
{"voting_period", args{"deposit_period"}, "PROPOSAL_STATUS_DEPOSIT_PERIOD"},
{"VotingPeriod", args{"DepositPeriod"}, "PROPOSAL_STATUS_DEPOSIT_PERIOD"},
{"passed", args{"passed"}, "PROPOSAL_STATUS_PASSED"},
{"Passed", args{"Passed"}, "PROPOSAL_STATUS_PASSED"},
{"Rejected", args{"Rejected"}, "PROPOSAL_STATUS_REJECTED"},
{"rejected", args{"rejected"}, "PROPOSAL_STATUS_REJECTED"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
require.Equal(t, tt.want, utils.NormalizeProposalStatus(tt.args.status))
})
}
}

0 comments on commit 69cf20f

Please sign in to comment.