def search(test_case): expected = SearchResult(currencies=[ SearchResultByCurrency(currency='btc', addresses=['xyz1234', 'xyz1278'], txs=[]), SearchResultByCurrency(currency='ltc', addresses=[], txs=[]) ], labels=[]) result = service.search(q='xyz12') result.currencies = sorted(result.currencies, key=lambda c: c.currency) assertEqual(expected, result) expected = SearchResult(currencies=[ SearchResultByCurrency(currency='btc', addresses=['xyz1278'], txs=[]), SearchResultByCurrency(currency='ltc', addresses=[], txs=[]) ], labels=[]) result = service.search(q='xyz127') result.currencies = sorted(result.currencies, key=lambda c: c.currency) assertEqual(expected, result) expected = SearchResult(currencies=[ SearchResultByCurrency(currency='ltc', addresses=[], txs=[]), SearchResultByCurrency(currency='btc', txs=['ab1880', 'ab188013'], addresses=[]) ], labels=[]) result = service.search(q='ab188') result.currencies = sorted(result.currencies, key=lambda c: c.currency) expected = SearchResult(currencies=[ SearchResultByCurrency(currency='ltc', addresses=[], txs=[]), SearchResultByCurrency(currency='btc', txs=['ab188013'], addresses=[]) ], labels=[]) result = service.search(q='ab18801') result.currencies = sorted(result.currencies, key=lambda c: c.currency) expected = SearchResult(currencies=[ SearchResultByCurrency(currency='ltc', addresses=[], txs=[]), SearchResultByCurrency(currency='btc', txs=['00ab1880'], addresses=[]) ], labels=[]) result = service.search(q='00ab1') result.currencies = sorted(result.currencies, key=lambda c: c.currency) expected = SearchResult(currencies=[ SearchResultByCurrency(currency='ltc', addresses=[], txs=[]), SearchResultByCurrency(currency='btc', txs=[], addresses=[]) ], labels=['isolinks']) result = service.search(q='iso') result.currencies = sorted(result.currencies, key=lambda c: c.currency)
def get_address_with_tags(test_case): """Test case for get_address_with_tags """ result = service.get_address_with_tags(currency='btc', address=addressWithoutTags.address) assertEqual(addressWithoutTags, result) result = service.get_address_with_tags(currency='btc', address=addressWithTags.address) assertEqual(addressWithTags, result)
def list_address_tags_csv(test_case): csv = ("abuse,active,address,category,currency,label,lastmod," "source,tagpack_uri\r\n,True,1Archive1n2C579dMsAu3iC6" "tWzuQJz8dN,organization,btc,\"Internet, Archive\",1560290400" ",https://archive.org/donate/cryptocurrency,http://tagpack_uri\r\n") csv = base64.b64encode(csv.encode("utf-8")) result = service.list_address_tags_csv( "btc", addressWithTags.address).data.decode('utf-8') result = base64.b64encode(result.encode("utf-8")) assertEqual(csv, result)
def list_address_neighbors(test_case): result = service.list_address_neighbors(currency='btc', address=addressWithTags.address, direction='out') assertEqual(addressWithTagsOutNeighbors, result) result = service.list_address_neighbors(currency='btc', address=addressWithTags.address, direction='in') assertEqual(addressWithTagsInNeighbors, result)
def list_address_neighbors_csv(test_case): csv = ("balance_eur,balance_usd,balance_value,estimated_value_eur," "estimated_value_usd,estimated_value_value,id,labels,no_txs," "node_type,received_eur,received_usd,received_value\r\n0.0,0.0," "0,72.08,87.24,27789282,17DfZja1713S3JRWA9jaebCKFM5anUh7GG,[]" ",1,address,114.86,142.18,87789282\r\n0.0,0.0,0,72.08,87.24," "27789282,1LpXFVskUaE2cs5xkQE5bDDaX8hff4L2Ej,[],1,address,98.72," "121.46,67789282\r\n") result = service.list_address_neighbors_csv( currency='btc', address=addressWithTags.address, direction='out') assertEqual(csv, result.data.decode('utf-8'))
def list_entity_neighbors_csv(test_case): csv = ("balance_eur,balance_usd,balance_value,estimated_value_eur," "estimated_value_usd,estimated_value_value,id,labels,no_txs," "node_type,received_eur,received_usd,received_value\r\n0.0,0.0,0" ",2411.06,3074.92,48610000000,2818641,[],1,entity,2411.06,3074.92," "48610000000\r\n0.0,0.0,0,1078.04,1397.54,3375700000,8361735,[],3," "entity,7064.18,8517.93,7858798000\r\n") result = service.list_entity_neighbors_csv( currency='btc', entity=entityWithTags.entity, direction='out') assertEqual(csv, result.data.decode('utf-8'))
def list_entity_tags_csv(test_case): csv = ("abuse,active,address,category,currency,label,lastmod,source," "tagpack_uri\r\n" ",True,1Archive1n2C579dMsAu3iC6tWzuQJz8dN,organization,btc," "Internet Archive 2,1560290400,https://archive.org/donate/crypto" "currency,http://tagpack_uri\r\n" ",True,1Archive1n2C579dMsAu3iC6tWzuQJz8dN," "organization,btc,\"Internet, Archive\",1560290400," "https://archive.org/donate/cryptocurrency,http://tagpack_uri\r\n" ) assertEqual(csv, service.list_entity_tags_csv( "btc", entityWithTags.entity).data.decode('utf-8'))
def list_address_links(test_case): result = service.list_address_links( currency='btc', address=addressWithTags.address, neighbor='17DfZja1713S3JRWA9jaebCKFM5anUh7GG') link = [ Link(tx_hash='123456', input_value=Values(eur=-0.1, usd=-0.2, value=-10000000), output_value=Values(eur=-0.1, usd=-0.2, value=-10000000), timestamp=1361497172, height=2) ] assertEqual(link, result)
def list_entity_neighbors(test_case): result = service.list_entity_neighbors( currency='btc', entity=entityWithTags.entity, direction='out') assertEqual(entityWithTagsOutNeighbors, result) result = service.list_entity_neighbors( currency='btc', entity=entityWithTags.entity, direction='in') assertEqual(entityWithTagsInNeighbors, result) query_string = [('direction', 'in'), ('targets', '67065,144534')] headers = { 'Accept': 'application/json', } response = test_case.client.open( '/{currency}/entities/{entity}/neighbors'.format( currency="btc", entity="17642138"), method='GET', headers=headers, query_string=query_string) test_case.assert200(response, 'Response body is : ' + response.data.decode('utf-8')) result = json.loads(response.data.decode('utf-8')) assertEqual( [n.id for n in entityWithTagsInNeighbors.neighbors], [int(n['id']) for n in result['neighbors']] ) query_string = [('direction', 'in'), ('targets', '144534')] headers = { 'Accept': 'application/json', } response = test_case.client.open( '/{currency}/entities/{entity}/neighbors'.format( currency="btc", entity="17642138"), method='GET', headers=headers, query_string=query_string) test_case.assert200(response, 'Response body is : ' + response.data.decode('utf-8')) result = json.loads(response.data.decode('utf-8')) assertEqual( [entityWithTagsInNeighbors.neighbors[1].id], [int(n['id']) for n in result['neighbors']] )
def list_tags(test_case): result = service.list_tags(currency='btc', label='isolinks') assertEqual([tag1], result) result = service.list_tags(currency='btc', label='cimedy') assertEqual([tag2], result) result = service.list_tags(label='cimedy') assertEqual([tag2, tag3], sorted(result, key=lambda x: x.currency))
def list_address_txs(test_case): """Test case for list_address_txs Get all transactions an address has been involved in """ rates = list_rates(currency='btc', heights=[2]) address_txs = AddressTxs( next_page=None, address_txs=[ AddressTx(tx_hash="123456", value=convert_value(1260000, rates[2]), height=2, address=addressWithoutTags.address, timestamp=1510347493), AddressTx(tx_hash="abcdef", value=convert_value(-1260000, rates[2]), height=2, address=addressWithoutTags.address, timestamp=1511153263) ]) result = service.list_address_txs('btc', addressWithoutTags.address) assertEqual(address_txs, result)
def get_address_entity(test_case): result = service.get_address_entity(currency='btc', address=addressWithTags.address) result.tags = sorted(result.tags, key=lambda t: t.label) result.tag_coherence = 0 assertEqual(entityWithTagsOfAddressWithTags, result)
def list_taxonomies(test_case): result = service.list_taxonomies() assertEqual(taxonomies, result)
def get_entity_with_tags(test_case): result = service.get_entity_with_tags(currency='btc', entity=17642138) result.tags = sorted(result.tags, key=lambda t: t.label) result.tag_coherence = 0.5 assertEqual(entityWithTags, result)
def list_entity_tags(test_case): result = service.list_entity_tags(currency='btc', entity=17642138) assertEqual([tag2, tag], sorted(result, key=lambda t: t.label))
def list_address_tags(test_case): result = service.list_address_tags('btc', addressWithTags.address) assertEqual(addressWithTags.tags, result)
def list_txs(test_case): result = service.list_txs(currency='btc') assertEqual(Txs(next_page=None, txs=[tx1, tx2, tx3]), result)
def get_exchange_rates(test_case): result = service.get_exchange_rates(currency='btc', height=1) assertEqual(rate, result)
def get_tx(test_case): result = service.get_tx(currency='btc', tx_hash='ab1880') assertEqual(tx1, result)
def list_concepts(test_case): result = service.list_concepts('taxo1') assertEqual([conceptA], result) result = service.list_concepts('taxo2') assertEqual([conceptB], result)
def get_statistics(test_case): result = service.get_statistics() result.currencies = sorted(result.currencies, key=lambda c: c.name) assertEqual(stats.currencies, result.currencies)
def search_entity_neighbors(test_case): # Test category matching category = 'MyCategory' result = service.search_entity_neighbors( currency='btc', entity=entityWithTags.entity, direction='out', depth=2, breadth=10, key='category', value=[category] ) assertEqual(2818641, result.paths[0].node.entity) assertEqual(123, result.paths[0].paths[0].node.entity) assertEqual(category, result.paths[0].paths[0].node.tags[0].category) category = 'MyCategory' result = service.search_entity_neighbors( currency='btc', entity=entityWithTags.entity, direction='in', depth=2, breadth=10, key='category', value=[category] ) assertEqual(67065, result.paths[0].node.entity) assertEqual(123, result.paths[0].paths[0].node.entity) assertEqual(category, result.paths[0].paths[0].node.tags[0].category) # Test addresses matching addresses = ['abcdefg', 'xyz1234'] result = service.search_entity_neighbors( currency='btc', entity=entityWithTags.entity, direction='out', depth=2, breadth=10, key='addresses', value=addresses ) assertEqual(2818641, result.paths[0].node.entity) assertEqual(456, result.paths[0].paths[0].node.entity) assertEqual(addresses, [a.address for a in result.paths[0].paths[0].matching_addresses]) query_string = [('direction', 'out'), ('key', 'addresses'), ('value', ','.join(addresses)), ('depth', '7')] headers = { 'Accept': 'application/json', } response = test_case.client.open( '/{currency}/entities/{entity}/search' .format(currency="btc", entity=entityWithTags.entity), method='GET', headers=headers, query_string=query_string) result = json.loads(response.data.decode('utf-8')) assertEqual(2818641, result['paths'][0]['node']['entity']) assertEqual(456, result['paths'][0]['paths'][0]['node']['entity']) assertEqual(addresses, [a['address'] for a in result['paths'][0]['paths'][0]['matching_addresses']]) addresses = ['abcdefg'] result = service.search_entity_neighbors( currency='btc', entity=entityWithTags.entity, direction='out', depth=2, breadth=10, key='addresses', value=addresses ) assertEqual(2818641, result.paths[0].node.entity) assertEqual(456, result.paths[0].paths[0].node.entity) assertEqual(addresses, [a.address for a in result.paths[0].paths[0].matching_addresses]) # Test value matching result = service.search_entity_neighbors( currency='btc', entity=entityWithTags.entity, direction='out', depth=2, breadth=10, key='total_received', value=['value', 5, 150] ) assertEqual(2818641, result.paths[0].node.entity) assertEqual(789, result.paths[0].paths[0].node.entity) assertEqual(10, result.paths[0].paths[0].node.total_received.value) # Test value matching result = service.search_entity_neighbors( currency='btc', entity=entityWithTags.entity, direction='out', depth=2, breadth=10, key='total_received', value=['value', 5, 8] ) assertEqual(SearchPaths(paths=[]), result) # # Test value matching result = service.search_entity_neighbors( currency='btc', entity=entityWithTags.entity, direction='out', depth=2, breadth=10, key='total_received', value=['eur', 50, 100] ) assertEqual(2818641, result.paths[0].node.entity) assertEqual(789, result.paths[0].paths[0].node.entity) assertEqual(100.0, result.paths[0].paths[0].node.total_received.eur)
def list_entity_addresses(test_case): result = service.list_entity_addresses( currency='btc', entity=entityWithTags.entity) assertEqual(entityWithTagsAddresses, result)