예제 #1
0
def test_verify_valid_signature():
    data = {'data': 'test-data'}
    wallet = Wallet()

    signature = wallet.sign(data)

    assert Wallet.verify(wallet.public_key, data, signature)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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)
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
def test_verify_invalid_signature():
    data = {'foo': 'test_data'}
    wallet = Wallet()
    signature = wallet.sign(data)
    assert not Wallet.verify(Wallet().public_key, data, signature)
예제 #14
0
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)
예제 #15
0
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))
예제 #16
0
def test_verify_signature():
    data = {"block": "chain"}
    wallet = Wallet()
    signature = wallet.sign(data)

    assert Wallet.verify_signature(wallet.public_key, data, signature)
예제 #17
0
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)
예제 #20
0
def test_verify_valid_signature():
    data = "test_data"
    wallet = Wallet()
    signature = wallet.sign(data)

    assert Wallet.verify(wallet.public_key, data, signature)
예제 #21
0
def test_verify_valid_signature():
    data = {'foo': '_data'}
    wallet = Wallet()
    signa = wallet.sign(data)

    assert Wallet.verify(wallet.public_key, data, signa) is True
예제 #22
0
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)