def test_invalid_fulfillment_initialization(user_ffill, user_pub): from bigchaindb_common.transaction import Fulfillment with raises(TypeError): Fulfillment(user_ffill, user_pub) with raises(TypeError): Fulfillment(user_ffill, [], tx_input='somethingthatiswrong')
def test_fulfillment_deserialization_with_invalid_fulfillment(user_pub): from bigchaindb_common.transaction import Fulfillment ffill = { 'owners_before': [user_pub], 'fulfillment': None, 'input': None, } with raises(TypeError): Fulfillment.from_dict(ffill)
def test_fulfillment_deserialization_with_invalid_fulfillment_uri(user_pub): from bigchaindb_common.exceptions import InvalidSignature from bigchaindb_common.transaction import Fulfillment ffill = { 'owners_before': [user_pub], 'fulfillment': 'an invalid fulfillment', 'input': None, } with raises(InvalidSignature): Fulfillment.from_dict(ffill)
def test_fulfillment_serialization(ffill_uri, user_pub): from bigchaindb_common.transaction import Fulfillment from cryptoconditions import Fulfillment as CCFulfillment expected = { 'owners_before': [user_pub], 'fulfillment': ffill_uri, 'input': None, } ffill = Fulfillment(CCFulfillment.from_uri(ffill_uri), [user_pub]) assert ffill.to_dict() == expected
def test_fulfillment_deserialization_with_unsigned_fulfillment(ffill_uri, user_pub): from bigchaindb_common.transaction import Fulfillment from cryptoconditions import Fulfillment as CCFulfillment expected = Fulfillment(CCFulfillment.from_uri(ffill_uri), [user_pub]) ffill = { 'owners_before': [user_pub], 'fulfillment': CCFulfillment.from_uri(ffill_uri), 'input': None, } ffill = Fulfillment.from_dict(ffill) assert ffill == expected
def transfer_utx(user_cond, user2_cond, utx): from bigchaindb_common.transaction import (Fulfillment, TransactionLink, Transaction, Asset) user_cond = user_cond.to_dict() ffill = Fulfillment(utx.conditions[0].fulfillment, user_cond['owners_after'], TransactionLink(utx.id, 0)) return Transaction('TRANSFER', Asset(), [ffill], [user2_cond])
def test_multiple_fulfillment_validation_of_transfer_tx(user_ffill, user_cond, user_priv, user2_pub, user2_priv, user3_pub, user3_priv): from copy import deepcopy from bigchaindb_common.transaction import (Transaction, TransactionLink, Fulfillment, Condition, Asset) from cryptoconditions import Ed25519Fulfillment tx = Transaction(Transaction.CREATE, Asset(), [user_ffill, deepcopy(user_ffill)], [user_cond, deepcopy(user_cond)]) tx.sign([user_priv]) fulfillments = [Fulfillment(cond.fulfillment, cond.owners_after, TransactionLink(tx.id, index)) for index, cond in enumerate(tx.conditions)] conditions = [Condition(Ed25519Fulfillment(public_key=user3_pub), [user3_pub]), Condition(Ed25519Fulfillment(public_key=user3_pub), [user3_pub])] transfer_tx = Transaction('TRANSFER', tx.asset, fulfillments, conditions) transfer_tx = transfer_tx.sign([user_priv]) assert transfer_tx.fulfillments_valid(tx.conditions) is True
def user2_ffill(user2_Ed25519, user2_pub): from bigchaindb_common.transaction import Fulfillment return Fulfillment(user2_Ed25519, [user2_pub])
def user_user2_threshold_ffill(user_user2_threshold, user_pub, user2_pub): from bigchaindb_common.transaction import Fulfillment return Fulfillment(user_user2_threshold, [user_pub, user2_pub])