mirror of
https://github.com/planetmint/planetmint.git
synced 2025-03-30 15:08:31 +00:00

* added ipld dep Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * Cid tx schema (#252) * changed asset and metadata schema to string Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * updated fixtures and adjusted some models and test cases Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * adjusted dependencies, fixtures and added comments Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * alignd TX inputs to be CID compatible Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * converted assets to CIDs Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added multihashes Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed data packaging for IPLD compatible test cases for the unit tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * Transaction hierarchy (#254) * removed Transaction class from models.py, adjusted imports and function calls Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed comments Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed empty lines Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * resolved linting error Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * adjusted import path Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added missing argument to mock Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * resolved linting error Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * adjusted mock func signature Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed all unit tests Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * fixed zenroom acceptance test Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * adjusted common tx schema, fixed election validate Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed an planetmint-ipld dependency that solved a package namespace collision in the dependencies of IPLD Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * disabled integration and acceptance tests as they rely on planetmint driver. Plan is to resolve this circular dependency Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * adjusted acceptance tests to IPLD requirements Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * blackified Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * added missing imports Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * blackified little changes Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> Co-authored-by: Jürgen Eckel <juergen@riddleandcode.com> Co-authored-by: Jürgen Eckel <eckelj@users.noreply.github.com> * increased version enforce ipld encodings to metadata and asset["data"] Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> Co-authored-by: Lorenz Herzberger <64837895+LaurentMontBlanc@users.noreply.github.com>
92 lines
2.5 KiB
Python
92 lines
2.5 KiB
Python
# Copyright © 2020 Interplanetary Database Association e.V.,
|
|
# Planetmint and IPDB software contributors.
|
|
# SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)
|
|
# Code is Apache-2.0 and docs are CC-BY-4.0
|
|
|
|
import pytest
|
|
from copy import deepcopy
|
|
|
|
from planetmint.transactions.common.transaction import Transaction
|
|
from planetmint.transactions.types.assets.create import Create
|
|
from planetmint.transactions.common.crypto import generate_key_pair
|
|
from planetmint.transactions.common.memoize import to_dict, from_dict
|
|
|
|
|
|
pytestmark = pytest.mark.bdb
|
|
|
|
|
|
def test_memoize_to_dict(b):
|
|
alice = generate_key_pair()
|
|
asset = {"data": "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4"}
|
|
|
|
assert to_dict.cache_info().hits == 0
|
|
assert to_dict.cache_info().misses == 0
|
|
|
|
tx = Create.generate(
|
|
[alice.public_key],
|
|
[([alice.public_key], 1)],
|
|
asset=asset,
|
|
).sign([alice.private_key])
|
|
|
|
tx.to_dict()
|
|
|
|
assert to_dict.cache_info().hits == 0
|
|
assert to_dict.cache_info().misses == 1
|
|
|
|
tx.to_dict()
|
|
tx.to_dict()
|
|
|
|
assert to_dict.cache_info().hits == 2
|
|
assert to_dict.cache_info().misses == 1
|
|
|
|
|
|
def test_memoize_from_dict(b):
|
|
alice = generate_key_pair()
|
|
asset = {"data": "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4"}
|
|
|
|
assert from_dict.cache_info().hits == 0
|
|
assert from_dict.cache_info().misses == 0
|
|
|
|
tx = Create.generate(
|
|
[alice.public_key],
|
|
[([alice.public_key], 1)],
|
|
asset=asset,
|
|
).sign([alice.private_key])
|
|
tx_dict = deepcopy(tx.to_dict())
|
|
|
|
Transaction.from_dict(tx_dict)
|
|
|
|
assert from_dict.cache_info().hits == 0
|
|
assert from_dict.cache_info().misses == 1
|
|
|
|
Transaction.from_dict(tx_dict)
|
|
Transaction.from_dict(tx_dict)
|
|
|
|
assert from_dict.cache_info().hits == 2
|
|
assert from_dict.cache_info().misses == 1
|
|
|
|
|
|
def test_memoize_input_valid(b):
|
|
alice = generate_key_pair()
|
|
asset = {"data": "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4"}
|
|
|
|
assert Transaction._input_valid.cache_info().hits == 0
|
|
assert Transaction._input_valid.cache_info().misses == 0
|
|
|
|
tx = Create.generate(
|
|
[alice.public_key],
|
|
[([alice.public_key], 1)],
|
|
asset=asset,
|
|
).sign([alice.private_key])
|
|
|
|
tx.inputs_valid()
|
|
|
|
assert Transaction._input_valid.cache_info().hits == 0
|
|
assert Transaction._input_valid.cache_info().misses == 1
|
|
|
|
tx.inputs_valid()
|
|
tx.inputs_valid()
|
|
|
|
assert Transaction._input_valid.cache_info().hits == 2
|
|
assert Transaction._input_valid.cache_info().misses == 1
|