From 75f670347a9dfdaf2b1f482eb0e6d7615bc132c9 Mon Sep 17 00:00:00 2001 From: nolash Date: Mon, 26 Jul 2021 12:03:34 +0200 Subject: [PATCH] Add cli tests to cic-cachE --- apps/cic-cache/tests/cli/test_cli_args.py | 40 +++++++++++ apps/cic-cache/tests/cli/test_cli_celery.py | 17 +++++ apps/cic-cache/tests/cli/test_cli_chain.py | 68 +++++++++++++++++++ apps/cic-cache/tests/testdata/config/test.ini | 2 + 4 files changed, 127 insertions(+) create mode 100644 apps/cic-cache/tests/cli/test_cli_args.py create mode 100644 apps/cic-cache/tests/cli/test_cli_celery.py create mode 100644 apps/cic-cache/tests/cli/test_cli_chain.py create mode 100644 apps/cic-cache/tests/testdata/config/test.ini diff --git a/apps/cic-cache/tests/cli/test_cli_args.py b/apps/cic-cache/tests/cli/test_cli_args.py new file mode 100644 index 00000000..6e0c8a26 --- /dev/null +++ b/apps/cic-cache/tests/cli/test_cli_args.py @@ -0,0 +1,40 @@ +# standard imports +import os + +# external imports +import chainlib.cli + +# local imports +import cic_cache.cli + +script_dir = os.path.dirname(os.path.realpath(__file__)) +config_dir = os.path.join(script_dir, '..', 'testdata', 'config') + + +def test_argumentparserto_config(): + + argparser = cic_cache.cli.ArgumentParser() + + local_flags = 0xffff + argparser.process_local_flags(local_flags) + argparser.add_argument('--foo', type=str) + args = argparser.parse_args([ + '-q', 'baz', + '--offset', '13', + '--no-history', + '-r','0xdeadbeef', + '-vv', + '--foo', 'bar', + ]) + + extra_args = { + 'foo': '_BARBARBAR', + } + config = cic_cache.cli.Config.from_args(args, chainlib.cli.argflag_std_base, local_flags, extra_args=extra_args, base_config_dir=config_dir) + + assert config.get('_BARBARBAR') == 'bar' + assert config.get('CELERY_QUEUE') == 'baz' + assert config.get('SYNCER_NO_HISTORY') == True + assert config.get('SYNCER_OFFSET') == 13 + assert config.get('CIC_REGISTRY_ADDRESS') == '0xdeadbeef' + diff --git a/apps/cic-cache/tests/cli/test_cli_celery.py b/apps/cic-cache/tests/cli/test_cli_celery.py new file mode 100644 index 00000000..81d975af --- /dev/null +++ b/apps/cic-cache/tests/cli/test_cli_celery.py @@ -0,0 +1,17 @@ +# standard imports +import tempfile + +# local imports +import cic_cache.cli + + +def test_cli_celery(): + cf = tempfile.mkdtemp() + + config = { + 'CELERY_RESULT_URL': 'filesystem://' + cf, + } + cic_cache.cli.CeleryApp.from_config(config) + + config['CELERY_BROKER_URL'] = 'filesystem://' + cf + cic_cache.cli.CeleryApp.from_config(config) diff --git a/apps/cic-cache/tests/cli/test_cli_chain.py b/apps/cic-cache/tests/cli/test_cli_chain.py new file mode 100644 index 00000000..0cf9d5da --- /dev/null +++ b/apps/cic-cache/tests/cli/test_cli_chain.py @@ -0,0 +1,68 @@ +# 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 + diff --git a/apps/cic-cache/tests/testdata/config/test.ini b/apps/cic-cache/tests/testdata/config/test.ini new file mode 100644 index 00000000..70903618 --- /dev/null +++ b/apps/cic-cache/tests/testdata/config/test.ini @@ -0,0 +1,2 @@ +[foo] +bar_baz = xyzzy