end refactor handler_test
This commit is contained in:
parent
015fd43f51
commit
bbbbc61276
|
@ -1,6 +1,7 @@
|
||||||
package staking_test
|
package staking_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -1327,178 +1328,179 @@ func TestUnbondingWhenExcessValidators(t *testing.T) {
|
||||||
require.Equal(t, sdk.Bonded, val1.Status, "%v", val1)
|
require.Equal(t, sdk.Bonded, val1.Status, "%v", val1)
|
||||||
}
|
}
|
||||||
|
|
||||||
//func TestBondUnbondRedelegateSlashTwice(t *testing.T) {
|
func TestBondUnbondRedelegateSlashTwice(t *testing.T) {
|
||||||
// ctx, _, _, keeper, _ := CreateTestInput(t, false, 1000)
|
app, ctx, delAddrs, valAddrs := bootstrapHandlerGenesisTest(t, 1000, 3, 1000000000)
|
||||||
// handler := NewHandler(keeper)
|
|
||||||
//
|
handler := staking.NewHandler(app.StakingKeeper)
|
||||||
// valA, valB, del := sdk.ValAddress(Addrs[0]), sdk.ValAddress(Addrs[1]), Addrs[2]
|
|
||||||
// consAddr0 := sdk.ConsAddress(PKs[0].Address())
|
valA, valB, del := valAddrs[0], valAddrs[1], delAddrs[2]
|
||||||
//
|
consAddr0 := sdk.ConsAddress(PKs[0].Address())
|
||||||
// valTokens := sdk.TokensFromConsensusPower(10)
|
|
||||||
// msgCreateValidator := NewTestMsgCreateValidator(valA, PKs[0], valTokens)
|
valTokens := sdk.TokensFromConsensusPower(10)
|
||||||
// res, err := handler(ctx, msgCreateValidator)
|
msgCreateValidator := NewTestMsgCreateValidator(valA, PKs[0], valTokens)
|
||||||
// require.NoError(t, err)
|
res, err := handler(ctx, msgCreateValidator)
|
||||||
// require.NotNil(t, res)
|
require.NoError(t, err)
|
||||||
//
|
require.NotNil(t, res)
|
||||||
// msgCreateValidator = NewTestMsgCreateValidator(valB, PKs[1], valTokens)
|
|
||||||
// res, err = handler(ctx, msgCreateValidator)
|
msgCreateValidator = NewTestMsgCreateValidator(valB, PKs[1], valTokens)
|
||||||
// require.NoError(t, err)
|
res, err = handler(ctx, msgCreateValidator)
|
||||||
// require.NotNil(t, res)
|
require.NoError(t, err)
|
||||||
//
|
require.NotNil(t, res)
|
||||||
// // delegate 10 stake
|
|
||||||
// msgDelegate := NewTestMsgDelegate(del, valA, valTokens)
|
// delegate 10 stake
|
||||||
// res, err = handler(ctx, msgDelegate)
|
msgDelegate := NewTestMsgDelegate(del, valA, valTokens)
|
||||||
// require.NoError(t, err)
|
res, err = handler(ctx, msgDelegate)
|
||||||
// require.NotNil(t, res)
|
require.NoError(t, err)
|
||||||
//
|
require.NotNil(t, res)
|
||||||
// // apply Tendermint updates
|
|
||||||
// updates := keeper.ApplyAndReturnValidatorSetUpdates(ctx)
|
// apply Tendermint updates
|
||||||
// require.Equal(t, 2, len(updates))
|
updates := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
|
||||||
//
|
require.Equal(t, 2, len(updates))
|
||||||
// // a block passes
|
|
||||||
// ctx = ctx.WithBlockHeight(1)
|
// a block passes
|
||||||
//
|
ctx = ctx.WithBlockHeight(1)
|
||||||
// // begin unbonding 4 stake
|
|
||||||
// unbondAmt := sdk.NewCoin(sdk.DefaultBondDenom, sdk.TokensFromConsensusPower(4))
|
// begin unbonding 4 stake
|
||||||
// msgUndelegate := NewMsgUndelegate(del, valA, unbondAmt)
|
unbondAmt := sdk.NewCoin(sdk.DefaultBondDenom, sdk.TokensFromConsensusPower(4))
|
||||||
// res, err = handler(ctx, msgUndelegate)
|
msgUndelegate := types.NewMsgUndelegate(del, valA, unbondAmt)
|
||||||
// require.NoError(t, err)
|
res, err = handler(ctx, msgUndelegate)
|
||||||
// require.NotNil(t, res)
|
require.NoError(t, err)
|
||||||
//
|
require.NotNil(t, res)
|
||||||
// // begin redelegate 6 stake
|
|
||||||
// redAmt := sdk.NewCoin(sdk.DefaultBondDenom, sdk.TokensFromConsensusPower(6))
|
// begin redelegate 6 stake
|
||||||
// msgBeginRedelegate := NewMsgBeginRedelegate(del, valA, valB, redAmt)
|
redAmt := sdk.NewCoin(sdk.DefaultBondDenom, sdk.TokensFromConsensusPower(6))
|
||||||
// res, err = handler(ctx, msgBeginRedelegate)
|
msgBeginRedelegate := types.NewMsgBeginRedelegate(del, valA, valB, redAmt)
|
||||||
// require.NoError(t, err)
|
res, err = handler(ctx, msgBeginRedelegate)
|
||||||
// require.NotNil(t, res)
|
require.NoError(t, err)
|
||||||
//
|
require.NotNil(t, res)
|
||||||
// // destination delegation should have 6 shares
|
|
||||||
// delegation, found := keeper.GetDelegation(ctx, del, valB)
|
// destination delegation should have 6 shares
|
||||||
// require.True(t, found)
|
delegation, found := app.StakingKeeper.GetDelegation(ctx, del, valB)
|
||||||
// require.Equal(t, sdk.NewDecFromInt(redAmt.Amount), delegation.Shares)
|
require.True(t, found)
|
||||||
//
|
require.Equal(t, sdk.NewDecFromInt(redAmt.Amount), delegation.Shares)
|
||||||
// // must apply validator updates
|
|
||||||
// updates = keeper.ApplyAndReturnValidatorSetUpdates(ctx)
|
// must apply validator updates
|
||||||
// require.Equal(t, 2, len(updates))
|
updates = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
|
||||||
//
|
require.Equal(t, 2, len(updates))
|
||||||
// // slash the validator by half
|
|
||||||
// keeper.Slash(ctx, consAddr0, 0, 20, sdk.NewDecWithPrec(5, 1))
|
// slash the validator by half
|
||||||
//
|
app.StakingKeeper.Slash(ctx, consAddr0, 0, 20, sdk.NewDecWithPrec(5, 1))
|
||||||
// // unbonding delegation should have been slashed by half
|
|
||||||
// ubd, found := keeper.GetUnbondingDelegation(ctx, del, valA)
|
// unbonding delegation should have been slashed by half
|
||||||
// require.True(t, found)
|
ubd, found := app.StakingKeeper.GetUnbondingDelegation(ctx, del, valA)
|
||||||
// require.Len(t, ubd.Entries, 1)
|
require.True(t, found)
|
||||||
// require.Equal(t, unbondAmt.Amount.QuoRaw(2), ubd.Entries[0].Balance)
|
require.Len(t, ubd.Entries, 1)
|
||||||
//
|
require.Equal(t, unbondAmt.Amount.QuoRaw(2), ubd.Entries[0].Balance)
|
||||||
// // redelegation should have been slashed by half
|
|
||||||
// redelegation, found := keeper.GetRedelegation(ctx, del, valA, valB)
|
// redelegation should have been slashed by half
|
||||||
// require.True(t, found)
|
redelegation, found := app.StakingKeeper.GetRedelegation(ctx, del, valA, valB)
|
||||||
// require.Len(t, redelegation.Entries, 1)
|
require.True(t, found)
|
||||||
//
|
require.Len(t, redelegation.Entries, 1)
|
||||||
// // destination delegation should have been slashed by half
|
|
||||||
// delegation, found = keeper.GetDelegation(ctx, del, valB)
|
// destination delegation should have been slashed by half
|
||||||
// require.True(t, found)
|
delegation, found = app.StakingKeeper.GetDelegation(ctx, del, valB)
|
||||||
// require.Equal(t, sdk.NewDecFromInt(redAmt.Amount.QuoRaw(2)), delegation.Shares)
|
require.True(t, found)
|
||||||
//
|
require.Equal(t, sdk.NewDecFromInt(redAmt.Amount.QuoRaw(2)), delegation.Shares)
|
||||||
// // validator power should have been reduced by half
|
|
||||||
// validator, found := keeper.GetValidator(ctx, valA)
|
// validator power should have been reduced by half
|
||||||
// require.True(t, found)
|
validator, found := app.StakingKeeper.GetValidator(ctx, valA)
|
||||||
// require.Equal(t, valTokens.QuoRaw(2), validator.GetBondedTokens())
|
require.True(t, found)
|
||||||
//
|
require.Equal(t, valTokens.QuoRaw(2), validator.GetBondedTokens())
|
||||||
// // slash the validator for an infraction committed after the unbonding and redelegation begin
|
|
||||||
// ctx = ctx.WithBlockHeight(3)
|
// slash the validator for an infraction committed after the unbonding and redelegation begin
|
||||||
// keeper.Slash(ctx, consAddr0, 2, 10, sdk.NewDecWithPrec(5, 1))
|
ctx = ctx.WithBlockHeight(3)
|
||||||
//
|
app.StakingKeeper.Slash(ctx, consAddr0, 2, 10, sdk.NewDecWithPrec(5, 1))
|
||||||
// // unbonding delegation should be unchanged
|
|
||||||
// ubd, found = keeper.GetUnbondingDelegation(ctx, del, valA)
|
// unbonding delegation should be unchanged
|
||||||
// require.True(t, found)
|
ubd, found = app.StakingKeeper.GetUnbondingDelegation(ctx, del, valA)
|
||||||
// require.Len(t, ubd.Entries, 1)
|
require.True(t, found)
|
||||||
// require.Equal(t, unbondAmt.Amount.QuoRaw(2), ubd.Entries[0].Balance)
|
require.Len(t, ubd.Entries, 1)
|
||||||
//
|
require.Equal(t, unbondAmt.Amount.QuoRaw(2), ubd.Entries[0].Balance)
|
||||||
// // redelegation should be unchanged
|
|
||||||
// redelegation, found = keeper.GetRedelegation(ctx, del, valA, valB)
|
// redelegation should be unchanged
|
||||||
// require.True(t, found)
|
redelegation, found = app.StakingKeeper.GetRedelegation(ctx, del, valA, valB)
|
||||||
// require.Len(t, redelegation.Entries, 1)
|
require.True(t, found)
|
||||||
//
|
require.Len(t, redelegation.Entries, 1)
|
||||||
// // destination delegation should be unchanged
|
|
||||||
// delegation, found = keeper.GetDelegation(ctx, del, valB)
|
// destination delegation should be unchanged
|
||||||
// require.True(t, found)
|
delegation, found = app.StakingKeeper.GetDelegation(ctx, del, valB)
|
||||||
// require.Equal(t, sdk.NewDecFromInt(redAmt.Amount.QuoRaw(2)), delegation.Shares)
|
require.True(t, found)
|
||||||
//
|
require.Equal(t, sdk.NewDecFromInt(redAmt.Amount.QuoRaw(2)), delegation.Shares)
|
||||||
// // end blocker
|
|
||||||
// EndBlocker(ctx, keeper)
|
// end blocker
|
||||||
//
|
staking.EndBlocker(ctx, app.StakingKeeper)
|
||||||
// // validator power should have been reduced to zero
|
|
||||||
// // validator should be in unbonding state
|
// validator power should have been reduced to zero
|
||||||
// validator, _ = keeper.GetValidator(ctx, valA)
|
// validator should be in unbonding state
|
||||||
// require.Equal(t, validator.GetStatus(), sdk.Unbonding)
|
validator, _ = app.StakingKeeper.GetValidator(ctx, valA)
|
||||||
//}
|
require.Equal(t, validator.GetStatus(), sdk.Unbonding)
|
||||||
//
|
}
|
||||||
//func TestInvalidMsg(t *testing.T) {
|
|
||||||
// k := Keeper{}
|
func TestInvalidMsg(t *testing.T) {
|
||||||
// h := NewHandler(k)
|
k := staking.Keeper{}
|
||||||
//
|
h := staking.NewHandler(k)
|
||||||
// res, err := h(sdk.NewContext(nil, abci.Header{}, false, nil), sdk.NewTestMsg())
|
|
||||||
// require.Error(t, err)
|
res, err := h(sdk.NewContext(nil, abci.Header{}, false, nil), sdk.NewTestMsg())
|
||||||
// require.Nil(t, res)
|
require.Error(t, err)
|
||||||
// require.True(t, strings.Contains(err.Error(), "unrecognized staking message type"))
|
require.Nil(t, res)
|
||||||
//}
|
require.True(t, strings.Contains(err.Error(), "unrecognized staking message type"))
|
||||||
//
|
}
|
||||||
//func TestInvalidCoinDenom(t *testing.T) {
|
|
||||||
// ctx, _, _, keeper, _ := CreateTestInput(t, false, 1000)
|
func TestInvalidCoinDenom(t *testing.T) {
|
||||||
// handler := NewHandler(keeper)
|
app, ctx, delAddrs, valAddrs := bootstrapHandlerGenesisTest(t, 1000, 3, 1000000000)
|
||||||
//
|
handler := staking.NewHandler(app.StakingKeeper)
|
||||||
// valA, valB, delAddr := sdk.ValAddress(Addrs[0]), sdk.ValAddress(Addrs[1]), Addrs[2]
|
|
||||||
//
|
valA, valB, delAddr := valAddrs[0], valAddrs[1], delAddrs[2]
|
||||||
// valTokens := sdk.TokensFromConsensusPower(100)
|
|
||||||
// invalidCoin := sdk.NewCoin("churros", valTokens)
|
valTokens := sdk.TokensFromConsensusPower(100)
|
||||||
// validCoin := sdk.NewCoin(sdk.DefaultBondDenom, valTokens)
|
invalidCoin := sdk.NewCoin("churros", valTokens)
|
||||||
// oneCoin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.OneInt())
|
validCoin := sdk.NewCoin(sdk.DefaultBondDenom, valTokens)
|
||||||
//
|
oneCoin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.OneInt())
|
||||||
// commission := types.NewCommissionRates(sdk.OneDec(), sdk.OneDec(), sdk.ZeroDec())
|
|
||||||
//
|
commission := types.NewCommissionRates(sdk.OneDec(), sdk.OneDec(), sdk.ZeroDec())
|
||||||
// msgCreate := types.NewMsgCreateValidator(valA, PKs[0], invalidCoin, Description{}, commission, sdk.OneInt())
|
|
||||||
// res, err := handler(ctx, msgCreate)
|
msgCreate := types.NewMsgCreateValidator(valA, PKs[0], invalidCoin, types.Description{}, commission, sdk.OneInt())
|
||||||
// require.Error(t, err)
|
res, err := handler(ctx, msgCreate)
|
||||||
// require.Nil(t, res)
|
require.Error(t, err)
|
||||||
//
|
require.Nil(t, res)
|
||||||
// msgCreate = types.NewMsgCreateValidator(valA, PKs[0], validCoin, Description{}, commission, sdk.OneInt())
|
|
||||||
// res, err = handler(ctx, msgCreate)
|
msgCreate = types.NewMsgCreateValidator(valA, PKs[0], validCoin, types.Description{}, commission, sdk.OneInt())
|
||||||
// require.NoError(t, err)
|
res, err = handler(ctx, msgCreate)
|
||||||
// require.NotNil(t, res)
|
require.NoError(t, err)
|
||||||
//
|
require.NotNil(t, res)
|
||||||
// msgCreate = types.NewMsgCreateValidator(valB, PKs[1], validCoin, Description{}, commission, sdk.OneInt())
|
|
||||||
// res, err = handler(ctx, msgCreate)
|
msgCreate = types.NewMsgCreateValidator(valB, PKs[1], validCoin, types.Description{}, commission, sdk.OneInt())
|
||||||
// require.NoError(t, err)
|
res, err = handler(ctx, msgCreate)
|
||||||
// require.NotNil(t, res)
|
require.NoError(t, err)
|
||||||
//
|
require.NotNil(t, res)
|
||||||
// msgDelegate := types.NewMsgDelegate(delAddr, valA, invalidCoin)
|
|
||||||
// res, err = handler(ctx, msgDelegate)
|
msgDelegate := types.NewMsgDelegate(delAddr, valA, invalidCoin)
|
||||||
// require.Error(t, err)
|
res, err = handler(ctx, msgDelegate)
|
||||||
// require.Nil(t, res)
|
require.Error(t, err)
|
||||||
//
|
require.Nil(t, res)
|
||||||
// msgDelegate = types.NewMsgDelegate(delAddr, valA, validCoin)
|
|
||||||
// res, err = handler(ctx, msgDelegate)
|
msgDelegate = types.NewMsgDelegate(delAddr, valA, validCoin)
|
||||||
// require.NoError(t, err)
|
res, err = handler(ctx, msgDelegate)
|
||||||
// require.NotNil(t, res)
|
require.NoError(t, err)
|
||||||
//
|
require.NotNil(t, res)
|
||||||
// msgUndelegate := types.NewMsgUndelegate(delAddr, valA, invalidCoin)
|
|
||||||
// res, err = handler(ctx, msgUndelegate)
|
msgUndelegate := types.NewMsgUndelegate(delAddr, valA, invalidCoin)
|
||||||
// require.Error(t, err)
|
res, err = handler(ctx, msgUndelegate)
|
||||||
// require.Nil(t, res)
|
require.Error(t, err)
|
||||||
//
|
require.Nil(t, res)
|
||||||
// msgUndelegate = types.NewMsgUndelegate(delAddr, valA, oneCoin)
|
|
||||||
// res, err = handler(ctx, msgUndelegate)
|
msgUndelegate = types.NewMsgUndelegate(delAddr, valA, oneCoin)
|
||||||
// require.NoError(t, err)
|
res, err = handler(ctx, msgUndelegate)
|
||||||
// require.NotNil(t, res)
|
require.NoError(t, err)
|
||||||
//
|
require.NotNil(t, res)
|
||||||
// msgRedelegate := types.NewMsgBeginRedelegate(delAddr, valA, valB, invalidCoin)
|
|
||||||
// res, err = handler(ctx, msgRedelegate)
|
msgRedelegate := types.NewMsgBeginRedelegate(delAddr, valA, valB, invalidCoin)
|
||||||
// require.Error(t, err)
|
res, err = handler(ctx, msgRedelegate)
|
||||||
// require.Nil(t, res)
|
require.Error(t, err)
|
||||||
//
|
require.Nil(t, res)
|
||||||
// msgRedelegate = types.NewMsgBeginRedelegate(delAddr, valA, valB, oneCoin)
|
|
||||||
// res, err = handler(ctx, msgRedelegate)
|
msgRedelegate = types.NewMsgBeginRedelegate(delAddr, valA, valB, oneCoin)
|
||||||
// require.NoError(t, err)
|
res, err = handler(ctx, msgRedelegate)
|
||||||
// require.NotNil(t, res)
|
require.NoError(t, err)
|
||||||
//}
|
require.NotNil(t, res)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue