Add account tx admin api test
This commit is contained in:
		
							parent
							
								
									0b5fb22b25
								
							
						
					
					
						commit
						6a60d97d70
					
				@ -1,3 +1,8 @@
 | 
				
			|||||||
 | 
					# standard imports
 | 
				
			||||||
 | 
					import logging
 | 
				
			||||||
 | 
					import io
 | 
				
			||||||
 | 
					import json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# external imports
 | 
					# external imports
 | 
				
			||||||
import pytest
 | 
					import pytest
 | 
				
			||||||
from chainlib.connection import RPCConnection
 | 
					from chainlib.connection import RPCConnection
 | 
				
			||||||
@ -5,6 +10,7 @@ from chainlib.eth.nonce import OverrideNonceOracle
 | 
				
			|||||||
from chainqueue.tx import create as queue_create
 | 
					from chainqueue.tx import create as queue_create
 | 
				
			||||||
from chainlib.eth.tx import (
 | 
					from chainlib.eth.tx import (
 | 
				
			||||||
        TxFormat,
 | 
					        TxFormat,
 | 
				
			||||||
 | 
					        Tx,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
from chainlib.eth.block import block_latest
 | 
					from chainlib.eth.block import block_latest
 | 
				
			||||||
from chainlib.eth.gas import (
 | 
					from chainlib.eth.gas import (
 | 
				
			||||||
@ -24,6 +30,126 @@ from chainqueue.query import get_nonce_tx_cache
 | 
				
			|||||||
from cic_eth.api.api_admin import AdminApi
 | 
					from cic_eth.api.api_admin import AdminApi
 | 
				
			||||||
from cic_eth.eth.gas import cache_gas_data
 | 
					from cic_eth.eth.gas import cache_gas_data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					logg = logging.getLogger()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_admin_api_account(
 | 
				
			||||||
 | 
					        default_chain_spec,
 | 
				
			||||||
 | 
					        init_database,
 | 
				
			||||||
 | 
					        eth_rpc,
 | 
				
			||||||
 | 
					        eth_signer,
 | 
				
			||||||
 | 
					        agent_roles,
 | 
				
			||||||
 | 
					        contract_roles,
 | 
				
			||||||
 | 
					        celery_session_worker,
 | 
				
			||||||
 | 
					        caplog,
 | 
				
			||||||
 | 
					        ):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    nonce_oracle = OverrideNonceOracle(agent_roles['ALICE'], 42)
 | 
				
			||||||
 | 
					    gas_oracle = OverrideGasOracle(limit=21000, conn=eth_rpc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    tx_hashes_alice = []
 | 
				
			||||||
 | 
					    txs_alice = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for i in range(3):
 | 
				
			||||||
 | 
					        c = Gas(default_chain_spec, signer=eth_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle)
 | 
				
			||||||
 | 
					        (tx_hash_hex, tx_signed_raw_hex) = c.create(agent_roles['ALICE'], agent_roles['BOB'], 100 * (10 ** 6), tx_format=TxFormat.RLP_SIGNED)
 | 
				
			||||||
 | 
					        queue_create(
 | 
				
			||||||
 | 
					                default_chain_spec,
 | 
				
			||||||
 | 
					                42+i,
 | 
				
			||||||
 | 
					                agent_roles['ALICE'],
 | 
				
			||||||
 | 
					                tx_hash_hex,
 | 
				
			||||||
 | 
					                tx_signed_raw_hex,
 | 
				
			||||||
 | 
					                session=init_database,
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					        cache_gas_data(
 | 
				
			||||||
 | 
					                tx_hash_hex,
 | 
				
			||||||
 | 
					                tx_signed_raw_hex,
 | 
				
			||||||
 | 
					                default_chain_spec.asdict(),
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					        tx_hashes_alice.append(tx_hash_hex)
 | 
				
			||||||
 | 
					        txs_alice.append(tx_signed_raw_hex)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    init_database.commit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    nonce_oracle = OverrideNonceOracle(agent_roles['BOB'], 13)
 | 
				
			||||||
 | 
					    tx_hashes_bob = []
 | 
				
			||||||
 | 
					    txs_bob = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for i in range(2):
 | 
				
			||||||
 | 
					        c = Gas(default_chain_spec, signer=eth_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle)
 | 
				
			||||||
 | 
					        (tx_hash_hex, tx_signed_raw_hex) = c.create(agent_roles['BOB'], agent_roles['ALICE'], 100 * (10 ** 6), tx_format=TxFormat.RLP_SIGNED)
 | 
				
			||||||
 | 
					        queue_create(
 | 
				
			||||||
 | 
					                default_chain_spec,
 | 
				
			||||||
 | 
					                13+i,
 | 
				
			||||||
 | 
					                agent_roles['BOB'],
 | 
				
			||||||
 | 
					                tx_hash_hex,
 | 
				
			||||||
 | 
					                tx_signed_raw_hex,
 | 
				
			||||||
 | 
					                session=init_database,
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					        cache_gas_data(
 | 
				
			||||||
 | 
					                tx_hash_hex,
 | 
				
			||||||
 | 
					                tx_signed_raw_hex,
 | 
				
			||||||
 | 
					                default_chain_spec.asdict(),
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					        tx_hashes_bob.append(tx_hash_hex)
 | 
				
			||||||
 | 
					        txs_bob.append(tx_signed_raw_hex)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    init_database.commit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    api = AdminApi(eth_rpc, queue=None, call_address=contract_roles['CONTRACT_DEPLOYER'])
 | 
				
			||||||
 | 
					    r = api.account(default_chain_spec, agent_roles['ALICE'])
 | 
				
			||||||
 | 
					    assert len(r) == 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    api = AdminApi(eth_rpc, queue=None, call_address=contract_roles['CONTRACT_DEPLOYER'])
 | 
				
			||||||
 | 
					    r = api.account(default_chain_spec, agent_roles['ALICE'], include_sender=False)
 | 
				
			||||||
 | 
					    assert len(r) == 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    api = AdminApi(eth_rpc, queue=None, call_address=contract_roles['CONTRACT_DEPLOYER'])
 | 
				
			||||||
 | 
					    r = api.account(default_chain_spec, agent_roles['ALICE'], include_recipient=False)
 | 
				
			||||||
 | 
					    assert len(r) == 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_admin_api_account_writer(
 | 
				
			||||||
 | 
					        default_chain_spec,
 | 
				
			||||||
 | 
					        init_database,
 | 
				
			||||||
 | 
					        eth_rpc,
 | 
				
			||||||
 | 
					        eth_signer,
 | 
				
			||||||
 | 
					        agent_roles,
 | 
				
			||||||
 | 
					        contract_roles,
 | 
				
			||||||
 | 
					        celery_session_worker,
 | 
				
			||||||
 | 
					        caplog,
 | 
				
			||||||
 | 
					        ):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    nonce_oracle = OverrideNonceOracle(agent_roles['ALICE'], 42)
 | 
				
			||||||
 | 
					    gas_oracle = OverrideGasOracle(limit=21000, conn=eth_rpc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    c = Gas(default_chain_spec, signer=eth_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle)
 | 
				
			||||||
 | 
					    (tx_hash_hex, tx_signed_raw_hex) = c.create(agent_roles['ALICE'], agent_roles['BOB'], 100 * (10 ** 6), tx_format=TxFormat.RLP_SIGNED)
 | 
				
			||||||
 | 
					    queue_create(
 | 
				
			||||||
 | 
					            default_chain_spec,
 | 
				
			||||||
 | 
					            42,
 | 
				
			||||||
 | 
					            agent_roles['ALICE'],
 | 
				
			||||||
 | 
					            tx_hash_hex,
 | 
				
			||||||
 | 
					            tx_signed_raw_hex,
 | 
				
			||||||
 | 
					            session=init_database,
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					    cache_gas_data(
 | 
				
			||||||
 | 
					            tx_hash_hex,
 | 
				
			||||||
 | 
					            tx_signed_raw_hex,
 | 
				
			||||||
 | 
					            default_chain_spec.asdict(),
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    init_database.commit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    buf = io.StringIO()
 | 
				
			||||||
 | 
					    api = AdminApi(eth_rpc, queue=None, call_address=contract_roles['CONTRACT_DEPLOYER'])
 | 
				
			||||||
 | 
					    api.account(default_chain_spec, agent_roles['ALICE'], include_recipient=False, renderer=json.dumps, w=buf)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # TODO: improve eval
 | 
				
			||||||
 | 
					    tx = json.loads(buf.getvalue())
 | 
				
			||||||
 | 
					    assert tx['tx_hash'] == tx_hash_hex
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_registry(
 | 
					def test_registry(
 | 
				
			||||||
        eth_rpc,
 | 
					        eth_rpc,
 | 
				
			||||||
@ -92,7 +218,7 @@ def test_resend_inplace(
 | 
				
			|||||||
    init_database.commit()
 | 
					    init_database.commit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    api = AdminApi(eth_rpc, queue=None, call_address=contract_roles['CONTRACT_DEPLOYER'])
 | 
					    api = AdminApi(eth_rpc, queue=None, call_address=contract_roles['CONTRACT_DEPLOYER'])
 | 
				
			||||||
    t = api.resend(tx_hash_hex, default_chain_spec)
 | 
					    t = api.resend(tx_hash_hex, default_chain_spec, unlock=True)
 | 
				
			||||||
    r = t.get_leaf()
 | 
					    r = t.get_leaf()
 | 
				
			||||||
    assert t.successful()
 | 
					    assert t.successful()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user