Write tx proof tests

This commit is contained in:
Alexis Sellier 2017-08-10 14:25:17 +02:00
parent 388f0eece7
commit f9c3fce5b4
1 changed files with 39 additions and 0 deletions

View File

@ -14,6 +14,7 @@ import (
nm "github.com/tendermint/tendermint/node"
"github.com/tendermint/tendermint/rpc/client"
rpctest "github.com/tendermint/tendermint/rpc/test"
"github.com/tendermint/tendermint/types"
"github.com/tendermint/tmlibs/log"
"github.com/tendermint/basecoin/app"
@ -85,3 +86,41 @@ func TestAppProofs(t *testing.T) {
err = proofNotExists.Verify(k, proofNotExists.RootHash)
assert.NotNil(err)
}
func TestTxProofs(t *testing.T) {
assert, require := assert.New(t), require.New(t)
cl := client.NewLocal(node)
client.WaitForHeight(cl, 1, nil)
tx := eyes.SetTx{Key: []byte("key-a"), Value: []byte("value-a")}.Wrap()
btx := types.Tx(wire.BinaryBytes(tx))
br, err := cl.BroadcastTxCommit(btx)
require.Nil(err, "%+v", err)
require.EqualValues(0, br.CheckTx.Code, "%#v", br.CheckTx)
require.EqualValues(0, br.DeliverTx.Code)
source := certclient.New(cl)
seed, err := source.GetByHeight(br.Height - 2)
require.Nil(err, "%+v", err)
cert := certifiers.NewStatic("my-chain", seed.Validators)
// First let's make sure a bogus transaction hash returns a valid non-existence proof.
key := types.Tx([]byte("bogus")).Hash()
bs, _, proofExists, proofNotExists, err := getWithProof(key, cl, cert)
assert.Nil(bs, "value should be nil")
require.True(lc.IsNoDataErr(err), "error should signal 'no data'")
assert.Nil(proofExists, "existence proof should be nil")
require.NotNil(proofNotExists, "non-existence proof shouldn't be nil")
err = proofNotExists.Verify(key, proofNotExists.RootHash)
require.Nil(err, "%+v", err)
// Now let's check with the real tx hash.
key = btx.Hash()
res, err := cl.Tx(key, true)
require.Nil(err, "%+v", err)
require.NotNil(res)
err = res.Proof.Validate(key)
assert.Nil(err, "%+v", err)
}