Merge branch 'add-compose-validation' of github.com:planetmint/planetmint into add-compose-validation

This commit is contained in:
Jürgen Eckel 2023-01-26 10:29:29 +01:00
commit f413ed1e6d
No known key found for this signature in database
3 changed files with 44 additions and 0 deletions

View File

@ -25,6 +25,9 @@ For reference, the possible headings are:
* **Known Issues** * **Known Issues**
* **Notes** * **Notes**
## [2.1.0] - 2023-26-01
* **Added** validation for compose and decompose transaction types
## [2.0.0] - 2023-12-01 ## [2.0.0] - 2023-12-01
* **Changed** changed tarantool db schema * **Changed** changed tarantool db schema
* **Removed** removed text_search routes * **Removed** removed text_search routes

View File

@ -82,6 +82,19 @@ def test_compose_valid_transactions(b, user_pk, user_sk, alice, signed_create_tx
assert b.validate_transaction(compose_transaction) assert b.validate_transaction(compose_transaction)
def test_decompose_valid_transactions(b, user_pk, user_sk, alice, signed_create_tx, _bdb):
from transactions.types.assets.decompose import Decompose
validated = b.validate_transaction(signed_create_tx)
b.store_bulk_transactions([validated])
inputs = signed_create_tx.to_inputs()
assets = [signed_create_tx.id]
decompose_transaction = Decompose.generate(inputs=inputs, recipients=[([user_pk], 1)], assets=assets)
decompose_transaction.sign([user_sk])
assert b.validate_transaction(decompose_transaction)
def test_create_valid_divisible_asset(b, user_pk, user_sk, _bdb): def test_create_valid_divisible_asset(b, user_pk, user_sk, _bdb):
tx = Create.generate([user_pk], [([user_pk], 2)]) tx = Create.generate([user_pk], [([user_pk], 2)])
tx_signed = tx.sign([user_sk]) tx_signed = tx.sign([user_sk])

View File

@ -16,6 +16,7 @@ from transactions.common import crypto
from transactions.common.transaction import Transaction from transactions.common.transaction import Transaction
from transactions.types.assets.create import Create from transactions.types.assets.create import Create
from transactions.types.assets.compose import Compose from transactions.types.assets.compose import Compose
from transactions.types.assets.decompose import Decompose
from transactions.types.assets.transfer import Transfer from transactions.types.assets.transfer import Transfer
from transactions.common.transaction_mode_types import ( from transactions.common.transaction_mode_types import (
BROADCAST_TX_COMMIT, BROADCAST_TX_COMMIT,
@ -523,3 +524,30 @@ def test_post_transaction_compose_valid(client, b):
mode_endpoint = TX_ENDPOINT + "?mode=commit" mode_endpoint = TX_ENDPOINT + "?mode=commit"
response = client.post(mode_endpoint, data=json.dumps(signed_tx.to_dict())) response = client.post(mode_endpoint, data=json.dumps(signed_tx.to_dict()))
assert "202 ACCEPTED" in response.status assert "202 ACCEPTED" in response.status
@pytest.mark.abci
def test_post_transaction_decompose_valid(client, b):
mode = ("?mode=commit", BROADCAST_TX_COMMIT)
alice = generate_key_pair()
tx = Create.generate(
[alice.public_key],
[([alice.public_key], 1)],
assets=[{"data": "QmW5GVMW98D3mktSDfWHS8nX2UiCd8gP1uCiujnFX4yK97"}],
).sign([alice.private_key])
mode_endpoint = TX_ENDPOINT + mode[0]
response = client.post(mode_endpoint, data=json.dumps(tx.to_dict()))
assert "202 ACCEPTED" in response.status
tx_obj = tx
tx = tx.to_dict()
inputs_ = tx_obj.to_inputs()
assets_ = [tx["id"]]
decompose_transaction = Decompose.generate(inputs=inputs_, recipients=[([alice.public_key], 1)], assets=assets_)
signed_tx = decompose_transaction.sign([alice.private_key])
validated_decompose = b.validate_transaction(signed_tx)
mode_endpoint = TX_ENDPOINT + "?mode=commit"
response = client.post(mode_endpoint, data=json.dumps(signed_tx.to_dict()))
assert "202 ACCEPTED" in response.status