x/distribution: fix module's parameters validation (#8918)
* x/distribution: fix module's parameters validation closes: #8914 * Update x/distribution/types/params.go Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> * Update x/distribution/types/params_internal_test.go Co-authored-by: Robert Zaremba <robert@zaremba.ch> Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> Co-authored-by: Robert Zaremba <robert@zaremba.ch>
This commit is contained in:
parent
0c2d4a86fd
commit
1fddce73b3
|
@ -1,4 +1,4 @@
|
||||||
package types
|
package types_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -6,14 +6,14 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
|
"github.com/cosmos/cosmos-sdk/x/distribution/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestValidateGenesis(t *testing.T) {
|
func TestValidateGenesis(t *testing.T) {
|
||||||
|
|
||||||
fp := InitialFeePool()
|
fp := types.InitialFeePool()
|
||||||
require.Nil(t, fp.ValidateGenesis())
|
require.Nil(t, fp.ValidateGenesis())
|
||||||
|
|
||||||
fp2 := FeePool{CommunityPool: sdk.DecCoins{{Denom: "stake", Amount: sdk.NewDec(-1)}}}
|
fp2 := types.FeePool{CommunityPool: sdk.DecCoins{{Denom: "stake", Amount: sdk.NewDec(-1)}}}
|
||||||
require.NotNil(t, fp2.ValidateGenesis())
|
require.NotNil(t, fp2.ValidateGenesis())
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs {
|
||||||
func (p Params) ValidateBasic() error {
|
func (p Params) ValidateBasic() error {
|
||||||
if p.CommunityTax.IsNegative() || p.CommunityTax.GT(sdk.OneDec()) {
|
if p.CommunityTax.IsNegative() || p.CommunityTax.GT(sdk.OneDec()) {
|
||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
"community tax should non-negative and less than one: %s", p.CommunityTax,
|
"community tax should be non-negative and less than one: %s", p.CommunityTax,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if p.BaseProposerReward.IsNegative() {
|
if p.BaseProposerReward.IsNegative() {
|
||||||
|
@ -64,9 +64,9 @@ func (p Params) ValidateBasic() error {
|
||||||
"bonus proposer reward should be positive: %s", p.BonusProposerReward,
|
"bonus proposer reward should be positive: %s", p.BonusProposerReward,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if v := p.BaseProposerReward.Add(p.BonusProposerReward); v.GT(sdk.OneDec()) {
|
if v := p.BaseProposerReward.Add(p.BonusProposerReward).Add(p.CommunityTax); v.GT(sdk.OneDec()) {
|
||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
"sum of base and bonus proposer reward cannot greater than one: %s", v,
|
"sum of base, bonus proposer rewards, and community tax cannot be greater than one: %s", v,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
package types
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_validateAuxFuncs(t *testing.T) {
|
||||||
|
type args struct {
|
||||||
|
i interface{}
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
args args
|
||||||
|
wantErr bool
|
||||||
|
}{
|
||||||
|
{"wrong type", args{10.5}, true},
|
||||||
|
{"empty sdk.Dec", args{sdk.Dec{}}, true},
|
||||||
|
{"negative", args{sdk.NewDec(-1)}, true},
|
||||||
|
{"one dec", args{sdk.NewDec(1)}, false},
|
||||||
|
{"two dec", args{sdk.NewDec(2)}, true},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
tt := tt
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
require.Equal(t, tt.wantErr, validateCommunityTax(tt.args.i) != nil)
|
||||||
|
require.Equal(t, tt.wantErr, validateBaseProposerReward(tt.args.i) != nil)
|
||||||
|
require.Equal(t, tt.wantErr, validateBonusProposerReward(tt.args.i) != nil)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package types
|
package types_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -6,29 +6,44 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
|
"github.com/cosmos/cosmos-sdk/x/distribution/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Test_validateAuxFuncs(t *testing.T) {
|
func TestParams_ValidateBasic(t *testing.T) {
|
||||||
type args struct {
|
toDec := sdk.MustNewDecFromStr
|
||||||
i interface{}
|
|
||||||
|
type fields struct {
|
||||||
|
CommunityTax sdk.Dec
|
||||||
|
BaseProposerReward sdk.Dec
|
||||||
|
BonusProposerReward sdk.Dec
|
||||||
|
WithdrawAddrEnabled bool
|
||||||
}
|
}
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
args args
|
fields fields
|
||||||
wantErr bool
|
wantErr bool
|
||||||
}{
|
}{
|
||||||
{"wrong type", args{10.5}, true},
|
{"success", fields{toDec("0.1"), toDec("0.5"), toDec("0.4"), false}, false},
|
||||||
{"nil Int pointer", args{sdk.Dec{}}, true},
|
{"negative community tax", fields{toDec("-0.1"), toDec("0.5"), toDec("0.4"), false}, true},
|
||||||
{"negative", args{sdk.NewDec(-1)}, true},
|
{"negative base proposer reward", fields{toDec("0.1"), toDec("-0.5"), toDec("0.4"), false}, true},
|
||||||
{"one dec", args{sdk.NewDec(1)}, false},
|
{"negative bonus proposer reward", fields{toDec("0.1"), toDec("0.5"), toDec("-0.4"), false}, true},
|
||||||
{"two dec", args{sdk.NewDec(2)}, true},
|
{"total sum greater than 1", fields{toDec("0.2"), toDec("0.5"), toDec("0.4"), false}, true},
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
tt := tt
|
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
require.Equal(t, tt.wantErr, validateCommunityTax(tt.args.i) != nil)
|
p := types.Params{
|
||||||
require.Equal(t, tt.wantErr, validateBaseProposerReward(tt.args.i) != nil)
|
CommunityTax: tt.fields.CommunityTax,
|
||||||
require.Equal(t, tt.wantErr, validateBonusProposerReward(tt.args.i) != nil)
|
BaseProposerReward: tt.fields.BaseProposerReward,
|
||||||
|
BonusProposerReward: tt.fields.BonusProposerReward,
|
||||||
|
WithdrawAddrEnabled: tt.fields.WithdrawAddrEnabled,
|
||||||
|
}
|
||||||
|
if err := p.ValidateBasic(); (err != nil) != tt.wantErr {
|
||||||
|
t.Errorf("ValidateBasic() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDefaultParams(t *testing.T) {
|
||||||
|
require.NoError(t, types.DefaultParams().ValidateBasic())
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue