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 }