bigchaindb/test_transaction.py
tim 50562fed43 Add tests for:
- Conditions; and
    - Fulfillments

Mostly on the (de)serialization part.
2016-10-24 14:43:27 +02:00

90 lines
2.3 KiB
Python

from pytest import raises
def test_fulfillment_serialization(ffill_uri, user_vk):
from bigchaindb.transaction import (
Fulfillment,
)
ffill = Fulfillment(ffill_uri, [user_vk])
ffill_dict = ffill.to_dict()
assert ffill_dict['owners_before'] == [user_vk]
assert ffill_dict['input'] == None
assert ffill_dict['fulfillment'] == ffill_uri
assert ffill_dict['fid'] == 0
def test_fulfillment_deserialization(ffill_uri, user_vk):
from bigchaindb.transaction import (
Fulfillment,
)
ffill_dict = {
'owners_before': [user_vk],
'fulfillment': ffill_uri,
'fid': 0,
'input': None,
}
assert Fulfillment.from_dict(ffill_dict).to_dict() == ffill_dict
def test_invalid_fulfillment_initialization(ffill_uri, user_vk):
from bigchaindb.transaction import (
Fulfillment,
)
with raises(TypeError):
Fulfillment(ffill_uri, user_vk)
def test_condition_serialization(cond_uri, user_vk):
from bigchaindb.transaction import (
Condition,
)
cond = Condition(cond_uri, [user_vk])
cond_dict = cond.to_dict()
assert cond_dict['owners_after'] == [user_vk]
assert cond_dict['condition']['uri'] == cond_uri
assert cond_dict['cid'] == 0
def test_condition_deserialization(cond_uri, user_vk):
from bigchaindb.transaction import (
Condition,
)
from cryptoconditions import (
Condition as CCCondition,
)
cond_dict = {
'condition': {
'uri': cond_uri,
'details': CCCondition.from_uri(cond_uri).to_dict()
},
'owners_after': [user_vk],
'cid': 0,
}
assert Condition.from_dict(cond_dict).to_dict() == cond_dict
def test_invalid_condition_initialization(cond_uri, user_vk):
from bigchaindb.transaction import (
Condition,
)
with raises(TypeError):
Condition(cond_uri, user_vk)
def test_gen_default_condition(user_vk):
from bigchaindb.transaction import (
Condition,
)
from cryptoconditions import Ed25519Fulfillment
cond = Condition.gen_default_condition(user_vk)
assert cond.owners_after == [user_vk]
assert cond.cid == 0
# TODO: Would be nice if Cryptoconditions would implement a `__eq__` method
assert cond.condition.to_dict() == Ed25519Fulfillment(public_key=user_vk).condition.to_dict()