From e7e1021ffda15f9588426ca068d9b289845880e3 Mon Sep 17 00:00:00 2001 From: achalpatel Date: Fri, 19 Feb 2021 07:51:32 -0500 Subject: [PATCH 1/7] Improved test coverage --- src/thenewboston/blocks/signatures.py | 2 +- tests/accounts/key_files.py | 17 +++++++++++++++++ tests/blocks/signatures.py | 22 ++++++++++++++++++++++ tests/helpers.py | 20 ++++++++++++++++++++ 4 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 tests/blocks/signatures.py diff --git a/src/thenewboston/blocks/signatures.py b/src/thenewboston/blocks/signatures.py index 30f9176..08047a6 100644 --- a/src/thenewboston/blocks/signatures.py +++ b/src/thenewboston/blocks/signatures.py @@ -11,4 +11,4 @@ def verify_signature(*, message, signature, verify_key): """Verify block signature""" verify_key = VerifyKey(verify_key.encode('utf-8'), encoder=HexEncoder) signature = bytes.fromhex(signature) - verify_key.verify(message, signature) + return verify_key.verify(message, signature) == message diff --git a/tests/accounts/key_files.py b/tests/accounts/key_files.py index 7d5fa73..087b97c 100644 --- a/tests/accounts/key_files.py +++ b/tests/accounts/key_files.py @@ -30,3 +30,20 @@ def test_write_signing_key_file(tmpdir): write_signing_key_file(signing_key, file_path) assert signing_key == read_signing_key_file(file_path) + +def test_write_signing_key_file_not_signKey(tmpdir): + file_path = tmpdir.join('signing_key_file') + try: + write_signing_key_file(None, file_path) + except RuntimeError: + assert True + +def test_write_signing_key_file_path_exists(tmpdir): + file_path = tmpdir.join('signing_key_file.txt') + signing_key, account_number = create_account() + f = open(file_path,"w+") + f.close() + try: + write_signing_key_file(signing_key, file_path) + except RuntimeError: + assert True diff --git a/tests/blocks/signatures.py b/tests/blocks/signatures.py new file mode 100644 index 0000000..cff00c5 --- /dev/null +++ b/tests/blocks/signatures.py @@ -0,0 +1,22 @@ +from tests.helpers import generate_message +from thenewboston.accounts.manage import create_account +from thenewboston.blocks.signatures import (generate_signature, verify_signature) +from thenewboston.verify_keys.verify_key import encode_verify_key + + +def test_generate_signature(): + signing_key, account_number = create_account() + encoded_account_number = encode_verify_key(verify_key=account_number) + message = generate_message(encoded_account_number) + signature = generate_signature(message=message, signing_key=signing_key) + assert verify_signature(message=message, signature=signature, verify_key=encoded_account_number) + +# def test_verify_signature(): +# signing_key, account_number = create_account() +# encoded_account_number = encode_verify_key(verify_key=account_number) +# message = generate_message(encoded_account_number) +# signature = generate_signature(message=message, signing_key=signing_key) +# assert verify_signature(message=message, signature=signature, verify_key=encoded_account_number) + + + \ No newline at end of file diff --git a/tests/helpers.py b/tests/helpers.py index 46d7788..dccd4a5 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,7 +1,27 @@ +from operator import itemgetter from thenewboston.accounts.manage import create_account +from thenewboston.utils.tools import sort_and_encode from thenewboston.verify_keys.verify_key import encode_verify_key def random_encoded_account_number(): signing_key, account_number = create_account() return encode_verify_key(verify_key=account_number) + +def generate_message(encoded_account_number): + transactions = get_transactions() + message = { + 'balance_key': encoded_account_number, + 'txs': sorted(transactions, key=itemgetter('recipient')) + } + message=sort_and_encode(message) + return message + +def get_transactions(): + transactions = [ + { + 'amount': 1, + 'recipient': random_encoded_account_number(), + } + ] + return transactions \ No newline at end of file From 120b79740324934b4b3e0b931a97a6c61b85763e Mon Sep 17 00:00:00 2001 From: achalpatel Date: Fri, 19 Feb 2021 07:52:46 -0500 Subject: [PATCH 2/7] Improved test coverage --- tests/accounts/key_files.py | 4 +++- tests/blocks/signatures.py | 10 +++++----- tests/helpers.py | 9 ++++++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/tests/accounts/key_files.py b/tests/accounts/key_files.py index 087b97c..f16c91b 100644 --- a/tests/accounts/key_files.py +++ b/tests/accounts/key_files.py @@ -31,6 +31,7 @@ def test_write_signing_key_file(tmpdir): assert signing_key == read_signing_key_file(file_path) + def test_write_signing_key_file_not_signKey(tmpdir): file_path = tmpdir.join('signing_key_file') try: @@ -38,10 +39,11 @@ def test_write_signing_key_file_not_signKey(tmpdir): except RuntimeError: assert True + def test_write_signing_key_file_path_exists(tmpdir): file_path = tmpdir.join('signing_key_file.txt') signing_key, account_number = create_account() - f = open(file_path,"w+") + f = open(file_path, 'w+') f.close() try: write_signing_key_file(signing_key, file_path) diff --git a/tests/blocks/signatures.py b/tests/blocks/signatures.py index cff00c5..5989234 100644 --- a/tests/blocks/signatures.py +++ b/tests/blocks/signatures.py @@ -1,13 +1,16 @@ from tests.helpers import generate_message + from thenewboston.accounts.manage import create_account -from thenewboston.blocks.signatures import (generate_signature, verify_signature) +from thenewboston.blocks.signatures import ( + generate_signature, verify_signature +) from thenewboston.verify_keys.verify_key import encode_verify_key def test_generate_signature(): signing_key, account_number = create_account() encoded_account_number = encode_verify_key(verify_key=account_number) - message = generate_message(encoded_account_number) + message = generate_message(encoded_account_number) signature = generate_signature(message=message, signing_key=signing_key) assert verify_signature(message=message, signature=signature, verify_key=encoded_account_number) @@ -17,6 +20,3 @@ def test_generate_signature(): # message = generate_message(encoded_account_number) # signature = generate_signature(message=message, signing_key=signing_key) # assert verify_signature(message=message, signature=signature, verify_key=encoded_account_number) - - - \ No newline at end of file diff --git a/tests/helpers.py b/tests/helpers.py index dccd4a5..28b478e 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,4 +1,5 @@ from operator import itemgetter + from thenewboston.accounts.manage import create_account from thenewboston.utils.tools import sort_and_encode from thenewboston.verify_keys.verify_key import encode_verify_key @@ -8,15 +9,17 @@ def random_encoded_account_number(): signing_key, account_number = create_account() return encode_verify_key(verify_key=account_number) + def generate_message(encoded_account_number): - transactions = get_transactions() + transactions = get_transactions() message = { 'balance_key': encoded_account_number, 'txs': sorted(transactions, key=itemgetter('recipient')) } - message=sort_and_encode(message) + message = sort_and_encode(message) return message + def get_transactions(): transactions = [ { @@ -24,4 +27,4 @@ def get_transactions(): 'recipient': random_encoded_account_number(), } ] - return transactions \ No newline at end of file + return transactions From d7fe110803f932da0e351f607eb9b97ecd876bc8 Mon Sep 17 00:00:00 2001 From: achalpatel Date: Fri, 19 Feb 2021 09:53:43 -0500 Subject: [PATCH 3/7] Test coverage improved --- tests/utils/format.py | 9 +++++++++ tests/verify_keys/verify_key.py | 13 +++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 tests/utils/format.py create mode 100644 tests/verify_keys/verify_key.py diff --git a/tests/utils/format.py b/tests/utils/format.py new file mode 100644 index 0000000..3267f85 --- /dev/null +++ b/tests/utils/format.py @@ -0,0 +1,9 @@ +from thenewboston.utils.format import format_address + + +def test_format_address(): + ip_address = '127.0.0.1' + port = '80' + protocol = 'http' + assert f'{protocol}://{ip_address}:{port}' == format_address(ip_address=ip_address, port=port, protocol=protocol) + assert f'{protocol}://{ip_address}' == format_address(ip_address=ip_address, port='', protocol=protocol) diff --git a/tests/verify_keys/verify_key.py b/tests/verify_keys/verify_key.py new file mode 100644 index 0000000..a3fc45c --- /dev/null +++ b/tests/verify_keys/verify_key.py @@ -0,0 +1,13 @@ +import pytest + +from thenewboston.verify_keys.verify_key import encode_verify_key, get_verify_key + + +def test_encode_verify_key_raise_exception(): + with pytest.raises(RuntimeError): + encode_verify_key(verify_key=None) + + +def test_get_verify_key_raise_exception(): + with pytest.raises(RuntimeError): + get_verify_key(signing_key=None) From 9b375ef36980253820ab76ab45c5ae6355be9b4f Mon Sep 17 00:00:00 2001 From: achalpatel Date: Sun, 21 Feb 2021 08:11:32 -0500 Subject: [PATCH 4/7] Improved test coverage --- tests/utils/network.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 tests/utils/network.py diff --git a/tests/utils/network.py b/tests/utils/network.py new file mode 100644 index 0000000..003602e --- /dev/null +++ b/tests/utils/network.py @@ -0,0 +1,7 @@ +from thenewboston.utils.network import fetch, post + + +def test_fetch(): + url = 'http://54.183.17.224/config' + body = {'key':'value'} + assert post(url=url, body=body) == fetch(url=url, headers=None) \ No newline at end of file From 23c15aff797c85f7c17d5805523f5bfc01637292 Mon Sep 17 00:00:00 2001 From: achalpatel Date: Sun, 21 Feb 2021 09:31:36 -0500 Subject: [PATCH 5/7] Transaction validation test added --- tests/helpers.py | 12 ++++++++++++ tests/transactions/validation.py | 32 ++++++++++++++++++++++++++++++++ tests/utils/network.py | 7 ------- 3 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 tests/transactions/validation.py delete mode 100644 tests/utils/network.py diff --git a/tests/helpers.py b/tests/helpers.py index 28b478e..54263a0 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -24,7 +24,19 @@ def get_transactions(): transactions = [ { 'amount': 1, + 'fee' : 1, + 'recipient': random_encoded_account_number(), + }, + { + 'amount': 2, + 'fee' : 1, + 'recipient': random_encoded_account_number(), + }, + { + 'amount': 3, + 'fee' : 1, 'recipient': random_encoded_account_number(), } ] return transactions + \ No newline at end of file diff --git a/tests/transactions/validation.py b/tests/transactions/validation.py new file mode 100644 index 0000000..b179e54 --- /dev/null +++ b/tests/transactions/validation.py @@ -0,0 +1,32 @@ +from tests.helpers import random_encoded_account_number +from thenewboston.transactions.validation import validate_transaction_exists + +def test_validate_transaction_exists(): + account = random_encoded_account_number() + amount = 1 + fee = 1 + error = RuntimeError + transactions = [ + { + 'amount': amount, + 'fee' : fee, + 'recipient': account, + }, + { + 'amount': 2, + 'fee' : fee, + 'recipient': account, + }, + ] + try: + validate_transaction_exists(amount=amount, fee=fee, error=error, recipient=account, txs=transactions) + validate_transaction_exists(amount=amount+1, fee=fee, error=error, recipient=account, txs=transactions) + assert True + except error: + assert False + try: + validate_transaction_exists(amount=amount, fee=3, error=error, recipient=account, txs=transactions) + validate_transaction_exists(amount=amount, fee=fee, error=error, recipient=random_encoded_account_number(), txs=transactions) + assert False + except error: + assert True \ No newline at end of file diff --git a/tests/utils/network.py b/tests/utils/network.py deleted file mode 100644 index 003602e..0000000 --- a/tests/utils/network.py +++ /dev/null @@ -1,7 +0,0 @@ -from thenewboston.utils.network import fetch, post - - -def test_fetch(): - url = 'http://54.183.17.224/config' - body = {'key':'value'} - assert post(url=url, body=body) == fetch(url=url, headers=None) \ No newline at end of file From f4dc6b3cf8f4779539864ccf76644fe706a95d3f Mon Sep 17 00:00:00 2001 From: achalpatel Date: Sun, 21 Feb 2021 10:00:07 -0500 Subject: [PATCH 6/7] Test added --- src/thenewboston/blocks/signatures.py | 2 +- tests/accounts/key_files.py | 19 --------------- tests/blocks/signatures.py | 22 ----------------- tests/helpers.py | 35 +-------------------------- tests/utils/format.py | 9 ------- tests/verify_keys/verify_key.py | 13 ---------- 6 files changed, 2 insertions(+), 98 deletions(-) delete mode 100644 tests/blocks/signatures.py delete mode 100644 tests/utils/format.py delete mode 100644 tests/verify_keys/verify_key.py diff --git a/src/thenewboston/blocks/signatures.py b/src/thenewboston/blocks/signatures.py index 08047a6..30f9176 100644 --- a/src/thenewboston/blocks/signatures.py +++ b/src/thenewboston/blocks/signatures.py @@ -11,4 +11,4 @@ def verify_signature(*, message, signature, verify_key): """Verify block signature""" verify_key = VerifyKey(verify_key.encode('utf-8'), encoder=HexEncoder) signature = bytes.fromhex(signature) - return verify_key.verify(message, signature) == message + verify_key.verify(message, signature) diff --git a/tests/accounts/key_files.py b/tests/accounts/key_files.py index f16c91b..7d5fa73 100644 --- a/tests/accounts/key_files.py +++ b/tests/accounts/key_files.py @@ -30,22 +30,3 @@ def test_write_signing_key_file(tmpdir): write_signing_key_file(signing_key, file_path) assert signing_key == read_signing_key_file(file_path) - - -def test_write_signing_key_file_not_signKey(tmpdir): - file_path = tmpdir.join('signing_key_file') - try: - write_signing_key_file(None, file_path) - except RuntimeError: - assert True - - -def test_write_signing_key_file_path_exists(tmpdir): - file_path = tmpdir.join('signing_key_file.txt') - signing_key, account_number = create_account() - f = open(file_path, 'w+') - f.close() - try: - write_signing_key_file(signing_key, file_path) - except RuntimeError: - assert True diff --git a/tests/blocks/signatures.py b/tests/blocks/signatures.py deleted file mode 100644 index 5989234..0000000 --- a/tests/blocks/signatures.py +++ /dev/null @@ -1,22 +0,0 @@ -from tests.helpers import generate_message - -from thenewboston.accounts.manage import create_account -from thenewboston.blocks.signatures import ( - generate_signature, verify_signature -) -from thenewboston.verify_keys.verify_key import encode_verify_key - - -def test_generate_signature(): - signing_key, account_number = create_account() - encoded_account_number = encode_verify_key(verify_key=account_number) - message = generate_message(encoded_account_number) - signature = generate_signature(message=message, signing_key=signing_key) - assert verify_signature(message=message, signature=signature, verify_key=encoded_account_number) - -# def test_verify_signature(): -# signing_key, account_number = create_account() -# encoded_account_number = encode_verify_key(verify_key=account_number) -# message = generate_message(encoded_account_number) -# signature = generate_signature(message=message, signing_key=signing_key) -# assert verify_signature(message=message, signature=signature, verify_key=encoded_account_number) diff --git a/tests/helpers.py b/tests/helpers.py index 54263a0..5efb7d5 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,42 +1,9 @@ -from operator import itemgetter from thenewboston.accounts.manage import create_account -from thenewboston.utils.tools import sort_and_encode + from thenewboston.verify_keys.verify_key import encode_verify_key def random_encoded_account_number(): signing_key, account_number = create_account() return encode_verify_key(verify_key=account_number) - - -def generate_message(encoded_account_number): - transactions = get_transactions() - message = { - 'balance_key': encoded_account_number, - 'txs': sorted(transactions, key=itemgetter('recipient')) - } - message = sort_and_encode(message) - return message - - -def get_transactions(): - transactions = [ - { - 'amount': 1, - 'fee' : 1, - 'recipient': random_encoded_account_number(), - }, - { - 'amount': 2, - 'fee' : 1, - 'recipient': random_encoded_account_number(), - }, - { - 'amount': 3, - 'fee' : 1, - 'recipient': random_encoded_account_number(), - } - ] - return transactions - \ No newline at end of file diff --git a/tests/utils/format.py b/tests/utils/format.py deleted file mode 100644 index 3267f85..0000000 --- a/tests/utils/format.py +++ /dev/null @@ -1,9 +0,0 @@ -from thenewboston.utils.format import format_address - - -def test_format_address(): - ip_address = '127.0.0.1' - port = '80' - protocol = 'http' - assert f'{protocol}://{ip_address}:{port}' == format_address(ip_address=ip_address, port=port, protocol=protocol) - assert f'{protocol}://{ip_address}' == format_address(ip_address=ip_address, port='', protocol=protocol) diff --git a/tests/verify_keys/verify_key.py b/tests/verify_keys/verify_key.py deleted file mode 100644 index a3fc45c..0000000 --- a/tests/verify_keys/verify_key.py +++ /dev/null @@ -1,13 +0,0 @@ -import pytest - -from thenewboston.verify_keys.verify_key import encode_verify_key, get_verify_key - - -def test_encode_verify_key_raise_exception(): - with pytest.raises(RuntimeError): - encode_verify_key(verify_key=None) - - -def test_get_verify_key_raise_exception(): - with pytest.raises(RuntimeError): - get_verify_key(signing_key=None) From 9a455cf259f0c0ddc102774422872bf90053df97 Mon Sep 17 00:00:00 2001 From: achalpatel Date: Sun, 21 Feb 2021 10:21:59 -0500 Subject: [PATCH 7/7] Validation test added --- tests/helpers.py | 2 -- tests/transactions/validation.py | 16 +++++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/helpers.py b/tests/helpers.py index 5efb7d5..46d7788 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,6 +1,4 @@ - from thenewboston.accounts.manage import create_account - from thenewboston.verify_keys.verify_key import encode_verify_key diff --git a/tests/transactions/validation.py b/tests/transactions/validation.py index b179e54..06071ea 100644 --- a/tests/transactions/validation.py +++ b/tests/transactions/validation.py @@ -1,6 +1,8 @@ from tests.helpers import random_encoded_account_number + from thenewboston.transactions.validation import validate_transaction_exists + def test_validate_transaction_exists(): account = random_encoded_account_number() amount = 1 @@ -9,24 +11,24 @@ def test_validate_transaction_exists(): transactions = [ { 'amount': amount, - 'fee' : fee, + 'fee': fee, 'recipient': account, }, { 'amount': 2, - 'fee' : fee, + 'fee': fee, 'recipient': account, - }, + }, ] try: validate_transaction_exists(amount=amount, fee=fee, error=error, recipient=account, txs=transactions) - validate_transaction_exists(amount=amount+1, fee=fee, error=error, recipient=account, txs=transactions) + validate_transaction_exists(amount=amount + 1, fee=fee, error=error, recipient=account, txs=transactions) assert True except error: - assert False + raise AssertionError() try: validate_transaction_exists(amount=amount, fee=3, error=error, recipient=account, txs=transactions) validate_transaction_exists(amount=amount, fee=fee, error=error, recipient=random_encoded_account_number(), txs=transactions) - assert False + assert AssertionError() except error: - assert True \ No newline at end of file + assert True