refactor(x/staking): check duplicate addresses in StakeAuthorization's params (#18655)
This commit is contained in:
parent
ae724e1cbd
commit
833547f2aa
@ -164,14 +164,24 @@ func validateAllowAndDenyValidators(allowed, denied []sdk.ValAddress) ([]string,
|
||||
|
||||
allowedValidators := make([]string, len(allowed))
|
||||
if len(allowed) > 0 {
|
||||
foundAllowedValidators := make(map[string]bool, len(allowed))
|
||||
for i, validator := range allowed {
|
||||
if foundAllowedValidators[validator.String()] {
|
||||
return nil, nil, sdkerrors.ErrInvalidRequest.Wrapf("duplicate allowed validator address: %s", validator.String())
|
||||
}
|
||||
foundAllowedValidators[validator.String()] = true
|
||||
allowedValidators[i] = validator.String()
|
||||
}
|
||||
return allowedValidators, nil, nil
|
||||
}
|
||||
|
||||
deniedValidators := make([]string, len(denied))
|
||||
foundDeniedValidators := make(map[string]bool, len(denied))
|
||||
for i, validator := range denied {
|
||||
if foundDeniedValidators[validator.String()] {
|
||||
return nil, nil, sdkerrors.ErrInvalidRequest.Wrapf("duplicate denied validator address: %s", validator.String())
|
||||
}
|
||||
foundDeniedValidators[validator.String()] = true
|
||||
deniedValidators[i] = validator.String()
|
||||
}
|
||||
|
||||
|
||||
@ -42,6 +42,14 @@ func TestAuthzAuthorizations(t *testing.T) {
|
||||
_, err = stakingtypes.NewStakeAuthorization([]sdk.ValAddress{val1, val2}, []sdk.ValAddress{val1}, stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_DELEGATE, &coin100)
|
||||
require.Error(t, err)
|
||||
|
||||
// error duplicate allow list
|
||||
_, err = stakingtypes.NewStakeAuthorization([]sdk.ValAddress{val1, val1}, []sdk.ValAddress{}, stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_DELEGATE, &coin100)
|
||||
require.ErrorContains(t, err, "duplicate allowed validator address")
|
||||
|
||||
// error duplicate denied list
|
||||
_, err = stakingtypes.NewStakeAuthorization([]sdk.ValAddress{}, []sdk.ValAddress{val1, val1}, stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_DELEGATE, &coin100)
|
||||
require.ErrorContains(t, err, "duplicate denied validator address")
|
||||
|
||||
// verify MethodName
|
||||
undelAuth, _ := stakingtypes.NewStakeAuthorization([]sdk.ValAddress{val1, val2}, []sdk.ValAddress{}, stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_UNDELEGATE, &coin100)
|
||||
require.Equal(t, undelAuth.MsgTypeURL(), sdk.MsgTypeURL(&stakingtypes.MsgUndelegate{}))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user