github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/rpc/web3/ethclient/client_test.go (about)

     1  // +build integration,ethereum
     2  
     3  package ethclient
     4  
     5  import (
     6  	"encoding/json"
     7  	"fmt"
     8  	"testing"
     9  
    10  	"github.com/hyperledger/burrow/crypto"
    11  	"github.com/hyperledger/burrow/encoding/web3hex"
    12  	"github.com/hyperledger/burrow/execution/solidity"
    13  	"github.com/hyperledger/burrow/rpc/rpcevents"
    14  	"github.com/hyperledger/burrow/tests/web3/web3test"
    15  	"github.com/stretchr/testify/assert"
    16  
    17  	"github.com/stretchr/testify/require"
    18  )
    19  
    20  var client = NewEthClient(web3test.GetChainRPCClient())
    21  
    22  func TestEthAccounts(t *testing.T) {
    23  	accounts, err := client.Accounts()
    24  	require.NoError(t, err)
    25  	fmt.Println(accounts)
    26  }
    27  
    28  func TestEthSendTransaction(t *testing.T) {
    29  	pk := web3test.GetPrivateKey(t)
    30  
    31  	d := new(web3hex.Decoder)
    32  	param := &EthSendTransactionParam{
    33  		From: web3hex.Encoder.Address(pk.GetAddress()),
    34  		Gas:  web3hex.Encoder.Uint64(999999),
    35  		Data: web3hex.Encoder.BytesTrim(solidity.Bytecode_EventEmitter),
    36  	}
    37  	txHash, err := client.SendTransaction(param)
    38  	require.NoError(t, err)
    39  	require.NotEmpty(t, txHash)
    40  
    41  	tx, err := client.GetTransactionByHash(txHash)
    42  	require.NoError(t, err)
    43  	assert.Greater(t, d.Uint64(tx.BlockNumber), uint64(0))
    44  
    45  	receipt, err := client.GetTransactionReceipt(txHash)
    46  	require.NoError(t, err)
    47  	assert.Equal(t, txHash, receipt.TransactionHash)
    48  
    49  	require.NoError(t, d.Err())
    50  }
    51  
    52  func TestNonExistentTransaction(t *testing.T) {
    53  	txHash := "0x990258f47aba0cf913c14cc101ddf5b589c04765429d5709f643c891442bfcf7"
    54  	receipt, err := client.GetTransactionReceipt(txHash)
    55  	require.NoError(t, err)
    56  	require.Equal(t, "", receipt.TransactionHash)
    57  	require.Equal(t, "", receipt.BlockNumber)
    58  	require.Equal(t, "", receipt.BlockHash)
    59  	tx, err := client.GetTransactionByHash(txHash)
    60  	require.NoError(t, err)
    61  	require.Equal(t, "", tx.Hash)
    62  	require.Equal(t, "", tx.BlockNumber)
    63  	require.Equal(t, "", tx.BlockHash)
    64  }
    65  
    66  func TestEthClient_GetLogs(t *testing.T) {
    67  	// TODO: make this test generate its own fixutres
    68  	filter := &Filter{
    69  		BlockRange: rpcevents.AbsoluteRange(1, 34340),
    70  		Addresses: []crypto.Address{
    71  			crypto.MustAddressFromHexString("a1e378f122fec6aa8c841397042e21bc19368768"),
    72  			crypto.MustAddressFromHexString("f73aaa468496a87675d27638878a1600b0db3c71"),
    73  		},
    74  	}
    75  	result, err := client.GetLogs(filter)
    76  	require.NoError(t, err)
    77  	bs, err := json.Marshal(result)
    78  	require.NoError(t, err)
    79  	fmt.Printf("%s\n", string(bs))
    80  }
    81  
    82  func TestEthClient_GetBlockByNumber(t *testing.T) {
    83  	block, err := client.GetBlockByNumber("latest")
    84  	require.NoError(t, err)
    85  	d := new(web3hex.Decoder)
    86  	assert.Greater(t, d.Uint64(block.Number), uint64(0))
    87  	require.NoError(t, d.Err())
    88  }
    89  
    90  func TestNetVersion(t *testing.T) {
    91  	chainID, err := client.NetVersion()
    92  	require.NoError(t, err)
    93  	require.NotEmpty(t, chainID)
    94  }
    95  
    96  func TestWeb3ClientVersion(t *testing.T) {
    97  	version, err := client.Web3ClientVersion()
    98  	require.NoError(t, err)
    99  	require.NotEmpty(t, version)
   100  }
   101  
   102  func TestEthSyncing(t *testing.T) {
   103  	result, err := client.Syncing()
   104  	require.NoError(t, err)
   105  	fmt.Printf("%#v\n", result)
   106  }
   107  
   108  func TestEthBlockNumber(t *testing.T) {
   109  	height, err := client.BlockNumber()
   110  	require.NoError(t, err)
   111  	require.Greater(t, height, uint64(0))
   112  }