# standard imports import unittest import logging # external imports from chainlib.eth.nonce import ( RPCNonceOracle, nonce, ) from chainlib.eth.gas import ( RPCGasOracle, OverrideGasOracle, ) from chainlib.eth.tx import ( TxFormat, unpack, receipt, ) from hexathon import strip_0x from giftable_erc20_token import GiftableToken from eth_token_index import TokenUniqueSymbolIndex # local imports from cic.ext.eth import CICEth # test imports from tests.eth.base_eth import TestCICEthTokenBase logging.basicConfig(level=logging.DEBUG) logg = logging.getLogger() class TestCICEthRPC(TestCICEthTokenBase): def setUp(self): super(TestCICEthRPC, self).setUp() nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc) gas_oracle = RPCGasOracle(self.rpc) self.adapter = CICEth(self.chain_spec, self.resources, self.proofs, signer=self.signer, rpc=self.rpc, fee_oracle=gas_oracle) def test_rpc_process_notoken(self): results = self.adapter.process() for hsh in results: logg.debug('hsh {}'.format(hsh)) o = receipt(hsh) r = self.rpc.do(o) self.assertEqual(r['status'], 1) def test_rpc_process_withtoken(self): self.adapter.fee_oracle = OverrideGasOracle(limit=GiftableToken.gas(), conn=self.rpc) self.adapter.prepare_token(self.token_name, self.token_symbol, self.token_precision, GiftableToken.bytecode()) results = self.adapter.process() for hsh in results: logg.debug('hsh {}'.format(hsh)) o = receipt(hsh) r = self.rpc.do(o) self.assertEqual(r['status'], 1) o = receipt(results[0]) r = self.rpc.do(o) token_contract_address = r['contract_address'] c = TokenUniqueSymbolIndex(self.chain_spec) o = c.address_of(self.token_index_address, 'FOO', sender_address=self.accounts[0]) r = self.rpc.do(o) token_contract_address_lookup = c.parse_address_of(r) self.assertEqual(strip_0x(token_contract_address), strip_0x(token_contract_address_lookup)) if __name__ == '__main__': unittest.main()