Skip to content
This repository has been archived by the owner on Apr 4, 2024. It is now read-only.

tests(filters) add logs by topic test case #1515

Merged
merged 8 commits into from
Dec 1, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
, rev ? "dirty"
}:
let
version = "v0.17.1";
version = "v0.20.0-rc2";
pname = "ethermintd";
tags = [ "netgo" ];
ldflags = lib.concatStringsSep "\n" ([
Expand Down
30 changes: 30 additions & 0 deletions tests/integration_tests/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
deploy_contract,
send_successful_transaction,
send_transaction,
w3_wait_for_new_blocks,
)

# Smart contract names
Expand All @@ -21,6 +22,35 @@
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")
Expand Down