github.com/devwanda/aphelion-staking@v0.33.9/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/devwanda/aphelion-staking/abci/example/kvstore" 12 "github.com/devwanda/aphelion-staking/lite2/provider" 13 "github.com/devwanda/aphelion-staking/lite2/provider/http" 14 litehttp "github.com/devwanda/aphelion-staking/lite2/provider/http" 15 rpcclient "github.com/devwanda/aphelion-staking/rpc/client" 16 rpctest "github.com/devwanda/aphelion-staking/rpc/test" 17 "github.com/devwanda/aphelion-staking/types" 18 ) 19 20 func TestNewProvider(t *testing.T) { 21 c, err := http.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 = http.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 = http.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 = 5 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 p, err := litehttp.New(chainID, rpcAddr) 56 require.Nil(t, err) 57 require.NotNil(t, p) 58 59 // let it produce some blocks 60 err = rpcclient.WaitForHeight(p.(rpcclient.StatusClient), 6, nil) 61 require.Nil(t, err) 62 63 // let's get the highest block 64 sh, err := p.SignedHeader(0) 65 66 require.Nil(t, err, "%+v", err) 67 assert.True(t, sh.Height < 5000) 68 69 // let's check this is valid somehow 70 assert.Nil(t, sh.ValidateBasic(chainID)) 71 72 // historical queries now work :) 73 lower := sh.Height - 3 74 sh, err = p.SignedHeader(lower) 75 assert.Nil(t, err, "%+v", err) 76 assert.Equal(t, lower, sh.Height) 77 78 // fetching missing heights (both future and pruned) should return appropriate errors 79 _, err = p.SignedHeader(1000) 80 require.Error(t, err) 81 assert.Equal(t, provider.ErrSignedHeaderNotFound, err) 82 83 _, err = p.ValidatorSet(1000) 84 require.Error(t, err) 85 assert.Equal(t, provider.ErrValidatorSetNotFound, err) 86 87 _, err = p.SignedHeader(1) 88 require.Error(t, err) 89 assert.Equal(t, provider.ErrSignedHeaderNotFound, err) 90 91 _, err = p.ValidatorSet(1) 92 require.Error(t, err) 93 assert.Equal(t, provider.ErrValidatorSetNotFound, err) 94 }