Skip to content

Commit 268e7bb

Browse files
authored
Merge branch 'master' into abdulla/issue-312
2 parents 3652886 + da80b19 commit 268e7bb

File tree

3 files changed

+102
-6
lines changed

3 files changed

+102
-6
lines changed

integration_tests/cli/validator-demo.sh

+10
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,11 @@ result=$(docker exec "$container" /bin/sh -c "echo test1234 | dcld tx validator
202202
check_response "$result" "\"code\": 0"
203203
echo "$result"
204204

205+
test_divider
206+
207+
echo "node admin doesn't add a new validator with new pubkey, because node admin already has disabled validator"
208+
result="$(docker exec "$container" /bin/sh -c "echo test1234 | ./dcld tx validator add-node --pubkey='$pubkey' --moniker="$node_name" --from="$account" --yes 2>&1 || true")"
209+
response_does_not_contain "$result" "\"code\": 0"
205210

206211
test_divider
207212

@@ -294,6 +299,11 @@ result=$(dcld tx validator approve-disable-node --address="$validator_address" -
294299
check_response "$result" "\"code\": 0"
295300
echo "$result"
296301

302+
test_divider
303+
304+
echo "node admin doesn't add a new validator with new pubkey, because node admin already has disabled validator"
305+
result="$(docker exec "$container" /bin/sh -c "echo test1234 | ./dcld tx validator add-node --pubkey='$pubkey' --moniker="$node_name" --from="$account" --yes 2>&1 || true")"
306+
response_does_not_contain "$result" "\"code\": 0"
297307

298308
test_divider
299309

integration_tests/grpc_rest/validator/helpers.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,10 @@ func Demo(suite *utils.TestSuite) {
253253
_, err = DisableValidator(suite, validatorAddr, nodeAdminName, nodeAdminAcc)
254254
require.NoError(suite.T, err)
255255

256+
// node admin doesn't add a new validator with new pubkey, because node admin already has disabled validator
257+
_, err = CreateValidator(suite, validatorAddr, nodeAdminName, nodeAdminAcc, testconstants.ValidatorPubKey2, "test123")
258+
require.Error(suite.T, err)
259+
256260
// Query disabled validator
257261
disabledValidator, err := GetDisabledValidator(suite, validatorAddr)
258262
require.NoError(suite.T, err)
@@ -274,10 +278,6 @@ func Demo(suite *utils.TestSuite) {
274278
require.NoError(suite.T, err)
275279
require.Empty(suite.T, disabledValidators)
276280

277-
//
278-
//
279-
//
280-
281281
// Propose disable validator
282282
_, err = ProposeDisableValidator(suite, validatorAddr, aliceName, aliceAccount, testconstants.Info)
283283
require.NoError(suite.T, err)
@@ -298,6 +298,10 @@ func Demo(suite *utils.TestSuite) {
298298
_, err = ApproveDisableValidator(suite, validatorAddr, jackName, jackAccount, testconstants.Info)
299299
require.NoError(suite.T, err)
300300

301+
// node admin doesn't add a new validator with new pubkey, because node admin already has disabled validator
302+
_, err = CreateValidator(suite, validatorAddr, nodeAdminName, nodeAdminAcc, testconstants.ValidatorPubKey2, "test123")
303+
require.Error(suite.T, err)
304+
301305
// Query disabled validator
302306
disabledValidator, err = GetDisabledValidator(suite, validatorAddr)
303307
require.NoError(suite.T, err)

x/validator/handler_test.go

+84-2
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ func TestHandler_OwnerNodeAdminCanEnabledValidator(t *testing.T) {
629629
require.False(t, isFound)
630630
}
631631

632-
func TestHandler_TrusteeDisabkedValidatorOwnerNodeAdminCanEnableValidator(t *testing.T) {
632+
func TestHandler_TrusteeDisabledValidatorOwnerNodeAdminCanEnableValidator(t *testing.T) {
633633
setup := Setup(t)
634634

635635
// create Trustees
@@ -651,7 +651,7 @@ func TestHandler_TrusteeDisabkedValidatorOwnerNodeAdminCanEnableValidator(t *tes
651651
valAddress, err := sdk.ValAddressFromBech32(testconstants.ValidatorAddress1)
652652
require.NoError(t, err)
653653

654-
// create Trustee and NodeAdmin
654+
// create NodeAdmin
655655
ba4 := authtypes.NewBaseAccount(sdk.AccAddress(valAddress), testconstants.PubKey4, 0, 0)
656656
account4 := dclauthtypes.NewAccount(ba4,
657657
dclauthtypes.AccountRoles{dclauthtypes.NodeAdmin}, nil, testconstants.VendorID4)
@@ -676,6 +676,88 @@ func TestHandler_TrusteeDisabkedValidatorOwnerNodeAdminCanEnableValidator(t *tes
676676
require.False(t, isFound)
677677
}
678678

679+
func TestHandler_OwnerNodeAdminDisabledValidatorAndNodeAdminCanNotAddNewValidator(t *testing.T) {
680+
setup := Setup(t)
681+
682+
valAddress, err := sdk.ValAddressFromBech32(testconstants.ValidatorAddress1)
683+
require.NoError(t, err)
684+
685+
// create NodeAdmin
686+
ba1 := authtypes.NewBaseAccount(sdk.AccAddress(valAddress), testconstants.PubKey1, 0, 0)
687+
account1 := dclauthtypes.NewAccount(ba1,
688+
dclauthtypes.AccountRoles{dclauthtypes.NodeAdmin}, nil, testconstants.VendorID1)
689+
setup.DclauthKeeper.SetAccount(setup.Ctx, account1)
690+
691+
// node admin disable validator
692+
msgDisableValidator := types.NewMsgDisableValidator(valAddress)
693+
_, err = setup.Handler(setup.Ctx, msgDisableValidator)
694+
require.NoError(t, err)
695+
696+
msgCreateValidator, err := types.NewMsgCreateValidator(
697+
valAddress,
698+
testconstants.ValidatorPubKey2,
699+
&types.Description{Moniker: testconstants.ProductName},
700+
)
701+
require.NoError(t, err)
702+
703+
// node admin try to add a new validator
704+
_, err = setup.Handler(setup.Ctx, msgCreateValidator)
705+
require.Error(t, err)
706+
}
707+
708+
func TestHandler_TrusteeDisabledValidatorAndOwnerNodeAdminCanNotAddNewValidator(t *testing.T) {
709+
setup := Setup(t)
710+
711+
// create Trustees
712+
ba1 := authtypes.NewBaseAccount(testconstants.Address1, testconstants.PubKey1, 0, 0)
713+
account1 := dclauthtypes.NewAccount(ba1,
714+
dclauthtypes.AccountRoles{dclauthtypes.Trustee}, nil, testconstants.VendorID1)
715+
setup.DclauthKeeper.SetAccount(setup.Ctx, account1)
716+
717+
ba2 := authtypes.NewBaseAccount(testconstants.Address2, testconstants.PubKey2, 0, 0)
718+
account2 := dclauthtypes.NewAccount(ba2,
719+
dclauthtypes.AccountRoles{dclauthtypes.Trustee}, nil, testconstants.VendorID2)
720+
setup.DclauthKeeper.SetAccount(setup.Ctx, account2)
721+
722+
ba3 := authtypes.NewBaseAccount(testconstants.Address3, testconstants.PubKey3, 0, 0)
723+
account3 := dclauthtypes.NewAccount(ba3,
724+
dclauthtypes.AccountRoles{dclauthtypes.Trustee}, nil, testconstants.VendorID3)
725+
setup.DclauthKeeper.SetAccount(setup.Ctx, account3)
726+
727+
valAddress, err := sdk.ValAddressFromBech32(testconstants.ValidatorAddress1)
728+
require.NoError(t, err)
729+
730+
// create NodeAdmin
731+
ba4 := authtypes.NewBaseAccount(sdk.AccAddress(valAddress), testconstants.PubKey4, 0, 0)
732+
account4 := dclauthtypes.NewAccount(ba4,
733+
dclauthtypes.AccountRoles{dclauthtypes.NodeAdmin}, nil, testconstants.VendorID4)
734+
setup.DclauthKeeper.SetAccount(setup.Ctx, account4)
735+
736+
// propose new disable validator
737+
msgProposeDisableValidator1 := NewMsgProposeDisableValidator(account1.GetAddress(), valAddress)
738+
_, err = setup.Handler(setup.Ctx, msgProposeDisableValidator1)
739+
require.NoError(t, err)
740+
741+
// approve new disable validator
742+
msgProposeDisableValidator2 := NewMsgApproveDisableValidator(account2.GetAddress(), valAddress)
743+
_, err = setup.Handler(setup.Ctx, msgProposeDisableValidator2)
744+
require.NoError(t, err)
745+
746+
_, isFound := setup.ValidatorKeeper.GetDisabledValidator(setup.Ctx, valAddress.String())
747+
require.True(t, isFound)
748+
749+
msgCreateValidator, err := types.NewMsgCreateValidator(
750+
valAddress,
751+
testconstants.ValidatorPubKey2,
752+
&types.Description{Moniker: testconstants.ProductName},
753+
)
754+
require.NoError(t, err)
755+
756+
// node admin try to add a new validator
757+
_, err = setup.Handler(setup.Ctx, msgCreateValidator)
758+
require.Error(t, err)
759+
}
760+
679761
func NewMsgProposeDisableValidator(signer sdk.AccAddress, address sdk.ValAddress) *types.MsgProposeDisableValidator {
680762
return &types.MsgProposeDisableValidator{
681763
Creator: signer.String(),

0 commit comments

Comments
 (0)