diff --git a/silkaj/tx.py b/silkaj/tx.py index 5bac90ba886b2a0fe517c97e629ef35d871cca70..14e5676451b4c24e8e212641505f3ce4ad7a544f 100644 --- a/silkaj/tx.py +++ b/silkaj/tx.py @@ -194,7 +194,6 @@ def check_transaction_values( if ct.check_public_key(outputAddress, True) is False: tools.message_exit(outputAddress) if outputBackChange: - outputBackChange = ct.check_public_key(outputBackChange, True) if ct.check_public_key(outputBackChange, True) is False: tools.message_exit(outputBackChange) if enough_source: diff --git a/tests/test_unit_tx.py b/tests/test_unit_tx.py index d132608eb01cd38f0e95236591e2036fc233e89c..539444146a332363b32447e5ace8afe8f58e628d 100644 --- a/tests/test_unit_tx.py +++ b/tests/test_unit_tx.py @@ -14,6 +14,7 @@ from silkaj.tx import ( send_transaction, generate_and_send_transaction, display_sent_tx, + check_transaction_values, ) from silkaj.tui import display_amount, display_pubkey from silkaj.money import UDValue @@ -1238,3 +1239,98 @@ async def test_generate_and_send_transaction( with pytest.raises(SystemExit) as pytest_exit: await function_testing() assert pytest_exit.type == SystemExit + + +# test check_transaction_values() +@pytest.mark.parametrize( + "comment, outputAddresses, outputBackChange, enough_source, issuer_pubkey", + [ + ("Test", ("DBM6F5ChMJzpmkUdL5zD9UXKExmZGfQ1AgPDQy4MxSBw",), "", False, "A",), + ( + "Test", + ("DBM6F5ChMJzpmkUdL5zD9UXKExmZGfQ1AgPDQy4MxSBw",), + "HcRgKh4LwbQVYuAc3xAdCynYXpKoiPE6qdxCMa8JeHat", + False, + "A", + ), + ], +) +def test_check_transaction_values( + comment, outputAddresses, outputBackChange, enough_source, issuer_pubkey, capsys +): + check_transaction_values( + comment, outputAddresses, outputBackChange, enough_source, issuer_pubkey + ) + assert capsys.readouterr().out == "" + + +# test check_transaction_values() +@pytest.mark.parametrize( + "comment, outputAddresses, outputBackChange, enough_source, issuer_pubkey", + [ + ( + "Wrong_Char_é", + ("DBM6F5ChMJzpmkUdL5zD9UXKExmZGfQ1AgPDQy4MxSBw",), + "", + False, + "A", + ), + ("Test", ("Wrong_Pubkey",), "", False, "A",), + ( + "Test", + ("DBM6F5ChMJzpmkUdL5zD9UXKExmZGfQ1AgPDQy4MxSBw", "Wrong_Pubkey",), + "HcRgKh4LwbQVYuAc3xAdCynYXpKoiPE6qdxCMa8JeHat", + False, + "A", + ), + ( + "Test", + ("DBM6F5ChMJzpmkUdL5zD9UXKExmZGfQ1AgPDQy4MxSBw",), + "Wrong_Pubkey", + False, + "A", + ), + ( + "Test", + ("DBM6F5ChMJzpmkUdL5zD9UXKExmZGfQ1AgPDQy4MxSBw",), + "HcRgKh4LwbQVYuAc3xAdCynYXpKoiPE6qdxCMa8JeHat", + True, + "A", + ), + ( + "Too_Long_Comment_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + ("DBM6F5ChMJzpmkUdL5zD9UXKExmZGfQ1AgPDQy4MxSBw",), + "HcRgKh4LwbQVYuAc3xAdCynYXpKoiPE6qdxCMa8JeHat", + False, + "A", + ), + ], +) +def test_check_transaction_values_errors( + comment, outputAddresses, outputBackChange, enough_source, issuer_pubkey, capsys +): + with pytest.raises(SystemExit) as pytest_exit: + check_transaction_values( + comment, outputAddresses, outputBackChange, enough_source, issuer_pubkey + ) + display = capsys.readouterr() + if comment.find("Wrong_Char_") != -1: + assert display == "Error: the format of the comment is invalid" + elif comment.find("Too_Long_Comment_") != -1: + assert display == "Error: the format of the comment is invalid" + elif "Wrong_Pubkey" in outputAddresses: + assert display.out.find("Error: bad format for following public key:") != -1 + elif outputBackChange: + if outputBackChange == "Wrong_Pubkey": + assert ( + display.out.find("Error: bad format for following public key:") + != -1 + ) + elif enough_source is True: + assert ( + display.out.find( + "pubkey doesn’t have enough money for this transaction." + ) + != -1 + ) + assert pytest_exit.type == SystemExit