- package state
-
- import (
- "testing"
-
- "github.com/stretchr/testify/require"
- "github.com/tendermint/tendermint/crypto/ed25519"
- dbm "github.com/tendermint/tendermint/libs/db"
- "github.com/tendermint/tendermint/libs/log"
- )
-
- func TestValidateBlock(t *testing.T) {
- state, _ := state(1, 1)
-
- blockExec := NewBlockExecutor(dbm.NewMemDB(), log.TestingLogger(), nil, nil, nil)
-
- // proper block must pass
- block := makeBlock(state, 1)
- err := blockExec.ValidateBlock(state, block)
- require.NoError(t, err)
-
- // wrong chain fails
- block = makeBlock(state, 1)
- block.ChainID = "not-the-real-one"
- err = blockExec.ValidateBlock(state, block)
- require.Error(t, err)
-
- // wrong height fails
- block = makeBlock(state, 1)
- block.Height += 10
- err = blockExec.ValidateBlock(state, block)
- require.Error(t, err)
-
- // wrong total tx fails
- block = makeBlock(state, 1)
- block.TotalTxs += 10
- err = blockExec.ValidateBlock(state, block)
- require.Error(t, err)
-
- // wrong blockid fails
- block = makeBlock(state, 1)
- block.LastBlockID.PartsHeader.Total += 10
- err = blockExec.ValidateBlock(state, block)
- require.Error(t, err)
-
- // wrong app hash fails
- block = makeBlock(state, 1)
- block.AppHash = []byte("wrong app hash")
- err = blockExec.ValidateBlock(state, block)
- require.Error(t, err)
-
- // wrong consensus hash fails
- block = makeBlock(state, 1)
- block.ConsensusHash = []byte("wrong consensus hash")
- err = blockExec.ValidateBlock(state, block)
- require.Error(t, err)
-
- // wrong results hash fails
- block = makeBlock(state, 1)
- block.LastResultsHash = []byte("wrong results hash")
- err = blockExec.ValidateBlock(state, block)
- require.Error(t, err)
-
- // wrong validators hash fails
- block = makeBlock(state, 1)
- block.ValidatorsHash = []byte("wrong validators hash")
- err = blockExec.ValidateBlock(state, block)
- require.Error(t, err)
-
- // wrong proposer address
- block = makeBlock(state, 1)
- block.ProposerAddress = ed25519.GenPrivKey().PubKey().Address()
- err = blockExec.ValidateBlock(state, block)
- require.Error(t, err)
- block.ProposerAddress = []byte("wrong size")
- err = blockExec.ValidateBlock(state, block)
- require.Error(t, err)
- }
|