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
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)
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()