69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
# external imports
|
|
import pytest
|
|
from chainlib.eth.gas import (
|
|
Gas,
|
|
RPCGasOracle,
|
|
)
|
|
from chainlib.eth.nonce import RPCNonceOracle
|
|
from chainlib.eth.block import (
|
|
block_latest,
|
|
Block,
|
|
)
|
|
from chainlib.eth.pytest.fixtures_chain import default_chain_spec
|
|
from chainlib.eth.pytest.fixtures_ethtester import *
|
|
from cic_eth_registry.pytest.fixtures_contracts import *
|
|
from hexathon import add_0x
|
|
|
|
# local imports
|
|
import cic_cache.cli
|
|
|
|
|
|
@pytest.mark.xfail()
|
|
def test_cli_rpc(
|
|
eth_rpc,
|
|
eth_signer,
|
|
default_chain_spec,
|
|
):
|
|
config = {
|
|
'CHAIN_SPEC': str(default_chain_spec),
|
|
'RPC_HTTP_PROVIDER': 'http://localhost:8545',
|
|
}
|
|
rpc = cic_cache.cli.RPC.from_config(config, default_label='foo')
|
|
conn = rpc.get_by_label('foo')
|
|
#o = block_latest()
|
|
#conn.do(o)
|
|
|
|
|
|
def test_cli_chain(
|
|
default_chain_spec,
|
|
eth_rpc,
|
|
eth_signer,
|
|
contract_roles,
|
|
):
|
|
ifc = cic_cache.cli.EthChainInterface()
|
|
|
|
nonce_oracle = RPCNonceOracle(contract_roles['CONTRACT_DEPLOYER'], conn=eth_rpc)
|
|
gas_oracle = RPCGasOracle(conn=eth_rpc)
|
|
c = Gas(default_chain_spec, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle, signer=eth_signer)
|
|
recipient = add_0x(os.urandom(20).hex())
|
|
(tx_hash, o) = c.create(contract_roles['CONTRACT_DEPLOYER'], recipient, 1024)
|
|
r = eth_rpc.do(o)
|
|
|
|
o = ifc.tx_receipt(r)
|
|
r = eth_rpc.do(o)
|
|
assert r['status'] == 1
|
|
|
|
o = ifc.block_by_number(1)
|
|
block_src = eth_rpc.do(o)
|
|
block = ifc.block_from_src(block_src)
|
|
assert block.number == 1
|
|
|
|
with pytest.raises(KeyError):
|
|
assert block_src['gasUsed'] == 21000
|
|
assert block_src['gas_used'] == 21000
|
|
|
|
block_src = ifc.src_normalize(block_src)
|
|
assert block_src['gasUsed'] == 21000
|
|
assert block_src['gas_used'] == 21000
|
|
|