def test_get_and_has__name_only(): """Tests get() and has() from name-only queries, which also call _load() and read_abi_from_file().""" contract = ContractHandler.get("DataTokenTemplate") assert contract.address[:2] == "0x" assert "totalSupply" in str(contract.abi) assert ContractHandler.has("DataTokenTemplate") assert not ContractHandler.has("foo name")
def __init__(self, address: [str, None], abi_path=None): self.name = self.contract_name assert self.name, 'contract_name property needs to be implemented in subclasses.' if not abi_path: abi_path = ContractHandler.artifacts_path assert abi_path, f'abi_path is required, got {abi_path}' self.contract_concise = ContractHandler.get_concise_contract(self.name, address) self.contract = ContractHandler.get(self.name, address) assert not address or (self.contract.address == address and self.address == address) assert self.contract_concise is not None
def test_get_and_has__name_and_address(network, example_config): """Tests get() and has() from (name, address) queries, which also call _load() and read_abi_from_file().""" addresses = ContractHandler.get_contracts_addresses( network, example_config.address_file) target_address = addresses["DTFactory"] contract = ContractHandler.get("DTFactory", target_address) assert "createToken" in str(contract.abi) assert contract.address == addresses["DTFactory"] assert ContractHandler.has("DTFactory", target_address) assert not ContractHandler.has("foo name", "foo address") assert not ContractHandler.has("foo name", contract.address) assert not ContractHandler.has("DTFactory", "foo address")
def test_get_unhappy_paths(): with pytest.raises(TypeError): ContractHandler.get("foo name") with pytest.raises(TypeError): ContractHandler.get("foo name", "foo address") with pytest.raises(InvalidAddress): ContractHandler.get("DataTokenTemplate", "foo address")
def test_get_unhappy_paths(): """Test that some erroneous artifacts paths can not be set (sad flows).""" with pytest.raises(TypeError): ContractHandler.get("foo name") with pytest.raises(TypeError): ContractHandler.get("foo name", "foo address") with pytest.raises(InvalidAddress): ContractHandler.get("DataTokenTemplate", "foo address")
def test_set(): contract = ContractHandler.get("DataTokenTemplate") address = contract.address ContractHandler.set("second_name", contract) # did it store in (name) key? tup = ContractHandler._contracts[ "second_name"] # (contract, contract_concise) assert len(tup) == 2 assert tup[0].address == address assert isinstance(tup[1], ConciseContract) # did it store in (name, address) key? tup2 = ContractHandler._contracts[("second_name", address)] assert tup2 == tup
def __init__(self, contract_name, event_name, args=None, from_block=None, to_block=None, filters=None): contract = ContractHandler.get(contract_name) self.event_name = event_name self.event = getattr(contract.events, event_name) self.filters = filters if filters else {} self.from_block = from_block if from_block is not None else 'latest' self.to_block = to_block if to_block is not None else 'latest' self.event_filter = self.make_event_filter() self.event_filter.poll_interval = 0.5 self.timeout = 600 # seconds self.args = args
def test_set(): """Tests setting of a DataTokenTemplate on a Contract.""" contract = ContractHandler.get("DataTokenTemplate") address = contract.address ContractHandler.set("second_name", contract) # result format is a tuple of (contract, contract_concise) # did it store in (name) key? result = ContractHandler._contracts["second_name"] assert len(result) == 2 assert result[0].address == address assert isinstance(result[1], ConciseContract) # did it store in (name, address) key? result2 = ContractHandler._contracts[("second_name", address)] assert result2 == result
def __init__( self, contract_name, event_name, args=None, from_block=None, to_block=None, filters=None, ): """Initialises EventListener object.""" contract = ContractHandler.get(contract_name) self.event_name = event_name self.event = getattr(contract.events, event_name) self.filters = filters if filters else {} self.from_block = from_block if from_block is not None else "latest" self.to_block = to_block if to_block is not None else "latest" self.event_filter = self.make_event_filter() self.event_filter.poll_interval = 0.5 self.timeout = 600 # seconds self.args = args
def __init__(self, address: [str, None], abi_path=None): """Initialises Contract Base object. The contract name attribute and abi_path are required. """ self.name = self.contract_name assert ( self.name ), "contract_name property needs to be implemented in subclasses." if not abi_path: abi_path = ContractHandler.artifacts_path assert abi_path, f"abi_path is required, got {abi_path}" self.contract_concise = ContractHandler.get_concise_contract(self.name, address) self.contract = ContractHandler.get(self.name, address) assert not address or ( self.contract.address == address and self.address == address ) assert self.contract_concise is not None