Example #1
0
def test_deploy_datatoken_fails():
    config_file = app.config["AQUARIUS_CONFIG_FILE"]
    web3 = setup_web3(config_file)
    test_account1 = Account.from_key(os.environ.get("EVENTS_TESTS_PRIVATE_KEY", None))
    with patch.object(type(web3.eth), "getTransactionReceipt") as mock:
        mock.side_effect = Exception()
        with pytest.raises(Exception, match="tx not found"):
            deploy_datatoken(web3, test_account1, "TT1", "TT1Symbol")
def test_order_started_processor():
    config_file = app.config["AQUARIUS_CONFIG_FILE"]
    web3 = setup_web3(config_file)

    test_account1 = Account.from_key(
        os.environ.get("EVENTS_TESTS_PRIVATE_KEY", None))
    dt_address = deploy_datatoken(web3, test_account1, "TT1", "TT1Symbol")

    es_instance = Mock()
    es_instance.read.return_value = {
        "sample_asset": "mock",
        "stats": {
            "orders": 0
        }
    }
    es_instance.update.return_value = None

    price_json = {
        "value": 12.4,
        "tokenAddress": "test",
        "tokenSymbol": "test2"
    }

    processor = OrderStartedProcessor(dt_address, es_instance, 0, 0)
    with patch(
            "aquarius.events.processors.get_number_orders_price") as no_mock:
        no_mock.return_value = 3, price_json
        updated_asset = processor.process()

    assert es_instance.update.called_once()
    assert updated_asset["stats"]["orders"] == 3
    assert updated_asset["stats"]["price"] == price_json
Example #3
0
def new_ddo(account, web3, name, ddo=None):
    _ddo = ddo if ddo else ddo_event_sample.copy()
    if 'publicKey' not in _ddo or not _ddo['publicKey']:
        _ddo['publicKey'] = [{'owner': ''}]
    _ddo['publicKey'][0]['owner'] = account.address
    _ddo['random'] = str(uuid.uuid4())
    dt_address = deploy_datatoken(web3, account.privateKey, name, name, account.address)
    _ddo['id'] = new_did(dt_address)
    _ddo['dataToken'] = dt_address
    return AttributeDict(_ddo)
Example #4
0
def new_ddo(account, web3, name, ddo=None):
    _ddo = ddo if ddo else ddo_event_sample_v4.copy()
    if "publicKey" not in _ddo or not _ddo["publicKey"]:
        _ddo["publicKey"] = [{"owner": ""}]
    _ddo["publicKey"][0]["owner"] = account.address
    _ddo["random"] = str(uuid.uuid4())
    dt_address = deploy_datatoken(web3, account, name, name)
    chain_id = web3.eth.chain_id
    _ddo["id"] = make_did(dt_address, chain_id)
    _ddo["chainId"] = chain_id
    _ddo["nftAddress"] = dt_address
    return AttributeDict(_ddo)
def test_order_started_processor_no_asset():
    config_file = app.config["AQUARIUS_CONFIG_FILE"]
    web3 = setup_web3(config_file)

    test_account1 = Account.from_key(
        os.environ.get("EVENTS_TESTS_PRIVATE_KEY", None))
    dt_address = deploy_datatoken(web3, test_account1, "TT1", "TT1Symbol")

    es_instance = Mock()
    es_instance.read.return_value = None

    processor = OrderStartedProcessor(dt_address, es_instance, 0, 0)
    updated_asset = processor.process()

    assert not es_instance.update.called
    assert updated_asset is None
def test_missing_attributes():
    config_file = app.config["AQUARIUS_CONFIG_FILE"]
    web3 = setup_web3(config_file)

    test_account1 = Account.from_key(
        os.environ.get("EVENTS_TESTS_PRIVATE_KEY", None))
    dt_address = deploy_datatoken(web3, test_account1, "TT1", "TT1Symbol")
    dt_contract = web3.eth.contract(abi=ERC721Template.abi,
                                    address=web3.toChecksumAddress(dt_address))

    dt_factory = Mock()
    dt_factory.caller = Mock()
    dt_factory.caller.erc721List.return_value = (
        "0x0000000000000000000000000000000000000000")

    processor = MetadataCreatedProcessor(event_sample, None, None, None, web3,
                                         None, None, None)

    assert processor._get_contract_attribute(dt_contract, "non_existent") == ""
    assert processor._get_contract_attribute(dt_contract,
                                             "symbol") == "TT1Symbol"

    processor.dt_contract = Mock(spec=ERC721Template)
    processor.caller = Mock()
    processor.caller.ownerOf.side_effect = Exception()
    assert processor.get_nft_owner() == ""

    processor.event = Mock()
    processor.event.args.decryptorUrl = ""
    processor.event.args.metaDataHash = ""
    processor.event.args.address = ""
    processor.event.address = "0x0000000000000000000000000000000000000000"

    with patch("aquarius.events.processors.decrypt_ddo") as mock:
        mock.return_value = None
        with patch("aquarius.events.processors.get_dt_factory") as mock2:
            mock2.return_value = dt_factory
            with pytest.raises(Exception, match="Decrypt ddo failed"):
                processor.process()

    processor = MetadataUpdatedProcessor(event_sample, None, None, None, web3,
                                         None, None, None)

    assert processor._get_contract_attribute(dt_contract, "non_existent") == ""
    assert processor._get_contract_attribute(dt_contract,
                                             "symbol") == "TT1Symbol"

    processor.dt_contract = Mock(spec=ERC721Template)
    processor.caller = Mock()
    processor.caller.ownerOf.side_effect = Exception()
    assert processor.get_nft_owner() == ""

    processor.event = Mock()
    processor.event.args.decryptorUrl = ""
    processor.event.args.metaDataHash = ""
    processor.event.address = "0x0000000000000000000000000000000000000000"

    with patch("aquarius.events.processors.decrypt_ddo") as mock:
        mock.return_value = None
        with patch("aquarius.events.processors.get_dt_factory") as mock2:
            mock2.return_value = dt_factory
            with pytest.raises(Exception, match="Decrypt ddo failed"):
                processor.process()