Пример #1
0
def transferred_manifestation_tx(bdb_driver, persisted_manifestation,
                                 alice_keypair, bob_keypair,
                                 rights_assignment_model_json):
    from tests.utils import poll_bdb_transaction_valid
    input_tx = persisted_manifestation
    asset_id = input_tx['id']
    input_tx_output = input_tx['outputs'][0]

    transfer_tx = bdb_driver.transactions.prepare(
        operation='TRANSFER',
        recipients=bob_keypair['public_key'],
        asset={'id': asset_id},
        metadata=rights_assignment_model_json,
        inputs={
            'fulfillment': input_tx_output['condition']['details'],
            'fulfills': {
                'output': 0,
                'txid': input_tx['id'],
            },
            'owners_before': input_tx_output['public_keys'],
        },
    )

    fulfilled_transfer_tx = bdb_driver.transactions.fulfill(
        transfer_tx, private_keys=alice_keypair['private_key'])
    bdb_driver.transactions.send(fulfilled_transfer_tx)

    # Poll BigchainDB until the transfer becomes valid (and 'persisted')
    poll_bdb_transaction_valid(bdb_driver, fulfilled_transfer_tx['id'])

    return fulfilled_transfer_tx
Пример #2
0
def test_transfer_can_be_retransferred(plugin, bdb_driver,
                                       persisted_manifestation,
                                       rights_assignment_model_json,
                                       alice_keypair, bob_keypair,
                                       carly_keypair):
    entity_id = persisted_manifestation['id']

    # Create an initial transfer and wait until it's valid
    initial_transfer_tx_id = plugin.transfer(entity_id,
                                             rights_assignment_model_json,
                                             from_user=alice_keypair,
                                             to_user=bob_keypair)

    poll_bdb_transaction_valid(bdb_driver, initial_transfer_tx_id)

    # Create a second transfer using the new owner and wait until it's valid
    second_transfer_tx_id = plugin.transfer(entity_id,
                                            rights_assignment_model_json,
                                            from_user=bob_keypair,
                                            to_user=carly_keypair)

    second_transfer_tx = poll_bdb_transaction(bdb_driver,
                                              second_transfer_tx_id)
    second_transfer_tx_signers = second_transfer_tx['inputs'][0][
        'owners_before']
    second_transfer_tx_recipients = second_transfer_tx['outputs'][0][
        'public_keys']
    assert second_transfer_tx['id'] == second_transfer_tx_id
    assert second_transfer_tx_signers[0] == bob_keypair['public_key']
    assert second_transfer_tx_recipients[0] == carly_keypair['public_key']
Пример #3
0
def persisted_manifestation(bdb_driver, created_manifestation):
    from tests.utils import poll_bdb_transaction_valid
    tx_id = created_manifestation['id']

    # Poll BigchainDB until the created manifestation becomes valid (and
    # 'persisted')
    poll_bdb_transaction_valid(bdb_driver, tx_id)

    return created_manifestation
Пример #4
0
def test_get_history(plugin, bdb_driver, alice_keypair, bob_keypair,
                     persisted_manifestation):
    from coalaip_bigchaindb.utils import make_transfer_tx

    # Transfer to Bob
    transfer_to_bob_tx = make_transfer_tx(bdb_driver,
                                          input_tx=persisted_manifestation,
                                          recipients=bob_keypair['public_key'])
    transfer_to_bob_tx = bdb_driver.transactions.fulfill(
        transfer_to_bob_tx, private_keys=alice_keypair['private_key'])
    bdb_driver.transactions.send(transfer_to_bob_tx)

    poll_bdb_transaction_valid(bdb_driver, transfer_to_bob_tx['id'])

    # Transfer back to Alice
    transfer_back_to_alice_tx = make_transfer_tx(
        bdb_driver,
        input_tx=transfer_to_bob_tx,
        recipients=alice_keypair['public_key'])
    transfer_back_to_alice_tx = bdb_driver.transactions.fulfill(
        transfer_back_to_alice_tx, private_keys=bob_keypair['private_key'])
    bdb_driver.transactions.send(transfer_back_to_alice_tx)

    poll_bdb_transaction_valid(bdb_driver, transfer_back_to_alice_tx['id'])

    # Test that we get all these transactions back
    # Note that the CREATE transaction's id is the id of the entity
    try:
        history = plugin.get_history(persisted_manifestation['id'])
    except Exception as ex:
        print(ex)
        raise

    assert len(history) == 3
    assert history[0]['user']['public_key'] == alice_keypair['public_key']
    assert history[0]['event_id'] == persisted_manifestation['id']
    assert history[1]['user']['public_key'] == bob_keypair['public_key']
    assert history[1]['event_id'] == transfer_to_bob_tx['id']
    assert history[2]['user']['public_key'] == alice_keypair['public_key']
    assert history[2]['event_id'] == transfer_back_to_alice_tx['id']