auth-mock simulate block now commits, stake app_test cleanup
This commit is contained in:
parent
42def02ae9
commit
17948ccf04
|
@ -237,7 +237,10 @@ func (app *BaseApp) NewContext(isCheckTx bool, header abci.Header) sdk.Context {
|
|||
if isCheckTx {
|
||||
return sdk.NewContext(app.checkState.ms, header, true, nil, app.Logger)
|
||||
}
|
||||
return sdk.NewContext(app.deliverState.ms, header, false, nil, app.Logger)
|
||||
aa := app.deliverState
|
||||
a := aa.ms
|
||||
b := app.Logger
|
||||
return sdk.NewContext(a, header, false, nil, b)
|
||||
}
|
||||
|
||||
type state struct {
|
||||
|
|
|
@ -72,6 +72,7 @@ func TestMsgChangePubKey(t *testing.T) {
|
|||
NewPubKey: priv2.PubKey(),
|
||||
}
|
||||
|
||||
mapp.BeginBlock(abci.RequestBeginBlock{})
|
||||
ctxDeliver := mapp.BaseApp.NewContext(false, abci.Header{})
|
||||
acc2 := mapp.AccountMapper.GetAccount(ctxDeliver, addr1)
|
||||
|
||||
|
@ -82,6 +83,7 @@ func TestMsgChangePubKey(t *testing.T) {
|
|||
assert.True(t, priv2.PubKey().Equals(acc2.GetPubKey()))
|
||||
|
||||
// signing a SendMsg with the old privKey should be an auth error
|
||||
mapp.BeginBlock(abci.RequestBeginBlock{})
|
||||
tx := GenTx(sendMsg1, []int64{2}, priv1)
|
||||
res := mapp.Deliver(tx)
|
||||
assert.Equal(t, sdk.ToABCICode(sdk.CodespaceRoot, sdk.CodeUnauthorized), res.Code, res.Log)
|
||||
|
|
|
@ -27,8 +27,8 @@ func SetGenesis(app *App, accs []auth.Account) {
|
|||
|
||||
// check an account balance
|
||||
func CheckBalance(t *testing.T, app *App, addr sdk.Address, exp sdk.Coins) {
|
||||
ctxDeliver := app.BaseApp.NewContext(false, abci.Header{})
|
||||
res := app.AccountMapper.GetAccount(ctxDeliver, addr)
|
||||
ctxCheck := app.BaseApp.NewContext(true, abci.Header{})
|
||||
res := app.AccountMapper.GetAccount(ctxCheck, addr)
|
||||
assert.Equal(t, exp, res.GetCoins())
|
||||
}
|
||||
|
||||
|
@ -77,25 +77,25 @@ func SignCheckDeliver(t *testing.T, app *baseapp.BaseApp, msg sdk.Msg, seq []int
|
|||
app.EndBlock(abci.RequestEndBlock{})
|
||||
|
||||
// XXX fix code or add explaination as to why using commit breaks a bunch of these tests
|
||||
//app.Commit()
|
||||
app.Commit()
|
||||
}
|
||||
|
||||
// XXX the only reason we are using Sign Deliver here is because the tests
|
||||
// break on check tx the second time you use SignCheckDeliver in a test because
|
||||
// the checktx state has not been updated likely because commit is not being
|
||||
// called!
|
||||
func SignDeliver(t *testing.T, app *baseapp.BaseApp, msg sdk.Msg, seq []int64, expPass bool, priv ...crypto.PrivKeyEd25519) {
|
||||
//func SignDeliver(t *testing.T, app *baseapp.BaseApp, msg sdk.Msg, seq []int64, expPass bool, priv ...crypto.PrivKeyEd25519) {
|
||||
|
||||
// Sign the tx
|
||||
tx := GenTx(msg, seq, priv...)
|
||||
//// Sign the tx
|
||||
//tx := GenTx(msg, seq, priv...)
|
||||
|
||||
// Simulate a Block
|
||||
app.BeginBlock(abci.RequestBeginBlock{})
|
||||
res := app.Deliver(tx)
|
||||
if expPass {
|
||||
require.Equal(t, sdk.ABCICodeOK, res.Code, res.Log)
|
||||
} else {
|
||||
require.NotEqual(t, sdk.ABCICodeOK, res.Code, res.Log)
|
||||
}
|
||||
app.EndBlock(abci.RequestEndBlock{})
|
||||
}
|
||||
//// Simulate a Block
|
||||
//app.BeginBlock(abci.RequestBeginBlock{})
|
||||
//res := app.Deliver(tx)
|
||||
//if expPass {
|
||||
//require.Equal(t, sdk.ABCICodeOK, res.Code, res.Log)
|
||||
//} else {
|
||||
//require.NotEqual(t, sdk.ABCICodeOK, res.Code, res.Log)
|
||||
//}
|
||||
//app.EndBlock(abci.RequestEndBlock{})
|
||||
//}
|
||||
|
|
|
@ -117,6 +117,7 @@ func TestMsgSendWithAccounts(t *testing.T) {
|
|||
mock.SignCheckDeliver(t, mapp.BaseApp, sendMsg1, []int64{0}, false, priv1)
|
||||
|
||||
// bumping the txnonce number without resigning should be an auth error
|
||||
mapp.BeginBlock(abci.RequestBeginBlock{})
|
||||
tx := mock.GenTx(sendMsg1, []int64{0}, priv1)
|
||||
tx.Signatures[0].Sequence = 1
|
||||
res := mapp.Deliver(tx)
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth/mock"
|
||||
"github.com/cosmos/cosmos-sdk/x/bank"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
abci "github.com/tendermint/abci/types"
|
||||
|
@ -65,6 +66,30 @@ func getInitChainer(mapp *mock.App, keeper Keeper) sdk.InitChainer {
|
|||
}
|
||||
}
|
||||
|
||||
//__________________________________________________________________________________________
|
||||
|
||||
func checkValidator(t *testing.T, mapp *mock.App, keeper Keeper,
|
||||
addr sdk.Address, expFound bool) Validator {
|
||||
|
||||
ctxCheck := mapp.BaseApp.NewContext(true, abci.Header{})
|
||||
validator, found := keeper.GetValidator(ctxCheck, addr1)
|
||||
assert.Equal(t, expFound, found)
|
||||
return validator
|
||||
}
|
||||
|
||||
func checkDelegation(t *testing.T, mapp *mock.App, keeper Keeper, delegatorAddr,
|
||||
validatorAddr sdk.Address, expFound bool, expShares sdk.Rat) {
|
||||
|
||||
ctxCheck := mapp.BaseApp.NewContext(true, abci.Header{})
|
||||
delegation, found := keeper.GetDelegation(ctxCheck, delegatorAddr, validatorAddr)
|
||||
if expFound {
|
||||
assert.True(t, found)
|
||||
assert.True(sdk.RatEq(t, expShares, delegation.Shares))
|
||||
return
|
||||
}
|
||||
assert.False(t, found)
|
||||
}
|
||||
|
||||
func TestStakeMsgs(t *testing.T) {
|
||||
mapp, keeper := getMockApp(t)
|
||||
|
||||
|
@ -82,14 +107,10 @@ func TestStakeMsgs(t *testing.T) {
|
|||
accs := []auth.Account{acc1, acc2}
|
||||
|
||||
mock.SetGenesis(mapp, accs)
|
||||
mock.CheckBalance(t, mapp, addr1, sdk.Coins{genCoin})
|
||||
mock.CheckBalance(t, mapp, addr2, sdk.Coins{genCoin})
|
||||
|
||||
// A checkTx context (true)
|
||||
ctxCheck := mapp.BaseApp.NewContext(true, abci.Header{})
|
||||
res1 := mapp.AccountMapper.GetAccount(ctxCheck, addr1)
|
||||
res2 := mapp.AccountMapper.GetAccount(ctxCheck, addr2)
|
||||
require.Equal(t, acc1, res1)
|
||||
require.Equal(t, acc2, res2)
|
||||
|
||||
////////////////////
|
||||
// Create Validator
|
||||
|
||||
description := NewDescription("foo_moniker", "", "", "")
|
||||
|
@ -97,56 +118,40 @@ func TestStakeMsgs(t *testing.T) {
|
|||
addr1, priv1.PubKey(), bondCoin, description,
|
||||
)
|
||||
mock.SignCheckDeliver(t, mapp.BaseApp, createValidatorMsg, []int64{0}, true, priv1)
|
||||
mock.CheckBalance(t, mapp, addr1, sdk.Coins{genCoin.Minus(bondCoin)})
|
||||
mapp.BeginBlock(abci.RequestBeginBlock{})
|
||||
|
||||
ctxDeliver := mapp.BaseApp.NewContext(false, abci.Header{})
|
||||
res1 = mapp.AccountMapper.GetAccount(ctxDeliver, addr1)
|
||||
require.Equal(t, sdk.Coins{genCoin.Minus(bondCoin)}, res1.GetCoins())
|
||||
validator, found := keeper.GetValidator(ctxDeliver, addr1)
|
||||
require.True(t, found)
|
||||
validator := checkValidator(t, mapp, keeper, addr1, true)
|
||||
require.Equal(t, addr1, validator.Owner)
|
||||
require.Equal(t, sdk.Bonded, validator.Status())
|
||||
require.True(sdk.RatEq(t, sdk.NewRat(10), validator.PoolShares.Bonded()))
|
||||
|
||||
// check the bond that should have been created as well
|
||||
bond, found := keeper.GetDelegation(ctxDeliver, addr1, addr1)
|
||||
require.True(sdk.RatEq(t, sdk.NewRat(10), bond.Shares))
|
||||
checkDelegation(t, mapp, keeper, addr1, addr1, true, sdk.NewRat(10))
|
||||
|
||||
////////////////////
|
||||
// Edit Validator
|
||||
|
||||
description = NewDescription("bar_moniker", "", "", "")
|
||||
editValidatorMsg := NewMsgEditValidator(
|
||||
addr1, description,
|
||||
)
|
||||
mock.SignDeliver(t, mapp.BaseApp, editValidatorMsg, []int64{1}, true, priv1)
|
||||
|
||||
validator, found = keeper.GetValidator(ctxDeliver, addr1)
|
||||
require.True(t, found)
|
||||
editValidatorMsg := NewMsgEditValidator(addr1, description)
|
||||
mock.SignCheckDeliver(t, mapp.BaseApp, editValidatorMsg, []int64{1}, true, priv1)
|
||||
validator = checkValidator(t, mapp, keeper, addr1, true)
|
||||
require.Equal(t, description, validator.Description)
|
||||
|
||||
////////////////////
|
||||
// Delegate
|
||||
|
||||
delegateMsg := NewMsgDelegate(
|
||||
addr2, addr1, bondCoin,
|
||||
)
|
||||
mock.SignDeliver(t, mapp.BaseApp, delegateMsg, []int64{0}, true, priv2)
|
||||
|
||||
res2 = mapp.AccountMapper.GetAccount(ctxDeliver, addr2)
|
||||
require.Equal(t, sdk.Coins{genCoin.Minus(bondCoin)}, res2.GetCoins())
|
||||
bond, found = keeper.GetDelegation(ctxDeliver, addr2, addr1)
|
||||
require.True(t, found)
|
||||
require.Equal(t, addr2, bond.DelegatorAddr)
|
||||
require.Equal(t, addr1, bond.ValidatorAddr)
|
||||
require.True(sdk.RatEq(t, sdk.NewRat(10), bond.Shares))
|
||||
mock.CheckBalance(t, mapp, addr2, sdk.Coins{genCoin})
|
||||
delegateMsg := NewMsgDelegate(addr2, addr1, bondCoin)
|
||||
mock.SignCheckDeliver(t, mapp.BaseApp, delegateMsg, []int64{0}, true, priv2)
|
||||
mock.CheckBalance(t, mapp, addr2, sdk.Coins{genCoin.Minus(bondCoin)})
|
||||
checkDelegation(t, mapp, keeper, addr2, addr1, true, sdk.NewRat(10))
|
||||
|
||||
////////////////////
|
||||
// Unbond
|
||||
|
||||
unbondMsg := NewMsgUnbond(
|
||||
addr2, addr1, "MAX",
|
||||
)
|
||||
mock.SignDeliver(t, mapp.BaseApp, unbondMsg, []int64{1}, true, priv2)
|
||||
|
||||
res2 = mapp.AccountMapper.GetAccount(ctxDeliver, addr2)
|
||||
require.Equal(t, sdk.Coins{genCoin}, res2.GetCoins())
|
||||
_, found = keeper.GetDelegation(ctxDeliver, addr2, addr1)
|
||||
require.False(t, found)
|
||||
unbondMsg := NewMsgUnbond(addr2, addr1, "MAX")
|
||||
mock.SignCheckDeliver(t, mapp.BaseApp, unbondMsg, []int64{1}, true, priv2)
|
||||
mock.CheckBalance(t, mapp, addr2, sdk.Coins{genCoin})
|
||||
checkDelegation(t, mapp, keeper, addr2, addr1, false, sdk.Rat{})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue