tests(filters): add logs by topic test case (#1515)
* tests(filters) add logs by topic test case * fix(logs): add getLogs http call in test * tests(logs) add test case for getLogs by topic * tests(logs) fix lint errors
This commit is contained in:
parent
7f8b51e4c6
commit
7a042c488c
@ -3,7 +3,7 @@
|
||||
, rev ? "dirty"
|
||||
}:
|
||||
let
|
||||
version = "v0.17.1";
|
||||
version = "v0.20.0-rc2";
|
||||
pname = "ethermintd";
|
||||
tags = [ "netgo" ];
|
||||
ldflags = lib.concatStringsSep "\n" ([
|
||||
|
@ -9,6 +9,7 @@ from .utils import (
|
||||
deploy_contract,
|
||||
send_successful_transaction,
|
||||
send_transaction,
|
||||
w3_wait_for_new_blocks,
|
||||
)
|
||||
|
||||
# Smart contract names
|
||||
@ -21,6 +22,35 @@ CHANGE_GREETING_TOPIC = Web3.keccak(text="ChangeGreeting(address,string)")
|
||||
TRANSFER_TOPIC = Web3.keccak(text="Transfer(address,address,uint256)")
|
||||
|
||||
|
||||
def test_get_logs_by_topic(cluster):
|
||||
w3: Web3 = cluster.w3
|
||||
|
||||
contract, _ = deploy_contract(w3, CONTRACTS["Greeter"])
|
||||
|
||||
topic = Web3.keccak(text="ChangeGreeting(address,string)")
|
||||
|
||||
# with tx
|
||||
tx = contract.functions.setGreeting("world").build_transaction()
|
||||
receipt = send_transaction(w3, tx)
|
||||
assert receipt.status == 1
|
||||
|
||||
# The getLogs method under the hood works as a filter
|
||||
# with the specified topics and a block range.
|
||||
# If the block range is not specified, it defaults
|
||||
# to fromBlock: "latest", toBlock: "latest".
|
||||
# Then, if we make a getLogs call within the same block that the tx
|
||||
# happened, we will get a log in the result. However, if we make the call
|
||||
# one or more blocks later, the result will be an empty array.
|
||||
logs = w3.eth.get_logs({"topics": [topic.hex()]})
|
||||
|
||||
assert len(logs) == 1
|
||||
assert logs[0]["address"] == contract.address
|
||||
|
||||
w3_wait_for_new_blocks(w3, 2)
|
||||
logs = w3.eth.get_logs({"topics": [topic.hex()]})
|
||||
assert len(logs) == 0
|
||||
|
||||
|
||||
def test_pending_transaction_filter(cluster):
|
||||
w3: Web3 = cluster.w3
|
||||
flt = w3.eth.filter("pending")
|
||||
|
Loading…
Reference in New Issue
Block a user