github.com/franono/tendermint@v0.32.2-0.20200527150959-749313264ce9/lite2/provider/http/http_test.go (about) 1 package http_test 2 3 import ( 4 "fmt" 5 "os" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 11 "github.com/franono/tendermint/abci/example/kvstore" 12 "github.com/franono/tendermint/lite2/provider" 13 litehttp "github.com/franono/tendermint/lite2/provider/http" 14 rpcclient "github.com/franono/tendermint/rpc/client" 15 rpchttp "github.com/franono/tendermint/rpc/client/http" 16 rpctest "github.com/franono/tendermint/rpc/test" 17 "github.com/franono/tendermint/types" 18 ) 19 20 func TestNewProvider(t *testing.T) { 21 c, err := litehttp.New("chain-test", "192.168.0.1:26657") 22 require.NoError(t, err) 23 require.Equal(t, fmt.Sprintf("%s", c), "http{http://192.168.0.1:26657}") 24 25 c, err = litehttp.New("chain-test", "http://153.200.0.1:26657") 26 require.NoError(t, err) 27 require.Equal(t, fmt.Sprintf("%s", c), "http{http://153.200.0.1:26657}") 28 29 c, err = litehttp.New("chain-test", "153.200.0.1") 30 require.NoError(t, err) 31 require.Equal(t, fmt.Sprintf("%s", c), "http{http://153.200.0.1}") 32 } 33 34 func TestMain(m *testing.M) { 35 app := kvstore.NewApplication() 36 app.RetainBlocks = 9 37 node := rpctest.StartTendermint(app) 38 39 code := m.Run() 40 41 rpctest.StopTendermint(node) 42 os.Exit(code) 43 } 44 45 func TestProvider(t *testing.T) { 46 cfg := rpctest.GetConfig() 47 defer os.RemoveAll(cfg.RootDir) 48 rpcAddr := cfg.RPC.ListenAddress 49 genDoc, err := types.GenesisDocFromFile(cfg.GenesisFile()) 50 if err != nil { 51 panic(err) 52 } 53 chainID := genDoc.ChainID 54 t.Log("chainID:", chainID) 55 56 c, err := rpchttp.New(rpcAddr, "/websocket") 57 require.Nil(t, err) 58 59 p := litehttp.NewWithClient(chainID, c) 60 require.NoError(t, err) 61 require.NotNil(t, p) 62 63 // let it produce some blocks 64 err = rpcclient.WaitForHeight(c, 10, nil) 65 require.NoError(t, err) 66 67 // let's get the highest block 68 sh, err := p.SignedHeader(0) 69 70 require.NoError(t, err) 71 assert.True(t, sh.Height < 1000) 72 73 // let's check this is valid somehow 74 assert.Nil(t, sh.ValidateBasic(chainID)) 75 76 // historical queries now work :) 77 lower := sh.Height - 3 78 sh, err = p.SignedHeader(lower) 79 require.NoError(t, err) 80 assert.Equal(t, lower, sh.Height) 81 82 // fetching missing heights (both future and pruned) should return appropriate errors 83 _, err = p.SignedHeader(1000) 84 require.Error(t, err) 85 assert.Equal(t, provider.ErrSignedHeaderNotFound, err) 86 87 _, err = p.ValidatorSet(1000) 88 require.Error(t, err) 89 assert.Equal(t, provider.ErrValidatorSetNotFound, err) 90 91 _, err = p.SignedHeader(1) 92 require.Error(t, err) 93 assert.Equal(t, provider.ErrSignedHeaderNotFound, err) 94 95 _, err = p.ValidatorSet(1) 96 require.Error(t, err) 97 assert.Equal(t, provider.ErrValidatorSetNotFound, err) 98 }