Ejemplo n.º 1
0
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")
Ejemplo n.º 2
0
    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")
Ejemplo n.º 5
0
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
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
    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