Rehabilitate list tx and balances test
This commit is contained in:
158
apps/cic-eth/tests/unit/queue/test_balances.py
Normal file
158
apps/cic-eth/tests/unit/queue/test_balances.py
Normal file
@@ -0,0 +1,158 @@
|
||||
# standard imports
|
||||
import os
|
||||
import logging
|
||||
|
||||
# third-party imports
|
||||
import pytest
|
||||
|
||||
# local imports
|
||||
from cic_eth.db.models.otx import Otx
|
||||
from cic_eth.db.models.tx import TxCache
|
||||
from cic_eth.queue.balance import (
|
||||
balance_outgoing,
|
||||
balance_incoming,
|
||||
assemble_balances,
|
||||
)
|
||||
|
||||
logg = logging.getLogger()
|
||||
|
||||
|
||||
def test_assemble():
|
||||
|
||||
token_foo = '0x' + os.urandom(20).hex()
|
||||
token_bar = '0x' + os.urandom(20).hex()
|
||||
b = [
|
||||
[
|
||||
{
|
||||
'address': token_foo,
|
||||
'converters': [],
|
||||
'balance_foo': 42,
|
||||
},
|
||||
{
|
||||
'address': token_bar,
|
||||
'converters': [],
|
||||
'balance_baz': 666,
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
'address': token_foo,
|
||||
'converters': [],
|
||||
'balance_bar': 13,
|
||||
},
|
||||
|
||||
{
|
||||
'address': token_bar,
|
||||
'converters': [],
|
||||
'balance_xyzzy': 1337,
|
||||
}
|
||||
]
|
||||
]
|
||||
r = assemble_balances(b)
|
||||
logg.debug('r {}'.format(r))
|
||||
|
||||
assert r[0]['address'] == token_foo
|
||||
assert r[1]['address'] == token_bar
|
||||
assert r[0].get('balance_foo') != None
|
||||
assert r[0].get('balance_bar') != None
|
||||
assert r[1].get('balance_baz') != None
|
||||
assert r[1].get('balance_xyzzy') != None
|
||||
|
||||
|
||||
@pytest.mark.skip()
|
||||
def test_outgoing_balance(
|
||||
default_chain_spec,
|
||||
init_database,
|
||||
):
|
||||
|
||||
chain_str = str(default_chain_spec)
|
||||
recipient = '0x' + os.urandom(20).hex()
|
||||
tx_hash = '0x' + os.urandom(32).hex()
|
||||
signed_tx = '0x' + os.urandom(128).hex()
|
||||
otx = Otx.add(0, recipient, tx_hash, signed_tx, session=init_database)
|
||||
init_database.add(otx)
|
||||
init_database.commit()
|
||||
|
||||
token_address = '0x' + os.urandom(20).hex()
|
||||
sender = '0x' + os.urandom(20).hex()
|
||||
txc = TxCache(
|
||||
tx_hash,
|
||||
sender,
|
||||
recipient,
|
||||
token_address,
|
||||
token_address,
|
||||
1000,
|
||||
1000,
|
||||
)
|
||||
init_database.add(txc)
|
||||
init_database.commit()
|
||||
|
||||
token_data = {
|
||||
'address': token_address,
|
||||
'converters': [],
|
||||
}
|
||||
b = balance_outgoing([token_data], sender, chain_str)
|
||||
assert b[0]['balance_outgoing'] == 1000
|
||||
|
||||
otx.sent(session=init_database)
|
||||
init_database.commit()
|
||||
|
||||
b = balance_outgoing([token_data], sender, chain_str)
|
||||
assert b[0]['balance_outgoing'] == 1000
|
||||
|
||||
otx.success(block=1024, session=init_database)
|
||||
init_database.commit()
|
||||
|
||||
b = balance_outgoing([token_data], sender, chain_str)
|
||||
assert b[0]['balance_outgoing'] == 0
|
||||
|
||||
|
||||
@pytest.mark.skip()
|
||||
def test_incoming_balance(
|
||||
default_chain_spec,
|
||||
init_database,
|
||||
):
|
||||
|
||||
chain_str = str(default_chain_spec)
|
||||
recipient = '0x' + os.urandom(20).hex()
|
||||
tx_hash = '0x' + os.urandom(32).hex()
|
||||
signed_tx = '0x' + os.urandom(128).hex()
|
||||
otx = Otx.add(0, recipient, tx_hash, signed_tx, session=init_database)
|
||||
init_database.add(otx)
|
||||
init_database.commit()
|
||||
|
||||
token_address = '0x' + os.urandom(20).hex()
|
||||
sender = '0x' + os.urandom(20).hex()
|
||||
txc = TxCache(
|
||||
tx_hash,
|
||||
sender,
|
||||
recipient,
|
||||
token_address,
|
||||
token_address,
|
||||
1000,
|
||||
1000,
|
||||
)
|
||||
init_database.add(txc)
|
||||
init_database.commit()
|
||||
|
||||
token_data = {
|
||||
'address': token_address,
|
||||
'converters': [],
|
||||
}
|
||||
b = balance_incoming([token_data], recipient, chain_str)
|
||||
assert b[0]['balance_incoming'] == 0
|
||||
|
||||
otx.sent(session=init_database)
|
||||
init_database.commit()
|
||||
|
||||
b = balance_incoming([token_data], recipient, chain_str)
|
||||
assert b[0]['balance_incoming'] == 1000
|
||||
|
||||
otx.success(block=1024, session=init_database)
|
||||
init_database.commit()
|
||||
|
||||
b = balance_incoming([token_data], recipient, chain_str)
|
||||
assert b[0]['balance_incoming'] == 0
|
||||
|
||||
|
||||
|
||||
76
apps/cic-eth/tests/unit/queue/test_list_tx.py
Normal file
76
apps/cic-eth/tests/unit/queue/test_list_tx.py
Normal file
@@ -0,0 +1,76 @@
|
||||
# standard imports
|
||||
import logging
|
||||
|
||||
# external imports
|
||||
from chainlib.connection import RPCConnection
|
||||
from chainlib.eth.gas import RPCGasOracle
|
||||
from chainlib.eth.nonce import RPCNonceOracle
|
||||
from chainlib.eth.gas import Gas
|
||||
|
||||
# local imports
|
||||
from cic_eth.queue.tx import get_status_tx
|
||||
from cic_eth.db.enum import (
|
||||
StatusEnum,
|
||||
StatusBits,
|
||||
)
|
||||
from cic_eth.queue.tx import create as queue_create
|
||||
from cic_eth.eth.tx import cache_gas_data
|
||||
from cic_eth.queue.tx import register_tx
|
||||
from cic_eth.db.models.otx import Otx
|
||||
|
||||
logg = logging.getLogger()
|
||||
|
||||
|
||||
def test_status_tx_list(
|
||||
default_chain_spec,
|
||||
init_database,
|
||||
eth_rpc,
|
||||
eth_signer,
|
||||
agent_roles,
|
||||
):
|
||||
|
||||
rpc = RPCConnection.connect(default_chain_spec, 'default')
|
||||
|
||||
nonce_oracle = RPCNonceOracle(agent_roles['ALICE'], eth_rpc)
|
||||
gas_oracle = RPCGasOracle(eth_rpc)
|
||||
c = Gas(signer=eth_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle, chain_id=default_chain_spec.chain_id())
|
||||
|
||||
(tx_hash_hex, o) = c.create(agent_roles['ALICE'], agent_roles['BOB'], 1024)
|
||||
r = rpc.do(o)
|
||||
|
||||
tx_signed_raw_hex = o['params'][0]
|
||||
#queue_create(tx['nonce'], tx['from'], tx_hash.hex(), tx_signed['raw'], str(default_chain_spec))
|
||||
register_tx(tx_hash_hex, tx_signed_raw_hex, default_chain_spec, None, session=init_database)
|
||||
cache_gas_data(tx_hash_hex, tx_signed_raw_hex, default_chain_spec.asdict())
|
||||
|
||||
q = init_database.query(Otx)
|
||||
otx = q.get(1)
|
||||
otx.sendfail(session=init_database)
|
||||
init_database.add(otx)
|
||||
init_database.commit()
|
||||
init_database.refresh(otx)
|
||||
|
||||
txs = get_status_tx(StatusBits.LOCAL_ERROR, session=init_database)
|
||||
assert len(txs) == 1
|
||||
|
||||
otx.sendfail(session=init_database)
|
||||
otx.retry(session=init_database)
|
||||
init_database.add(otx)
|
||||
init_database.commit()
|
||||
init_database.refresh(otx)
|
||||
|
||||
txs = get_status_tx(StatusBits.LOCAL_ERROR, session=init_database)
|
||||
assert len(txs) == 1
|
||||
|
||||
txs = get_status_tx(StatusBits.QUEUED, session=init_database)
|
||||
assert len(txs) == 1
|
||||
|
||||
txs = get_status_tx(StatusBits.QUEUED, not_status=StatusBits.LOCAL_ERROR, session=init_database)
|
||||
assert len(txs) == 0
|
||||
|
||||
txs = get_status_tx(StatusBits.QUEUED, not_status=StatusBits.IN_NETWORK, session=init_database)
|
||||
assert len(txs) == 1
|
||||
|
||||
txs = get_status_tx(StatusBits.IN_NETWORK, session=init_database)
|
||||
assert len(txs) == 0
|
||||
|
||||
Reference in New Issue
Block a user