def test_verify_valid_signature(): data = {'data': 'test-data'} wallet = Wallet() signature = wallet.sign(data) assert Wallet.verify(wallet.public_key, data, signature)
def test_verify_tampered_data(): data = {'foo': 'test_data'} wallet = Wallet() signature = wallet.sign(data) data = {'foo': 'changed_data'} assert not Wallet.verify(wallet.public_key, data, signature)
def test_blockchain_valid_transaction_incorrect_historical_balance(blockchain): wallet = Wallet() bad_transaction = Transactions(wallet, 'recipient', 1) bad_transaction.output[wallet.address] = 9000 bad_transaction.input['amount'] = 9001 bad_transaction.input['signature'] = wallet.sign(bad_transaction.output) blockchain.add_block([bad_transaction.to_json()]) with pytest.raises(Exception, match="did not have the correct balance"): Blockchain.is_chain_transaction_valid(blockchain.chain)
def test_is_valid_transaction_chain_bad_histroric_balance(blockchain_3b): wallet = Wallet() bad_trans = Transaction(wallet, 'recipient', 1) bad_trans.output[wallet.address] = 9001 bad_trans.input['amount'] = 9002 bad_trans.input['signature'] = wallet.sign(bad_trans.output) blockchain_3b.add_block([bad_trans.to_json()]) with pytest.raises(Exception, match='has an invalid input amount.'): Blockchain.is_valid_trans_chain(blockchain_3b.chain)
def test_is_valid_transaction_chain_bad_balance_history(populated_blockchain): wallet = Wallet() bad_transaction = Transaction(wallet, 'recipient', 1) bad_transaction.output[wallet.address] = 9000 bad_transaction.input['amount'] = 9001 bad_transaction.input['signature'] = wallet.sign(bad_transaction.output) populated_blockchain.add_block([bad_transaction.to_json()]) with pytest.raises(Exception, match='invalid input amount'): Blockchain.is_valid_transaction_chain(populated_blockchain.chain)
def test_is_valid_transaction_bad_historic_balance(blockchain_three_blocks): wallet = Wallet() bad_transaction = Transaction(Wallet(), 'recipient', 1) bad_transaction.output[wallet.address] = 9000 bad_transaction.input['amount'] = 9001 bad_transaction.input['signature'] = wallet.sign(bad_transaction.output) blockchain_three_blocks.add_block([bad_transaction.to_json()]) with pytest.raises(Exception): Blockchain.is_valid_transaction_chain(blockchain_three_blocks.chain)
def test_is_transaction_chain_valid_balance_tillnow(blockchain_ten_blocks): wallet = Wallet() corrupt_transaction = Transaction(wallet, "abcd", 10) corrupt_transaction.output[wallet.address] = 9000 corrupt_transaction.input['amount'] = 9010 corrupt_transaction.input['signature'] = wallet.sign( corrupt_transaction.output) blockchain_ten_blocks.add_block([corrupt_transaction.to_json()]) with pytest.raises(Exception): BlockChain.is_transaction_chain_valid(blockchain_ten_blocks.chain)
def test_is_valid_transaction_chain_bad_history_balance( blockchain_three_blocks): wallet = Wallet() bad_transaction = Transaction(wallet, "recipient", 1) bad_transaction.output[wallet.address] = 9000 bad_transaction.input["amount"] = 9001 bad_transaction.input["signature"] = wallet.sign(bad_transaction.output) blockchain_three_blocks.add_block([bad_transaction.to_json()]) with pytest.raises(Exception, match="has an invalid input amount"): Blockchain.is_valid_transaction_chain(blockchain_three_blocks.chain)
def test_is_valid_transaction_chain_bad_history_balance( blockchain_three_blocks): wallet = Wallet() bad_transaction = Transaction(wallet, 'deadly_recipient', 1) bad_transaction.output[wallet.address] = 9999 bad_transaction.input['amount'] = 10000 bad_transaction.input['signature'] = wallet.sign(bad_transaction.output) blockchain_three_blocks.add_block([bad_transaction.to_json()]) with pytest.raises(Exception, match='has invalid input amount'): Blockchain.is_valid_transaction_chain(blockchain_three_blocks.chain)
def test_is_valid_transaction_chain_bad_historic_balance(blockchain_three_blocks): wallet = Wallet() bad_transaction = Transaction(wallet, 'recipient', 1) # don't understand the point of this line of code. the point of the test is to ensure bad data isn't entered into the input['amount'] field which would result in the sender wallet's balance getting inflated. altering the output[wallet.address] field only serves to change the signature result, as far as i can tell. the test even passes when commenting out this line of code. bad_transaction.output[wallet.address] = 9000 bad_transaction.input['amount'] = 9001 bad_transaction.input['signature'] = wallet.sign(bad_transaction.output) blockchain_three_blocks.add_block([bad_transaction.to_json()]) with pytest.raises(Exception, match='has invalid input amount'): Blockchain.is_valid_transaction_chain(blockchain_three_blocks.chain)
def test_invalid_transaction_chain_bad_historic_balance(blockchain_init): wallet = Wallet() bad_transaction = Transaction(wallet, "recipient", 1) bad_transaction.output[wallet.address] = 9999 bad_transaction.input["amount"] = 10000 bad_transaction.input["signature"] = wallet.sign(bad_transaction.output) blockchain_init.add_block([bad_transaction.to_json()]) with pytest.raises(Exception, match="invalid input amount."): Blockchain.is_valid_transaction_chain(blockchain_init.chain)
def test_is_valid_transaction_chain_bad_historic_balance(): blockchain_three_blocks = Blockchain() for i in range(3): blockchain_three_blocks.add_block([Transaction(Wallet(), 'recipient', i).to_json()]) wallet = Wallet() bad_transaction = Transaction(wallet, 'recipient', 5) bad_transaction.output[wallet.address] = 10000 bad_transaction.input['amount'] = 10005 bad_transaction.input['signature'] = wallet.sign(bad_transaction.output) blockchain_three_blocks.add_block([bad_transaction.to_json()]) with pytest.raises(Exception, match="has an invalid input amount"): Blockchain.is_valid_transaction_chain(blockchain_three_blocks.chain)
def test_verify_invalid_signature(): data = {'foo': 'test_data'} wallet = Wallet() signature = wallet.sign(data) assert not Wallet.verify(Wallet().public_key, data, signature)
def test_verify_wallet_invalid_signature(): data = {'test': 'test_data'} wallet = Wallet() signature = wallet.sign(data) assert not Wallet.verify(wallet.public_key, 'different-data', signature)
def test_veirfy_valid_signature(): ''' Test that a wallet can verify a valid signature correctly ''' data = {'foo': 'test_data'} wallet = Wallet() signature = wallet.sign(data) assert (Wallet.verify(wallet.public_key, data, signature))
def test_verify_signature(): data = {"block": "chain"} wallet = Wallet() signature = wallet.sign(data) assert Wallet.verify_signature(wallet.public_key, data, signature)
def test_verify_invalid_signature(): data = {"foo": "test-data"} wallet = Wallet() signature = wallet.sign(data) assert not Wallet.verify(Wallet().public_key, data, signature)
def test_verify_invalid_signature(): wallet = Wallet() data = {'foo':'bar'} signature = wallet.sign(data) assert not Wallet.verify(Wallet().public_key, data, signature) == True
def test_sign_data(): wallet = Wallet() data = {'foo':'bar'} assert wallet.sign(data)
def test_verify_valid_signature(): data = "test_data" wallet = Wallet() signature = wallet.sign(data) assert Wallet.verify(wallet.public_key, data, signature)
def test_verify_valid_signature(): data = {'foo': '_data'} wallet = Wallet() signa = wallet.sign(data) assert Wallet.verify(wallet.public_key, data, signa) is True
def test_verify_invalid_signature(): data = {'deadly_key': 'deadly_value'} wallet = Wallet() signature = wallet.sign(data) assert not Wallet.verify(Wallet().public_key, data, signature)
def test_verify_valid_signatures(): data = {'foo': 'bar'} wallet = Wallet() signature = wallet.sign(data) assert Wallet.verify(wallet.public_key, data, signature)