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_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.validator_utils import election_id_to_public_key
@ -414,8 +415,14 @@ class Planetmint(object):
asset_id = tx.get_asset_id(input_txs)
if asset_id != tx.assets[0]["id"]:
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.")
input_amount = sum([input_condition.amount for input_condition in input_conditions])

View File

@ -7,6 +7,7 @@ import random
import pytest
from unittest.mock import patch
from planetmint.backend.models import Input
from transactions.types.assets.create import Create
from transactions.types.assets.transfer import Transfer
from ipld import marshal, multihash
@ -110,10 +111,10 @@ class TestBigchainApi(object):
before = tx.to_dict()
after = tx_from_db.to_dict()
assert before["assets"][0] == after["transaction"]["assets"][0]
before.pop("asset", None)
after["transaction"].pop("asset", None)
assert before == after["transaction"]
assert before["assets"][0] == after["assets"][0]
before.pop("assets", None)
after.pop("assets", None)
assert before == after
class TestTransactionValidation(object):
@ -159,7 +160,7 @@ class TestMultipleInputs(object):
tx_link = b.fastquery.get_outputs_by_public_key(user_pk).pop()
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 = tx.sign([user_sk])