Revision 5f5e0e1d027d42d8ed3516d520ddaa10830ffc9e authored by Erik Grinaker on 14 February 2020, 13:41:18 UTC, committed by GitHub on 14 February 2020, 13:41:18 UTC
The .PHONY targets in the Makefile are usually placed far away from the actual targets, and thus aren't always updated. Placing the .PHONY targets right next to the targets they cover make them more visible and thus more likely to be updated when necessary.
1 parent 3b5794f
Raw File
base_verifier_test.go
package lite

import (
	"testing"

	"github.com/stretchr/testify/assert"

	lerr "github.com/tendermint/tendermint/lite/errors"
	"github.com/tendermint/tendermint/types"
)

func TestBaseCert(t *testing.T) {
	assert := assert.New(t)

	keys := genPrivKeys(4)
	// 20, 30, 40, 50 - the first 3 don't have 2/3, the last 3 do!
	vals := keys.ToValidators(20, 10)
	// and a Verifier based on our known set
	chainID := "test-static"
	cert := NewBaseVerifier(chainID, 2, vals)

	cases := []struct {
		keys        privKeys
		vals        *types.ValidatorSet
		height      int64
		first, last int  // who actually signs
		proper      bool // true -> expect no error
		changed     bool // true -> expect validator change error
	}{
		// height regression
		{keys, vals, 1, 0, len(keys), false, false},
		// perfect, signed by everyone
		{keys, vals, 2, 0, len(keys), true, false},
		// skip little guy is okay
		{keys, vals, 3, 1, len(keys), true, false},
		// but not the big guy
		{keys, vals, 4, 0, len(keys) - 1, false, false},
		// Changing the power a little bit breaks the static validator.
		// The sigs are enough, but the validator hash is unknown.
		{keys, keys.ToValidators(20, 11), 5, 0, len(keys), false, true},
	}

	for _, tc := range cases {
		sh := tc.keys.GenSignedHeader(chainID, tc.height, nil, tc.vals, tc.vals,
			[]byte("foo"), []byte("params"), []byte("results"), tc.first, tc.last)
		err := cert.Verify(sh)
		if tc.proper {
			assert.Nil(err, "%+v", err)
		} else {
			assert.NotNil(err)
			if tc.changed {
				assert.True(lerr.IsErrUnexpectedValidators(err), "%+v", err)
			}
		}
	}
}
back to top