diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c32f696a..b73d51298 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ This changelog is based on [Keep a Changelog](https://keepachangelog.com/en/1.1. ### Added - Codecov workflow +- Added unit tests for `key_format.py` to improve coverage. - Fix inactivity bot execution for local dry-run testing. - Added documentation: "Testing GitHub Actions using Forks" (`docs/sdk_developers/training/testing_forks.md`). - Unified the inactivity-unassign bot into a single script with `DRY_RUN` support, and fixed handling of cross-repo PR references for stale detection. diff --git a/tests/unit/test_key_format.py b/tests/unit/test_key_format.py new file mode 100644 index 000000000..b11d5c98b --- /dev/null +++ b/tests/unit/test_key_format.py @@ -0,0 +1,73 @@ +"""Tests for the key_format module.""" + +import pytest + +from hiero_sdk_python.crypto.private_key import PrivateKey +from hiero_sdk_python.hapi.services import basic_types_pb2 +from hiero_sdk_python.utils.key_utils import key_to_proto +from hiero_sdk_python.utils.key_format import format_key + +pytestmark = pytest.mark.unit + +def test_format_key_ed25519(): + """Test formatting an Ed25519 key.""" + private_key = PrivateKey.generate_ed25519() + public_key = private_key.public_key() + + proto_key = key_to_proto(public_key) + formatted = format_key(proto_key) + + expected = f"ed25519({public_key.to_bytes_raw().hex()})" + + assert formatted == expected + +def test_format_key_none(): + """Test formatting a None key.""" + formatted = format_key(None) + + assert formatted == "None" + +def test_format_key_threshold_key(): + """Test formatting a ThresholdKey.""" + + key = basic_types_pb2.Key() + key.thresholdKey.threshold = 2 + + formatted = format_key(key) + + assert formatted == "thresholdKey(...)" + +def test_format_key_contract_id(): + """Test formatting a ContractID key.""" + + key = basic_types_pb2.Key() + key.contractID.shardNum = 0 + key.contractID.realmNum = 0 + key.contractID.contractNum = 5678 + + expected_inner = str(key.contractID) + expected = f"contractID({expected_inner})" + + formatted = format_key(key) + + assert formatted == expected + +def test_format_key_keylist(): + """Test formatting a KeyList.""" + + key = basic_types_pb2.Key() + key.keyList.keys.add() + + formatted = format_key(key) + + assert formatted == "keyList(...)" + +def test_format_key_unknown(): + """Test formatting an unknown key type.""" + key = basic_types_pb2.Key() + # Intentionally not setting any known key type + + formatted = format_key(key) + expected = str(key).replace("\n", " ") + + assert formatted == expected \ No newline at end of file