|
|
- package client
-
- import (
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/tendermint/tendermint/lite"
- liteErr "github.com/tendermint/tendermint/lite/errors"
- rpcclient "github.com/tendermint/tendermint/rpc/client"
- rpctest "github.com/tendermint/tendermint/rpc/test"
- "github.com/tendermint/tendermint/types"
- )
-
- func TestProvider(t *testing.T) {
- assert, require := assert.New(t), require.New(t)
-
- cfg := rpctest.GetConfig()
- rpcAddr := cfg.RPC.ListenAddress
- genDoc, _ := types.GenesisDocFromFile(cfg.GenesisFile())
- chainID := genDoc.ChainID
- p := NewHTTPProvider(rpcAddr)
- require.NotNil(t, p)
-
- // let it produce some blocks
- err := rpcclient.WaitForHeight(p.(*provider).node, 6, nil)
- require.Nil(err)
-
- // let's get the highest block
- seed, err := p.LatestCommit()
-
- require.Nil(err, "%+v", err)
- sh := seed.Height()
- vhash := seed.Header.ValidatorsHash
- assert.True(sh < 5000)
-
- // let's check this is valid somehow
- assert.Nil(seed.ValidateBasic(chainID))
- cert := lite.NewStaticCertifier(chainID, seed.Validators)
-
- // historical queries now work :)
- lower := sh - 5
- seed, err = p.GetByHeight(lower)
- assert.Nil(err, "%+v", err)
- assert.Equal(lower, seed.Height())
-
- // also get by hash (given the match)
- seed, err = p.GetByHash(vhash)
- require.Nil(err, "%+v", err)
- require.Equal(vhash, seed.Header.ValidatorsHash)
- err = cert.Certify(seed.Commit)
- assert.Nil(err, "%+v", err)
-
- // get by hash fails without match
- seed, err = p.GetByHash([]byte("foobar"))
- assert.NotNil(err)
- assert.True(liteErr.IsCommitNotFoundErr(err))
-
- // storing the seed silently ignored
- err = p.StoreCommit(seed)
- assert.Nil(err, "%+v", err)
- }
|