mirror of
https://github.com/planetmint/planetmint.git
synced 2025-11-24 22:45:44 +00:00
added proper input conversion of the test cases and a proper input validation and object converion
Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
This commit is contained in:
parent
d05acebb2f
commit
97513aca6a
@ -36,6 +36,7 @@ from transactions.common.exceptions import (
|
|||||||
)
|
)
|
||||||
from transactions.common.transaction import VALIDATOR_ELECTION, CHAIN_MIGRATION_ELECTION
|
from transactions.common.transaction import VALIDATOR_ELECTION, CHAIN_MIGRATION_ELECTION
|
||||||
from transactions.common.transaction_mode_types import BROADCAST_TX_COMMIT, BROADCAST_TX_ASYNC, BROADCAST_TX_SYNC
|
from transactions.common.transaction_mode_types import BROADCAST_TX_COMMIT, BROADCAST_TX_ASYNC, BROADCAST_TX_SYNC
|
||||||
|
from transactions.common.output import Output as TransactionOutput
|
||||||
from transactions.types.elections.election import Election
|
from transactions.types.elections.election import Election
|
||||||
from transactions.types.elections.validator_utils import election_id_to_public_key
|
from transactions.types.elections.validator_utils import election_id_to_public_key
|
||||||
|
|
||||||
@ -414,8 +415,14 @@ class Planetmint(object):
|
|||||||
asset_id = tx.get_asset_id(input_txs)
|
asset_id = tx.get_asset_id(input_txs)
|
||||||
if asset_id != tx.assets[0]["id"]:
|
if asset_id != tx.assets[0]["id"]:
|
||||||
raise AssetIdMismatch(("The asset id of the input does not" " match the asset id of the" " transaction"))
|
raise AssetIdMismatch(("The asset id of the input does not" " match the asset id of the" " transaction"))
|
||||||
|
|
||||||
if not tx.inputs_valid(input_conditions):
|
# convert planetmint.Output objects to transactions.common.Output objects
|
||||||
|
input_conditions_dict = Output.list_to_dict(input_conditions)
|
||||||
|
input_conditions_converted = []
|
||||||
|
for input_cond in input_conditions_dict:
|
||||||
|
input_conditions_converted.append(TransactionOutput.from_dict( input_cond ))
|
||||||
|
|
||||||
|
if not tx.inputs_valid(input_conditions_converted):
|
||||||
raise InvalidSignature("Transaction signature is invalid.")
|
raise InvalidSignature("Transaction signature is invalid.")
|
||||||
|
|
||||||
input_amount = sum([input_condition.amount for input_condition in input_conditions])
|
input_amount = sum([input_condition.amount for input_condition in input_conditions])
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import random
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
from planetmint.backend.models import Input
|
||||||
from transactions.types.assets.create import Create
|
from transactions.types.assets.create import Create
|
||||||
from transactions.types.assets.transfer import Transfer
|
from transactions.types.assets.transfer import Transfer
|
||||||
from ipld import marshal, multihash
|
from ipld import marshal, multihash
|
||||||
@ -110,10 +111,10 @@ class TestBigchainApi(object):
|
|||||||
before = tx.to_dict()
|
before = tx.to_dict()
|
||||||
after = tx_from_db.to_dict()
|
after = tx_from_db.to_dict()
|
||||||
|
|
||||||
assert before["assets"][0] == after["transaction"]["assets"][0]
|
assert before["assets"][0] == after["assets"][0]
|
||||||
before.pop("asset", None)
|
before.pop("assets", None)
|
||||||
after["transaction"].pop("asset", None)
|
after.pop("assets", None)
|
||||||
assert before == after["transaction"]
|
assert before == after
|
||||||
|
|
||||||
|
|
||||||
class TestTransactionValidation(object):
|
class TestTransactionValidation(object):
|
||||||
@ -159,7 +160,7 @@ class TestMultipleInputs(object):
|
|||||||
|
|
||||||
tx_link = b.fastquery.get_outputs_by_public_key(user_pk).pop()
|
tx_link = b.fastquery.get_outputs_by_public_key(user_pk).pop()
|
||||||
input_tx = b.get_transaction(tx_link.txid)
|
input_tx = b.get_transaction(tx_link.txid)
|
||||||
inputs = input_tx.to_inputs()
|
inputs = Input.list_to_dict(input_tx.inputs)
|
||||||
tx = Transfer.generate(inputs, [([user2_pk], 1)], asset_ids=[input_tx.id])
|
tx = Transfer.generate(inputs, [([user2_pk], 1)], asset_ids=[input_tx.id])
|
||||||
tx = tx.sign([user_sk])
|
tx = tx.sign([user_sk])
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user