Pass tests with new uniform filter constructor signature

This commit is contained in:
lash
2022-04-23 07:09:48 +00:00
parent a8e822e2c1
commit cdb26b558f
17 changed files with 115 additions and 88 deletions

View File

@@ -1,3 +1,6 @@
# external imports
from cic_eth_registry import CICRegistry
# local imports
from cic_sync_filter.gas import GasFilter
from cic_sync_filter.transferauth import TransferAuthFilter
@@ -21,13 +24,17 @@ def test_filter_bogus(
account_registry,
):
queue = None
registry = CICRegistry(default_chain_spec, eth_rpc)
fltrs = [
TransferAuthFilter(cic_registry, default_chain_spec, eth_rpc, call_address=contract_roles['CONTRACT_DEPLOYER']),
GasFilter(default_chain_spec, queue=None),
TxFilter(default_chain_spec, None),
CallbackFilter(default_chain_spec, None, None, caller_address=contract_roles['CONTRACT_DEPLOYER']),
StragglerFilter(default_chain_spec, None),
RegistrationFilter(default_chain_spec, account_registry, queue=None),
#TransferAuthFilter(registry, default_chain_spec, eth_rpc, call_address=contract_roles['CONTRACT_DEPLOYER']),
GasFilter(default_chain_spec, registry, queue, caller_address=contract_roles['CONTRACT_DEPLOYER']),
TxFilter(default_chain_spec, registry, queue, caller_address=contract_roles['CONTRACT_DEPLOYER']),
CallbackFilter(default_chain_spec, registry, queue, caller_address=contract_roles['CONTRACT_DEPLOYER']),
StragglerFilter(default_chain_spec, registry, queue, caller_address=contract_roles['CONTRACT_DEPLOYER']),
RegistrationFilter(default_chain_spec, registry, queue, caller_address=contract_roles['CONTRACT_DEPLOYER']),
]
for fltr in fltrs:

View File

