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  }