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 7 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