json-rpc(filters) fix block hash on newBlock filter (#1503)

* tests(filters) add block hash check on newBlock filter

* tests(filters) fix linting errors

* fix(filters): fix newBlock filter response

* fix(filters): add changes on CHANGELOG file
This commit is contained in:
Tomas Guerra
2022-11-30 08:19:58 -03:00
committed by GitHub
parent 7f196ce451
commit fac43e57b8
4 changed files with 30 additions and 11 deletions
+12 -2
View File
@@ -21,6 +21,10 @@ def test_pending_transaction_filter(cluster):
txhash = send_successful_transaction(w3)
assert txhash in flt.get_new_entries()
# check if tx_hash is valid
tx = w3.eth.get_transaction(txhash)
assert tx.hash == txhash
# without new txs since last call
assert flt.get_new_entries() == []
@@ -34,8 +38,14 @@ def test_block_filter(cluster):
# with tx
send_successful_transaction(w3)
blocks = flt.get_new_entries()
assert len(blocks) >= 1
block_hashes = flt.get_new_entries()
assert len(block_hashes) >= 1
# check if the returned block hash is correct
# getBlockByHash
block = w3.eth.get_block(block_hashes[0])
# block should exist
assert block.hash == block_hashes[0]
# without new txs since last call
assert flt.get_new_entries() == []
+16 -5
View File
@@ -12,6 +12,7 @@ from dotenv import load_dotenv
from eth_account import Account
from hexbytes import HexBytes
from web3._utils.transactions import fill_nonce, fill_transaction_defaults
from web3.exceptions import TimeExhausted
load_dotenv(Path(__file__).parent.parent.parent / "scripts/.env")
Account.enable_unaudited_hdwallet_features()
@@ -149,17 +150,27 @@ def sign_transaction(w3, tx, key=KEYS["validator"]):
return acct.sign_transaction(tx)
def send_transaction(w3, tx, key=KEYS["validator"]):
def send_transaction(w3, tx, key=KEYS["validator"], i=0):
if i > 3:
raise TimeExhausted
signed = sign_transaction(w3, tx, key)
txhash = w3.eth.send_raw_transaction(signed.rawTransaction)
return w3.eth.wait_for_transaction_receipt(txhash)
try:
return w3.eth.wait_for_transaction_receipt(txhash, timeout=20)
except TimeExhausted:
return send_transaction(w3, tx, key, i + 1)
def send_successful_transaction(w3):
def send_successful_transaction(w3, i=0):
if i > 3:
raise TimeExhausted
signed = sign_transaction(w3, {"to": ADDRS["community"], "value": 1000})
txhash = w3.eth.send_raw_transaction(signed.rawTransaction)
receipt = w3.eth.wait_for_transaction_receipt(txhash)
assert receipt.status == 1
try:
receipt = w3.eth.wait_for_transaction_receipt(txhash, timeout=20)
assert receipt.status == 1
except TimeExhausted:
return send_successful_transaction(w3, i + 1)
return txhash