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

* adjusted hashlib imports and renamed to bigchaindb error Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * added type hints to transactions module Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved upsert_validator txs to transactions, updated imports Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed unused imports Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved tx validate to lib Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved from_db to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed from db from transaction Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved election validation to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved election methods to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved get_validators and get_recipients to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed unnecessary election method Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved show_election_status to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved topology check to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved election_id_to_public_key to validator_utils Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved vote methods to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved process_block to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed unused code from Vote Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved has election concluded to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * adjusted has_election_concluded Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed unused imports, added copyright notices Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved rollback_eleciton to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved on_rollback behaviour to planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * moved some validator utils to tendermint utils, election approval now handled by planetmint Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * Use planetmint-transaction pypi package Signed-off-by: cybnon <stefan.weber93@googlemail.com> * fixed docs imports Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed validate call on test case Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * resolved linting errors Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed mock on test case Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * adjusted CHANGELOG Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed duplicate transactions test suite Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed pr comments Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * reordered imports to be standardized Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * removed unused imports and reordered them Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> * fixed linter error Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com> Signed-off-by: cybnon <stefan.weber93@googlemail.com> Co-authored-by: cybnon <stefan.weber93@googlemail.com>
65 lines
2.0 KiB
Python
65 lines
2.0 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 base64
|
|
import json
|
|
|
|
from pytest import mark
|
|
from hashlib import sha3_256
|
|
|
|
|
|
def test_encode_decode_transaction(b):
|
|
from planetmint.tendermint_utils import encode_transaction, decode_transaction
|
|
|
|
asset = {"value": "key"}
|
|
|
|
encode_tx = encode_transaction(asset)
|
|
new_encode_tx = base64.b64encode(json.dumps(asset).encode("utf8")).decode("utf8")
|
|
|
|
assert encode_tx == new_encode_tx
|
|
|
|
de64 = base64.b64decode(encode_tx)
|
|
assert asset == decode_transaction(de64)
|
|
|
|
|
|
def test_calculate_hash_no_key(b):
|
|
from planetmint.tendermint_utils import calculate_hash
|
|
|
|
# pass an empty list
|
|
assert calculate_hash([]) == ""
|
|
|
|
|
|
# TODO test for the case of an empty list of hashes, and possibly other cases.
|
|
def test_merkleroot():
|
|
from planetmint.tendermint_utils import merkleroot
|
|
|
|
hashes = [sha3_256(i.encode()).digest() for i in "abc"]
|
|
assert merkleroot(hashes) == ("78c7c394d3158c218916b7ae0ebdea502e0f4e85c08e3b371e3dfd824d389fa3")
|
|
|
|
|
|
SAMPLE_PUBLIC_KEY = {
|
|
"address": "53DC09497A6ED73B342C78AB1E916076A03A8B95",
|
|
"pub_key": {"type": "AC26791624DE60", "value": "7S+T/do70jvneAq0M1so2X3M1iWTSuwtuSAr3nVpfEw="},
|
|
}
|
|
|
|
|
|
@mark.skip(
|
|
reason="ripemd160, the core of pulbic_key64_to_address is no longer supported by hashlib (from python 3.9.13 on)"
|
|
)
|
|
def test_convert_base64_public_key_to_address():
|
|
from planetmint.tendermint_utils import public_key64_to_address
|
|
|
|
address = public_key64_to_address(SAMPLE_PUBLIC_KEY["pub_key"]["value"])
|
|
assert address == SAMPLE_PUBLIC_KEY["address"]
|
|
|
|
|
|
def test_public_key_encoding_decoding():
|
|
from planetmint.tendermint_utils import public_key_from_base64, public_key_to_base64
|
|
|
|
public_key = public_key_from_base64(SAMPLE_PUBLIC_KEY["pub_key"]["value"])
|
|
base64_public_key = public_key_to_base64(public_key)
|
|
|
|
assert base64_public_key == SAMPLE_PUBLIC_KEY["pub_key"]["value"]
|