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:
Jürgen Eckel 2023-01-10 13:21:36 +01:00
parent d05acebb2f
commit 97513aca6a
No known key found for this signature in database
2 changed files with 15 additions and 7 deletions

View File

@ -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
@ -415,7 +416,13 @@ class Planetmint(object):
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])

View File

@ -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])