|
25 | 25 | from hiero_sdk_python.response_code import ResponseCode |
26 | 26 | from hiero_sdk_python.tokens.token_id import TokenId |
27 | 27 | from hiero_sdk_python.tokens.token_mint_transaction import TokenMintTransaction |
28 | | -from hiero_sdk_python.transaction.transaction import Transaction |
| 28 | +from hiero_sdk_python.transaction.transaction import SignableNodeTransactionBodyBytes, Transaction |
29 | 29 | from hiero_sdk_python.transaction.transaction_id import TransactionId |
30 | 30 | from hiero_sdk_python.transaction.transaction_receipt import TransactionReceipt |
31 | 31 | from hiero_sdk_python.transaction.transaction_response import TransactionResponse |
@@ -730,3 +730,47 @@ def test_serialization_of_single_transaction(): |
730 | 730 | assert tx1.initial_balance == tx2.initial_balance |
731 | 731 | assert tx2.node_account_id == node_account_id |
732 | 732 | assert tx2.transaction_id == transaction_id |
| 733 | + |
| 734 | + |
| 735 | +def test_get_signable_node_bytes(): |
| 736 | + """Test that get signable node body bytes return the transaction body bytes lists.""" |
| 737 | + key = PrivateKey.generate_ecdsa() |
| 738 | + transaction_id = TransactionId.generate(AccountId(0, 0, 5)) |
| 739 | + node_account_ids = [AccountId(0, 0, 4), AccountId(0, 0, 3)] |
| 740 | + |
| 741 | + tx = ( |
| 742 | + AccountCreateTransaction() |
| 743 | + .set_key_without_alias(key) |
| 744 | + .set_initial_balance(1) |
| 745 | + .set_account_memo("test account") |
| 746 | + .set_node_account_ids(node_account_ids) |
| 747 | + .set_transaction_id(transaction_id) |
| 748 | + .freeze() |
| 749 | + ) |
| 750 | + |
| 751 | + signable_bytes = tx.get_signable_node_body_bytes_list() |
| 752 | + |
| 753 | + assert signable_bytes is not None |
| 754 | + assert isinstance(signable_bytes, list) |
| 755 | + assert len(signable_bytes) == 2 # single tx_id for 2 node_ids |
| 756 | + for tx_bytes in signable_bytes: |
| 757 | + assert isinstance(tx_bytes, SignableNodeTransactionBodyBytes) |
| 758 | + |
| 759 | + |
| 760 | +def test_get_signable_node_bytes_raise_error_if_not_frozen(): |
| 761 | + """Test that get signable node body bytes rraise exception if the transaction not frozen.""" |
| 762 | + key = PrivateKey.generate_ecdsa() |
| 763 | + transaction_id = TransactionId.generate(AccountId(0, 0, 5)) |
| 764 | + node_account_ids = [AccountId(0, 0, 4), AccountId(0, 0, 3)] |
| 765 | + |
| 766 | + tx = ( |
| 767 | + AccountCreateTransaction() |
| 768 | + .set_key_without_alias(key) |
| 769 | + .set_initial_balance(1) |
| 770 | + .set_account_memo("test account") |
| 771 | + .set_node_account_ids(node_account_ids) |
| 772 | + .set_transaction_id(transaction_id) |
| 773 | + ) |
| 774 | + |
| 775 | + with pytest.raises(Exception, match="Transaction is not frozen"): |
| 776 | + tx.get_signable_node_body_bytes_list() |
0 commit comments