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

* adjusted utxo space to resemble outputs Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added update_utxoset, removed deprecated test utils Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed test_update_utxoset Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed deprecated query and test cases Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed delete_unspent_outputs tests Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved get_merkget_utxoset_merkle_root to dataaccessor and fixed test cases Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed delete_transactions query Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed deprecated fixtures Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * blackified Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added get_outputs_by_owner query and adjusted dataaccessor Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed fastquery class Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed api test case Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed TestMultipleInputs Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed get_outputs_filtered test cases Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed get_spent naming issue Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * blackified Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * updated changelog and version bump Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> --------- Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
95 lines
3.0 KiB
Python
95 lines
3.0 KiB
Python
# Copyright <20> 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 transactions.types.assets.create import Create
|
||
from transactions.types.assets.transfer import Transfer
|
||
|
||
|
||
@pytest.fixture
|
||
def config(request, monkeypatch):
|
||
backend = request.config.getoption("--database-backend")
|
||
if backend == "mongodb-ssl":
|
||
backend = "mongodb"
|
||
|
||
config = {
|
||
"database": {
|
||
"backend": backend,
|
||
"host": "localhost",
|
||
"port": 3303,
|
||
"name": "bigchain",
|
||
"replicaset": "bigchain-rs",
|
||
"connection_timeout": 5000,
|
||
"max_tries": 3,
|
||
"name": "bigchain",
|
||
},
|
||
"tendermint": {
|
||
"host": "tendermint",
|
||
"port": 26657,
|
||
},
|
||
"CONFIGURED": True,
|
||
}
|
||
|
||
monkeypatch.setattr("planetmint.config", config)
|
||
return config
|
||
|
||
|
||
def test_bigchain_class_default_initialization(config):
|
||
from planetmint.application import Validator
|
||
from planetmint.application.basevalidationrules import BaseValidationRules
|
||
|
||
validator = Validator()
|
||
assert validator.models.connection.host == config["database"]["host"]
|
||
assert validator.models.connection.port == config["database"]["port"]
|
||
assert validator.validation == BaseValidationRules
|
||
|
||
|
||
@pytest.mark.bdb
|
||
def test_get_spending_transaction_issue_1271(b, alice, bob, carol):
|
||
tx_1 = Create.generate(
|
||
[carol.public_key],
|
||
[([carol.public_key], 8)],
|
||
).sign([carol.private_key])
|
||
assert b.validate_transaction(tx_1)
|
||
b.models.store_bulk_transactions([tx_1])
|
||
|
||
tx_2 = Transfer.generate(
|
||
tx_1.to_inputs(),
|
||
[([bob.public_key], 2), ([alice.public_key], 2), ([carol.public_key], 4)],
|
||
asset_ids=[tx_1.id],
|
||
).sign([carol.private_key])
|
||
assert b.validate_transaction(tx_2)
|
||
b.models.store_bulk_transactions([tx_2])
|
||
|
||
tx_3 = Transfer.generate(
|
||
tx_2.to_inputs()[2:3],
|
||
[([alice.public_key], 1), ([carol.public_key], 3)],
|
||
asset_ids=[tx_1.id],
|
||
).sign([carol.private_key])
|
||
assert b.validate_transaction(tx_3)
|
||
b.models.store_bulk_transactions([tx_3])
|
||
|
||
tx_4 = Transfer.generate(
|
||
tx_2.to_inputs()[1:2] + tx_3.to_inputs()[0:1],
|
||
[([bob.public_key], 3)],
|
||
asset_ids=[tx_1.id],
|
||
).sign([alice.private_key])
|
||
assert b.validate_transaction(tx_4)
|
||
b.models.store_bulk_transactions([tx_4])
|
||
|
||
tx_5 = Transfer.generate(
|
||
tx_2.to_inputs()[0:1],
|
||
[([alice.public_key], 2)],
|
||
asset_ids=[tx_1.id],
|
||
).sign([bob.private_key])
|
||
assert b.validate_transaction(tx_5)
|
||
|
||
b.models.store_bulk_transactions([tx_5])
|
||
assert b.models.get_spending_transaction(tx_2.id, 0) == tx_5.to_dict()
|
||
assert not b.models.get_spending_transaction(tx_5.id, 0)
|
||
assert b.models.get_outputs_filtered(alice.public_key)
|
||
assert b.models.get_outputs_filtered(alice.public_key, spent=False)
|