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']]
    )
Example #10
0
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)
Example #13
0
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)
Example #17
0
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)
Example #19
0
def get_tx(test_case):
    result = service.get_tx(currency='btc', tx_hash='ab1880')
    assertEqual(tx1, result)
Example #20
0
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)