コード例 #1
0
def test_invalid_transaction(block):
    # Leave tx unsigned
    new_transaction = VaccineTransaction("some vaccine", PUBLIC_KEY)
    block.add_transaction(new_transaction)
    block.sign(PRIVATE_KEY)
    block.update_hash()
    is_valid = validate_block(block, GENESIS)
    assert is_valid is False, "Invalid transaction"
コード例 #2
0
def test_too_many_transactions(block):
    for index in range(CONFIG.block_size):
        new_transaction = VaccineTransaction(str(index), PUBLIC_KEY).sign(PRIVATE_KEY)
        block.add_transaction(new_transaction)
    block.sign(PRIVATE_KEY)
    block.update_hash()
    is_valid = validate_block(block, GENESIS)
    assert is_valid is False, "Too many transactions"
コード例 #3
0
def test_too_few_transactions(block):
    block.transactions = []
    block.sign(PRIVATE_KEY)
    block.update_hash()
    is_valid = validate_block(block, GENESIS)
    # WONTFIX: Actually, a block should never be empty. However, we leave this
    # check disabled for demo purposes.
    # assert is_valid is False, "Too few transactions"
    assert is_valid is True
コード例 #4
0
def test_signature_validity(block):
    block.sign(PRIVATE_KEY)
    block.timestamp = int(time()) - 10
    block.update_hash()
    is_valid = validate_block(block, GENESIS)
    assert is_valid is False, "Invalid signature"
コード例 #5
0
def test_timestamp(block):
    block.timestamp = int(time()) + 50000000
    block.sign(PRIVATE_KEY)
    block.update_hash()
    is_valid = validate_block(block, GENESIS)
    assert is_valid is False, "Did not detect wrong version"
コード例 #6
0
def test_version(block):
    block.version = "0"
    block.sign(PRIVATE_KEY)
    block.update_hash()
    is_valid = validate_block(block, GENESIS)
    assert is_valid is False, "Did not detect wrong version"
コード例 #7
0
def test_previous_block_hash(block):
    block.previous_block = "some random hash"
    block.sign(PRIVATE_KEY)
    block.update_hash()
    is_valid = validate_block(block, GENESIS)
    assert is_valid is False, "Did not detect wrong prev. block hash"
コード例 #8
0
def test_index(block):
    block.index = 2000
    block.sign(PRIVATE_KEY)
    block.update_hash()
    is_valid = validate_block(block, GENESIS)
    assert is_valid is False, "Did not detect wrong index"
コード例 #9
0
def test_no_previous_block_passed(block):
    block.sign(PRIVATE_KEY)
    block.update_hash()
    is_valid = validate_block(block, None)
    assert is_valid is False, "Validated block without previous block"
コード例 #10
0
def test_initial_block_is_valid(block):
    block.sign(PRIVATE_KEY)
    block.update_hash()
    is_valid = validate_block(block, GENESIS)
    assert is_valid is True, "Error in initial block"
コード例 #11
0
def test_wrong_hash(block):
    block.sign(PRIVATE_KEY)
    block.hash = "4886f70d010101050"
    is_valid = validate_block(block, GENESIS)
    assert is_valid is False, "Invalid hash"
コード例 #12
0
def test_duplicate_transactions(block):
    block.add_transaction(block.transactions[0])
    block.sign(PRIVATE_KEY)
    block.update_hash()
    is_valid = validate_block(block, GENESIS)
    assert is_valid is False, "Duplicate transactions"