diff options
author | tamirms <tamir@trello.com> | 2018-11-08 20:26:47 +0800 |
---|---|---|
committer | Felix Lange <fjl@users.noreply.github.com> | 2018-11-08 20:26:47 +0800 |
commit | b16cc501a88eb7c36cfd8ee9be1c0c985ef4a7d9 (patch) | |
tree | 02a92c1f7669d11c66337e32abf5f7d0ad1d178b /ethclient/ethclient_test.go | |
parent | 9313fa63f959f8a5c3609c187120711a484a4c57 (diff) | |
download | dexon-b16cc501a88eb7c36cfd8ee9be1c0c985ef4a7d9.tar dexon-b16cc501a88eb7c36cfd8ee9be1c0c985ef4a7d9.tar.gz dexon-b16cc501a88eb7c36cfd8ee9be1c0c985ef4a7d9.tar.bz2 dexon-b16cc501a88eb7c36cfd8ee9be1c0c985ef4a7d9.tar.lz dexon-b16cc501a88eb7c36cfd8ee9be1c0c985ef4a7d9.tar.xz dexon-b16cc501a88eb7c36cfd8ee9be1c0c985ef4a7d9.tar.zst dexon-b16cc501a88eb7c36cfd8ee9be1c0c985ef4a7d9.zip |
ethclient: include block hash from FilterQuery (#17996)
ethereum/go-ethereum#16734 introduced BlockHash to the FilterQuery
struct. However, ethclient was not updated to include BlockHash in the actual
RPC request.
Diffstat (limited to 'ethclient/ethclient_test.go')
-rw-r--r-- | ethclient/ethclient_test.go | 120 |
1 files changed, 119 insertions, 1 deletions
diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index 178eb2be9..3e8bf974c 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -16,7 +16,15 @@ package ethclient -import "github.com/ethereum/go-ethereum" +import ( + "fmt" + "math/big" + "reflect" + "testing" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/common" +) // Verify that Client implements the ethereum interfaces. var ( @@ -32,3 +40,113 @@ var ( // _ = ethereum.PendingStateEventer(&Client{}) _ = ethereum.PendingContractCaller(&Client{}) ) + +func TestToFilterArg(t *testing.T) { + blockHashErr := fmt.Errorf("cannot specify both BlockHash and FromBlock/ToBlock") + addresses := []common.Address{ + common.HexToAddress("0xD36722ADeC3EdCB29c8e7b5a47f352D701393462"), + } + blockHash := common.HexToHash( + "0xeb94bb7d78b73657a9d7a99792413f50c0a45c51fc62bdcb08a53f18e9a2b4eb", + ) + + for _, testCase := range []struct { + name string + input ethereum.FilterQuery + output interface{} + err error + }{ + { + "without BlockHash", + ethereum.FilterQuery{ + Addresses: addresses, + FromBlock: big.NewInt(1), + ToBlock: big.NewInt(2), + Topics: [][]common.Hash{}, + }, + map[string]interface{}{ + "address": addresses, + "fromBlock": "0x1", + "toBlock": "0x2", + "topics": [][]common.Hash{}, + }, + nil, + }, + { + "with nil fromBlock and nil toBlock", + ethereum.FilterQuery{ + Addresses: addresses, + Topics: [][]common.Hash{}, + }, + map[string]interface{}{ + "address": addresses, + "fromBlock": "0x0", + "toBlock": "latest", + "topics": [][]common.Hash{}, + }, + nil, + }, + { + "with blockhash", + ethereum.FilterQuery{ + Addresses: addresses, + BlockHash: &blockHash, + Topics: [][]common.Hash{}, + }, + map[string]interface{}{ + "address": addresses, + "blockHash": blockHash, + "topics": [][]common.Hash{}, + }, + nil, + }, + { + "with blockhash and from block", + ethereum.FilterQuery{ + Addresses: addresses, + BlockHash: &blockHash, + FromBlock: big.NewInt(1), + Topics: [][]common.Hash{}, + }, + nil, + blockHashErr, + }, + { + "with blockhash and to block", + ethereum.FilterQuery{ + Addresses: addresses, + BlockHash: &blockHash, + ToBlock: big.NewInt(1), + Topics: [][]common.Hash{}, + }, + nil, + blockHashErr, + }, + { + "with blockhash and both from / to block", + ethereum.FilterQuery{ + Addresses: addresses, + BlockHash: &blockHash, + FromBlock: big.NewInt(1), + ToBlock: big.NewInt(2), + Topics: [][]common.Hash{}, + }, + nil, + blockHashErr, + }, + } { + t.Run(testCase.name, func(t *testing.T) { + output, err := toFilterArg(testCase.input) + if (testCase.err == nil) != (err == nil) { + t.Fatalf("expected error %v but got %v", testCase.err, err) + } + if testCase.err != nil { + if testCase.err.Error() != err.Error() { + t.Fatalf("expected error %v but got %v", testCase.err, err) + } + } else if !reflect.DeepEqual(testCase.output, output) { + t.Fatalf("expected filter arg %v but got %v", testCase.output, output) + } + }) + } +} |