@@ -229,7 +229,7 @@ def test_callback_filter_filter(
mock = CallbackMock()
fltr.call_back = mock.call_back
fltr.filter(eth_rpc, mockblock, tx) #, init_database)
fltr.filter(eth_rpc, mockblock, tx)
assert mock.results.get('transfer') != None
assert mock.results['transfer']['destination_token'] == strip_0x(foo_token)

View File

@@ -41,6 +41,7 @@ def test_filter_gas(
eth_signer,
agent_roles,
celery_session_worker,
contract_roles,
):
rpc = RPCConnection.connect(default_chain_spec, 'default')
@@ -87,7 +88,8 @@ def test_filter_gas(
)
init_database.commit()
fltr = GasFilter(default_chain_spec, queue=None)
queue = None
fltr = GasFilter(default_chain_spec, None, queue, caller_address=contract_roles['CONTRACT_DEPLOYER'])
o = block_latest()
r = eth_rpc.do(o)

View File

@@ -6,11 +6,15 @@ import os
from eth_accounts_index.registry import AccountRegistry
from chainlib.connection import RPCConnection
from chainlib.eth.nonce import RPCNonceOracle
from chainlib.eth.gas import OverrideGasOracle
from chainlib.eth.gas import (
OverrideGasOracle,
Gas,
)
from chainlib.eth.tx import(
receipt,
unpack,
Tx,
TxFormat,
)
from chainlib.eth.block import (
block_latest,
@@ -26,6 +30,7 @@ from hexathon import (
add_0x,
)
from cic_eth.queue.query import get_account_tx_local
from cic_eth_registry import CICRegistry
# local imports
from cic_sync_filter.register import RegistrationFilter
@@ -72,14 +77,11 @@ def test_register_filter(
tx = Tx(tx_src, block=block, rcpt=rcpt)
tx.apply_receipt(rcpt)
fltr = RegistrationFilter(default_chain_spec, to_checksum_address(os.urandom(20).hex()), queue=None)
registry = CICRegistry(default_chain_spec, eth_rpc)
queue = None
fltr = RegistrationFilter(default_chain_spec, registry, queue, caller_address=contract_roles['CONTRACT_DEPLOYER'])
t = fltr.filter(eth_rpc, block, tx, db_session=init_database)
assert t == None
fltr = RegistrationFilter(default_chain_spec, to_checksum_address(account_registry), queue=None)
t = fltr.filter(eth_rpc, block, tx, db_session=init_database)
logg.debug('t {}'.format(t))
assert t != None
t.get_leaf()
assert t.successful()
@@ -93,3 +95,49 @@ def test_register_filter(
gift = Faucet.parse_give_to_request(gift_tx['data'])
assert add_0x(gift[0]) == agent_roles['ALICE']
def test_register_filter_nomatch(
default_chain_spec,
init_database,
eth_rpc,
eth_signer,
account_registry,
faucet,
register_lookups,
contract_roles,
agent_roles,
cic_registry,
init_celery_tasks,
celery_session_worker,
caplog,
):
nonce_oracle = RPCNonceOracle(contract_roles['ACCOUNT_REGISTRY_WRITER'], conn=eth_rpc)
gas_oracle = OverrideGasOracle(limit=AccountRegistry.gas(), conn=eth_rpc)
c = Gas(default_chain_spec, signer=eth_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle)
(tx_hash_hex, o) = c.create(agent_roles['ALICE'], agent_roles['BOB'], 100 * (10 ** 6))
r = eth_rpc.do(o)
tx_signed_raw_bytes = bytes.fromhex(strip_0x(o['params'][0]))
o = receipt(tx_hash_hex)
rcpt = eth_rpc.do(o)
assert rcpt['status'] == 1
o = block_latest()
r = eth_rpc.do(o)
o = block_by_number(r, include_tx=False)
r = eth_rpc.do(o)
block = Block(r)
block.txs = [tx_hash_hex]
tx_src = unpack(tx_signed_raw_bytes, default_chain_spec)
tx = Tx(tx_src, block=block, rcpt=rcpt)
tx.apply_receipt(rcpt)
registry = CICRegistry(default_chain_spec, eth_rpc)
queue = None
fltr = RegistrationFilter(default_chain_spec, registry, queue, caller_address=contract_roles['CONTRACT_DEPLOYER'])
t = fltr.filter(eth_rpc, block, tx, db_session=init_database)
assert t == None

View File

@@ -2,6 +2,7 @@
import logging
# external imports
import pytest
from chainlib.connection import RPCConnection
from chainlib.eth.nonce import (
OverrideNonceOracle,
@@ -31,6 +32,7 @@ from chainqueue.sql.state import (
set_sent,
set_waitforgas,
)
from cic_eth.error import OutOfGasError
from hexathon import (
strip_0x,
@@ -55,6 +57,7 @@ def test_straggler_tx(
eth_signer,
agent_roles,
celery_session_worker,
contract_roles,
):
rpc = RPCConnection.connect(default_chain_spec, 'default')
@@ -80,7 +83,8 @@ def test_straggler_tx(
set_reserved(default_chain_spec, tx_hash_hex, session=init_database)
set_sent(default_chain_spec, tx_hash_hex, session=init_database)
fltr = StragglerFilter(default_chain_spec, 0, queue=None)
queue = None
fltr = StragglerFilter(default_chain_spec, None, queue, caller_address=contract_roles['CONTRACT_DEPLOYER'])
o = block_latest()
r = eth_rpc.do(o)
@@ -117,6 +121,7 @@ def test_waitforgas_tx(
agent_roles,
celery_session_worker,
whoever,
contract_roles,
):
safe_gas = 1000000000000000000
@@ -143,7 +148,9 @@ def test_waitforgas_tx(
set_ready(default_chain_spec, tx_hash_hex, session=init_database)
set_waitforgas(default_chain_spec, tx_hash_hex, session=init_database)
fltr = StragglerFilter(default_chain_spec, safe_gas, queue=None)
queue = None
StragglerFilter.gas_balance_threshold = safe_gas
fltr = StragglerFilter(default_chain_spec, None, queue, caller_address=contract_roles['CONTRACT_DEPLOYER'])
o = block_latest()
r = eth_rpc.do(o)

View File

@@ -26,6 +26,7 @@ from eth_token_index import TokenUniqueSymbolIndex
from cic_eth_registry.error import UnknownContractError
from cic_eth.db.models.gas_cache import GasCache
from cic_eth.db.models.base import SessionBase
from cic_eth_registry import CICRegistry
# local imports
from cic_sync_filter.token import TokenFilter
@@ -58,7 +59,8 @@ def test_filter_gas(
rcpt = eth_rpc.do(o)
assert rcpt['status'] == 1
fltr = TokenFilter(default_chain_spec, queue=None, call_address=agent_roles['ALICE'])
registry = CICRegistry(default_chain_spec, eth_rpc)
fltr = TokenFilter(default_chain_spec, registry, queue=None, caller_address=agent_roles['ALICE'])
o = block_latest()
r = eth_rpc.do(o)
@@ -119,8 +121,9 @@ def test_filter_unknown_contract_error(
gas_oracle = OverrideGasOracle(price=1000000000, limit=1000000)
c = ERC20(default_chain_spec, signer=eth_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle)
(tx_hash_hex, tx_signed_raw_hex) = c.transfer(foo_token, token_roles['FOO_TOKEN_OWNER'], agent_roles['ALICE'], 100, tx_format=TxFormat.RLP_SIGNED)
fltr = TokenFilter(default_chain_spec, queue=None, call_address=agent_roles['ALICE'])
registry = CICRegistry(default_chain_spec, eth_rpc)
fltr = TokenFilter(default_chain_spec, registry, queue=None, caller_address=agent_roles['ALICE'])
tx_signed_raw_bytes = bytes.fromhex(strip_0x(tx_signed_raw_hex))
tx_src = unpack(tx_signed_raw_bytes, default_chain_spec)
tx = Tx(tx_src)

View File

@@ -84,7 +84,8 @@ def test_filter_tx(
set_reserved(default_chain_spec, tx_hash_hex, session=init_database)
set_sent(default_chain_spec, tx_hash_hex, session=init_database)
fltr = TxFilter(default_chain_spec, None)
queue = None
fltr = TxFilter(default_chain_spec, None, queue)
o = block_latest()
r = eth_rpc.do(o)