make all tests pass after vote schema introduction

This commit is contained in:
Scott Sadler 2016-11-25 11:58:41 +01:00
parent ef5f3ddd28
commit 44a43dcf94
3 changed files with 65 additions and 56 deletions

View File

@ -108,7 +108,7 @@ class TestBigchainApi(object):
block2 = b.create_block([transfer_tx]) block2 = b.create_block([transfer_tx])
b.write_block(block2, durability='hard') b.write_block(block2, durability='hard')
monkeypatch.setattr('time.time', lambda: 3) monkeypatch.setattr('time.time', lambda: 3333333333)
transfer_tx2 = Transaction.transfer(tx.to_inputs(), [([b.me], 1)], transfer_tx2 = Transaction.transfer(tx.to_inputs(), [([b.me], 1)],
tx.asset) tx.asset)
transfer_tx2 = transfer_tx2.sign([b.me_private]) transfer_tx2 = transfer_tx2.sign([b.me_private])
@ -137,7 +137,7 @@ class TestBigchainApi(object):
block1 = b.create_block([tx]) block1 = b.create_block([tx])
b.write_block(block1, durability='hard') b.write_block(block1, durability='hard')
monkeypatch.setattr('time.time', lambda: 2) monkeypatch.setattr('time.time', lambda: 2222222222)
block2 = b.create_block([tx]) block2 = b.create_block([tx])
b.write_block(block2, durability='hard') b.write_block(block2, durability='hard')
@ -161,7 +161,7 @@ class TestBigchainApi(object):
block1 = b.create_block([tx1]) block1 = b.create_block([tx1])
b.write_block(block1, durability='hard') b.write_block(block1, durability='hard')
monkeypatch.setattr('time.time', lambda: 2) monkeypatch.setattr('time.time', lambda: 2222222222)
tx2 = Transaction.create([b.me], [([b.me], 1)]) tx2 = Transaction.create([b.me], [([b.me], 1)])
tx2 = tx2.sign([b.me_private]) tx2 = tx2.sign([b.me_private])
block2 = b.create_block([tx2]) block2 = b.create_block([tx2])

View File

@ -28,8 +28,10 @@ def test_check_for_quorum_invalid(b, user_pk):
b.write_block(test_block) b.write_block(test_block)
# split_vote (invalid) # split_vote (invalid)
votes = [member.vote(test_block.id, 'abc', True) for member in test_federation[:2]] + \ votes = [member.vote(test_block.id, 'a' * 64, True)
[member.vote(test_block.id, 'abc', False) for member in test_federation[2:]] for member in test_federation[:2]] + \
[member.vote(test_block.id, 'b' * 64, False)
for member in test_federation[2:]]
# cast votes # cast votes
for vote in votes: for vote in votes:
@ -49,8 +51,10 @@ def test_check_for_quorum_invalid_prev_node(b, user_pk):
# simulate a federation with four voters # simulate a federation with four voters
key_pairs = [crypto.generate_key_pair() for _ in range(4)] key_pairs = [crypto.generate_key_pair() for _ in range(4)]
test_federation = [Bigchain(public_key=key_pair[1], private_key=key_pair[0]) test_federation = [
for key_pair in key_pairs] Bigchain(public_key=key_pair[1], private_key=key_pair[0])
for key_pair in key_pairs
]
# add voters to block and write # add voters to block and write
test_block.voters = [key_pair[1] for key_pair in key_pairs] test_block.voters = [key_pair[1] for key_pair in key_pairs]
@ -58,8 +62,10 @@ def test_check_for_quorum_invalid_prev_node(b, user_pk):
b.write_block(test_block) b.write_block(test_block)
# split vote over prev node # split vote over prev node
votes = [member.vote(test_block.id, 'abc', True) for member in test_federation[:2]] + \ votes = [member.vote(test_block.id, 'a' * 64, True)
[member.vote(test_block.id, 'def', True) for member in test_federation[2:]] for member in test_federation[:2]] + \
[member.vote(test_block.id, 'b' * 64, True)
for member in test_federation[2:]]
# cast votes # cast votes
for vote in votes: for vote in votes:
@ -80,8 +86,10 @@ def test_check_for_quorum_valid(b, user_pk):
# simulate a federation with four voters # simulate a federation with four voters
key_pairs = [crypto.generate_key_pair() for _ in range(4)] key_pairs = [crypto.generate_key_pair() for _ in range(4)]
test_federation = [Bigchain(public_key=key_pair[1], private_key=key_pair[0]) test_federation = [
for key_pair in key_pairs] Bigchain(public_key=key_pair[1], private_key=key_pair[0])
for key_pair in key_pairs
]
# add voters to block and write # add voters to block and write
test_block.voters = [key_pair[1] for key_pair in key_pairs] test_block.voters = [key_pair[1] for key_pair in key_pairs]
@ -89,7 +97,7 @@ def test_check_for_quorum_valid(b, user_pk):
b.write_block(test_block) b.write_block(test_block)
# votes for block one # votes for block one
votes = [member.vote(test_block.id, 'abc', True) votes = [member.vote(test_block.id, 'a' * 64, True)
for member in test_federation] for member in test_federation]
# cast votes # cast votes
for vote in votes: for vote in votes:
@ -158,8 +166,8 @@ def test_full_pipeline(b, user_pk):
pipeline.start() pipeline.start()
time.sleep(1) time.sleep(1)
# vote one block valid, one invalid # vote one block valid, one invalid
vote_valid = b.vote(valid_block.id, 'abc', True) vote_valid = b.vote(valid_block.id, 'b' * 64, True)
vote_invalid = b.vote(invalid_block.id, 'abc', False) vote_invalid = b.vote(invalid_block.id, 'c' * 64, False)
b.write_vote(vote_valid) b.write_vote(vote_valid)
b.write_vote(vote_invalid) b.write_vote(vote_invalid)

View File

@ -37,7 +37,7 @@ def test_vote_creation_valid(b):
assert vote['node_pubkey'] == b.me assert vote['node_pubkey'] == b.me
assert isinstance(vote['signature'], str) assert isinstance(vote['signature'], str)
assert crypto.PublicKey(b.me).verify(serialize(vote['vote']).encode(), assert crypto.PublicKey(b.me).verify(serialize(vote['vote']).encode(),
vote['signature']) is True vote['signature']) is True
def test_vote_creation_invalid(b): def test_vote_creation_invalid(b):
@ -56,7 +56,7 @@ def test_vote_creation_invalid(b):
assert vote['vote']['invalid_reason'] is None assert vote['vote']['invalid_reason'] is None
assert vote['node_pubkey'] == b.me assert vote['node_pubkey'] == b.me
assert crypto.PublicKey(b.me).verify(serialize(vote['vote']).encode(), assert crypto.PublicKey(b.me).verify(serialize(vote['vote']).encode(),
vote['signature']) is True vote['signature']) is True
def test_vote_ungroup_returns_a_set_of_results(b): def test_vote_ungroup_returns_a_set_of_results(b):
@ -160,7 +160,7 @@ def test_valid_block_voting_sequential(b, monkeypatch):
from bigchaindb.common import crypto, util from bigchaindb.common import crypto, util
from bigchaindb.pipelines import vote from bigchaindb.pipelines import vote
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
genesis = b.create_genesis_block() genesis = b.create_genesis_block()
vote_obj = vote.Vote() vote_obj = vote.Vote()
block = dummy_block(b) block = dummy_block(b)
@ -176,12 +176,12 @@ def test_valid_block_voting_sequential(b, monkeypatch):
'previous_block': genesis.id, 'previous_block': genesis.id,
'is_block_valid': True, 'is_block_valid': True,
'invalid_reason': None, 'invalid_reason': None,
'timestamp': '1'} 'timestamp': '1111111111'}
serialized_vote = util.serialize(vote_doc['vote']).encode() serialized_vote = util.serialize(vote_doc['vote']).encode()
assert vote_doc['node_pubkey'] == b.me assert vote_doc['node_pubkey'] == b.me
assert crypto.PublicKey(b.me).verify(serialized_vote, assert crypto.PublicKey(b.me).verify(serialized_vote,
vote_doc['signature']) is True vote_doc['signature']) is True
def test_valid_block_voting_multiprocessing(b, monkeypatch): def test_valid_block_voting_multiprocessing(b, monkeypatch):
@ -191,7 +191,7 @@ def test_valid_block_voting_multiprocessing(b, monkeypatch):
inpipe = Pipe() inpipe = Pipe()
outpipe = Pipe() outpipe = Pipe()
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
genesis = b.create_genesis_block() genesis = b.create_genesis_block()
vote_pipeline = vote.create_pipeline() vote_pipeline = vote.create_pipeline()
vote_pipeline.setup(indata=inpipe, outdata=outpipe) vote_pipeline.setup(indata=inpipe, outdata=outpipe)
@ -210,12 +210,12 @@ def test_valid_block_voting_multiprocessing(b, monkeypatch):
'previous_block': genesis.id, 'previous_block': genesis.id,
'is_block_valid': True, 'is_block_valid': True,
'invalid_reason': None, 'invalid_reason': None,
'timestamp': '1'} 'timestamp': '1111111111'}
serialized_vote = util.serialize(vote_doc['vote']).encode() serialized_vote = util.serialize(vote_doc['vote']).encode()
assert vote_doc['node_pubkey'] == b.me assert vote_doc['node_pubkey'] == b.me
assert crypto.PublicKey(b.me).verify(serialized_vote, assert crypto.PublicKey(b.me).verify(serialized_vote,
vote_doc['signature']) is True vote_doc['signature']) is True
def test_valid_block_voting_with_create_transaction(b, monkeypatch): def test_valid_block_voting_with_create_transaction(b, monkeypatch):
@ -230,7 +230,7 @@ def test_valid_block_voting_with_create_transaction(b, monkeypatch):
tx = Transaction.create([b.me], [([test_user_pub], 1)]) tx = Transaction.create([b.me], [([test_user_pub], 1)])
tx = tx.sign([b.me_private]) tx = tx.sign([b.me_private])
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
block = b.create_block([tx]) block = b.create_block([tx])
inpipe = Pipe() inpipe = Pipe()
@ -251,12 +251,12 @@ def test_valid_block_voting_with_create_transaction(b, monkeypatch):
'previous_block': genesis.id, 'previous_block': genesis.id,
'is_block_valid': True, 'is_block_valid': True,
'invalid_reason': None, 'invalid_reason': None,
'timestamp': '1'} 'timestamp': '1111111111'}
serialized_vote = util.serialize(vote_doc['vote']).encode() serialized_vote = util.serialize(vote_doc['vote']).encode()
assert vote_doc['node_pubkey'] == b.me assert vote_doc['node_pubkey'] == b.me
assert crypto.PublicKey(b.me).verify(serialized_vote, assert crypto.PublicKey(b.me).verify(serialized_vote,
vote_doc['signature']) is True vote_doc['signature']) is True
def test_valid_block_voting_with_transfer_transactions(monkeypatch, b): def test_valid_block_voting_with_transfer_transactions(monkeypatch, b):
@ -271,7 +271,7 @@ def test_valid_block_voting_with_transfer_transactions(monkeypatch, b):
tx = Transaction.create([b.me], [([test_user_pub], 1)]) tx = Transaction.create([b.me], [([test_user_pub], 1)])
tx = tx.sign([b.me_private]) tx = tx.sign([b.me_private])
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
block = b.create_block([tx]) block = b.create_block([tx])
b.write_block(block, durability='hard') b.write_block(block, durability='hard')
@ -281,7 +281,7 @@ def test_valid_block_voting_with_transfer_transactions(monkeypatch, b):
tx.asset) tx.asset)
tx2 = tx2.sign([test_user_priv]) tx2 = tx2.sign([test_user_priv])
monkeypatch.setattr('time.time', lambda: 2) monkeypatch.setattr('time.time', lambda: 2222222222)
block2 = b.create_block([tx2]) block2 = b.create_block([tx2])
b.write_block(block2, durability='hard') b.write_block(block2, durability='hard')
@ -306,12 +306,12 @@ def test_valid_block_voting_with_transfer_transactions(monkeypatch, b):
'previous_block': genesis.id, 'previous_block': genesis.id,
'is_block_valid': True, 'is_block_valid': True,
'invalid_reason': None, 'invalid_reason': None,
'timestamp': '2'} 'timestamp': '2222222222'}
serialized_vote = util.serialize(vote_doc['vote']).encode() serialized_vote = util.serialize(vote_doc['vote']).encode()
assert vote_doc['node_pubkey'] == b.me assert vote_doc['node_pubkey'] == b.me
assert crypto.PublicKey(b.me).verify(serialized_vote, assert crypto.PublicKey(b.me).verify(serialized_vote,
vote_doc['signature']) is True vote_doc['signature']) is True
vote2_rs = b.backend.get_votes_by_block_id_and_voter(block2.id, b.me) vote2_rs = b.backend.get_votes_by_block_id_and_voter(block2.id, b.me)
vote2_doc = vote2_rs.next() vote2_doc = vote2_rs.next()
@ -320,12 +320,12 @@ def test_valid_block_voting_with_transfer_transactions(monkeypatch, b):
'previous_block': block.id, 'previous_block': block.id,
'is_block_valid': True, 'is_block_valid': True,
'invalid_reason': None, 'invalid_reason': None,
'timestamp': '2'} 'timestamp': '2222222222'}
serialized_vote2 = util.serialize(vote2_doc['vote']).encode() serialized_vote2 = util.serialize(vote2_doc['vote']).encode()
assert vote2_doc['node_pubkey'] == b.me assert vote2_doc['node_pubkey'] == b.me
assert crypto.PublicKey(b.me).verify(serialized_vote2, assert crypto.PublicKey(b.me).verify(serialized_vote2,
vote2_doc['signature']) is True vote2_doc['signature']) is True
def test_unsigned_tx_in_block_voting(monkeypatch, b, user_pk): def test_unsigned_tx_in_block_voting(monkeypatch, b, user_pk):
@ -336,7 +336,7 @@ def test_unsigned_tx_in_block_voting(monkeypatch, b, user_pk):
inpipe = Pipe() inpipe = Pipe()
outpipe = Pipe() outpipe = Pipe()
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
genesis = b.create_genesis_block() genesis = b.create_genesis_block()
vote_pipeline = vote.create_pipeline() vote_pipeline = vote.create_pipeline()
vote_pipeline.setup(indata=inpipe, outdata=outpipe) vote_pipeline.setup(indata=inpipe, outdata=outpipe)
@ -357,12 +357,12 @@ def test_unsigned_tx_in_block_voting(monkeypatch, b, user_pk):
'previous_block': genesis.id, 'previous_block': genesis.id,
'is_block_valid': False, 'is_block_valid': False,
'invalid_reason': None, 'invalid_reason': None,
'timestamp': '1'} 'timestamp': '1111111111'}
serialized_vote = util.serialize(vote_doc['vote']).encode() serialized_vote = util.serialize(vote_doc['vote']).encode()
assert vote_doc['node_pubkey'] == b.me assert vote_doc['node_pubkey'] == b.me
assert crypto.PublicKey(b.me).verify(serialized_vote, assert crypto.PublicKey(b.me).verify(serialized_vote,
vote_doc['signature']) is True vote_doc['signature']) is True
def test_invalid_id_tx_in_block_voting(monkeypatch, b, user_pk): def test_invalid_id_tx_in_block_voting(monkeypatch, b, user_pk):
@ -373,7 +373,7 @@ def test_invalid_id_tx_in_block_voting(monkeypatch, b, user_pk):
inpipe = Pipe() inpipe = Pipe()
outpipe = Pipe() outpipe = Pipe()
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
genesis = b.create_genesis_block() genesis = b.create_genesis_block()
vote_pipeline = vote.create_pipeline() vote_pipeline = vote.create_pipeline()
vote_pipeline.setup(indata=inpipe, outdata=outpipe) vote_pipeline.setup(indata=inpipe, outdata=outpipe)
@ -396,12 +396,12 @@ def test_invalid_id_tx_in_block_voting(monkeypatch, b, user_pk):
'previous_block': genesis.id, 'previous_block': genesis.id,
'is_block_valid': False, 'is_block_valid': False,
'invalid_reason': None, 'invalid_reason': None,
'timestamp': '1'} 'timestamp': '1111111111'}
serialized_vote = util.serialize(vote_doc['vote']).encode() serialized_vote = util.serialize(vote_doc['vote']).encode()
assert vote_doc['node_pubkey'] == b.me assert vote_doc['node_pubkey'] == b.me
assert crypto.PublicKey(b.me).verify(serialized_vote, assert crypto.PublicKey(b.me).verify(serialized_vote,
vote_doc['signature']) is True vote_doc['signature']) is True
def test_invalid_content_in_tx_in_block_voting(monkeypatch, b, user_pk): def test_invalid_content_in_tx_in_block_voting(monkeypatch, b, user_pk):
@ -412,7 +412,7 @@ def test_invalid_content_in_tx_in_block_voting(monkeypatch, b, user_pk):
inpipe = Pipe() inpipe = Pipe()
outpipe = Pipe() outpipe = Pipe()
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
genesis = b.create_genesis_block() genesis = b.create_genesis_block()
vote_pipeline = vote.create_pipeline() vote_pipeline = vote.create_pipeline()
vote_pipeline.setup(indata=inpipe, outdata=outpipe) vote_pipeline.setup(indata=inpipe, outdata=outpipe)
@ -435,12 +435,12 @@ def test_invalid_content_in_tx_in_block_voting(monkeypatch, b, user_pk):
'previous_block': genesis.id, 'previous_block': genesis.id,
'is_block_valid': False, 'is_block_valid': False,
'invalid_reason': None, 'invalid_reason': None,
'timestamp': '1'} 'timestamp': '1111111111'}
serialized_vote = util.serialize(vote_doc['vote']).encode() serialized_vote = util.serialize(vote_doc['vote']).encode()
assert vote_doc['node_pubkey'] == b.me assert vote_doc['node_pubkey'] == b.me
assert crypto.PublicKey(b.me).verify(serialized_vote, assert crypto.PublicKey(b.me).verify(serialized_vote,
vote_doc['signature']) is True vote_doc['signature']) is True
def test_invalid_block_voting(monkeypatch, b, user_pk): def test_invalid_block_voting(monkeypatch, b, user_pk):
@ -450,7 +450,7 @@ def test_invalid_block_voting(monkeypatch, b, user_pk):
inpipe = Pipe() inpipe = Pipe()
outpipe = Pipe() outpipe = Pipe()
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
genesis = b.create_genesis_block() genesis = b.create_genesis_block()
vote_pipeline = vote.create_pipeline() vote_pipeline = vote.create_pipeline()
vote_pipeline.setup(indata=inpipe, outdata=outpipe) vote_pipeline.setup(indata=inpipe, outdata=outpipe)
@ -470,12 +470,12 @@ def test_invalid_block_voting(monkeypatch, b, user_pk):
'previous_block': genesis.id, 'previous_block': genesis.id,
'is_block_valid': False, 'is_block_valid': False,
'invalid_reason': None, 'invalid_reason': None,
'timestamp': '1'} 'timestamp': '1111111111'}
serialized_vote = util.serialize(vote_doc['vote']).encode() serialized_vote = util.serialize(vote_doc['vote']).encode()
assert vote_doc['node_pubkey'] == b.me assert vote_doc['node_pubkey'] == b.me
assert crypto.PublicKey(b.me).verify(serialized_vote, assert crypto.PublicKey(b.me).verify(serialized_vote,
vote_doc['signature']) is True vote_doc['signature']) is True
def test_voter_considers_unvoted_blocks_when_single_node(monkeypatch, b): def test_voter_considers_unvoted_blocks_when_single_node(monkeypatch, b):
@ -483,17 +483,17 @@ def test_voter_considers_unvoted_blocks_when_single_node(monkeypatch, b):
outpipe = Pipe() outpipe = Pipe()
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
b.create_genesis_block() b.create_genesis_block()
block_ids = [] block_ids = []
# insert blocks in the database while the voter process is not listening # insert blocks in the database while the voter process is not listening
# (these blocks won't appear in the changefeed) # (these blocks won't appear in the changefeed)
monkeypatch.setattr('time.time', lambda: 2) monkeypatch.setattr('time.time', lambda: 2222222222)
block_1 = dummy_block(b) block_1 = dummy_block(b)
block_ids.append(block_1.id) block_ids.append(block_1.id)
b.write_block(block_1, durability='hard') b.write_block(block_1, durability='hard')
monkeypatch.setattr('time.time', lambda: 3) monkeypatch.setattr('time.time', lambda: 3333333333)
block_2 = dummy_block(b) block_2 = dummy_block(b)
block_ids.append(block_2.id) block_ids.append(block_2.id)
b.write_block(block_2, durability='hard') b.write_block(block_2, durability='hard')
@ -508,7 +508,7 @@ def test_voter_considers_unvoted_blocks_when_single_node(monkeypatch, b):
outpipe.get() outpipe.get()
# create a new block that will appear in the changefeed # create a new block that will appear in the changefeed
monkeypatch.setattr('time.time', lambda: 4) monkeypatch.setattr('time.time', lambda: 4444444444)
block_3 = dummy_block(b) block_3 = dummy_block(b)
block_ids.append(block_3.id) block_ids.append(block_3.id)
b.write_block(block_3, durability='hard') b.write_block(block_3, durability='hard')
@ -530,16 +530,16 @@ def test_voter_chains_blocks_with_the_previous_ones(monkeypatch, b):
outpipe = Pipe() outpipe = Pipe()
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
b.create_genesis_block() b.create_genesis_block()
block_ids = [] block_ids = []
monkeypatch.setattr('time.time', lambda: 2) monkeypatch.setattr('time.time', lambda: 2222222222)
block_1 = dummy_block(b) block_1 = dummy_block(b)
block_ids.append(block_1.id) block_ids.append(block_1.id)
b.write_block(block_1, durability='hard') b.write_block(block_1, durability='hard')
monkeypatch.setattr('time.time', lambda: 3) monkeypatch.setattr('time.time', lambda: 3333333333)
block_2 = dummy_block(b) block_2 = dummy_block(b)
block_ids.append(block_2.id) block_ids.append(block_2.id)
b.write_block(block_2, durability='hard') b.write_block(block_2, durability='hard')
@ -556,12 +556,13 @@ def test_voter_chains_blocks_with_the_previous_ones(monkeypatch, b):
# retrive blocks from bigchain # retrive blocks from bigchain
blocks = [b.get_block(_id) for _id in block_ids] blocks = [b.get_block(_id) for _id in block_ids]
# retrieve votes # retrieve votes
votes = [list(b.backend.get_votes_by_block_id(_id))[0] votes = [list(b.backend.get_votes_by_block_id(_id))[0]
for _id in block_ids] for _id in block_ids]
assert votes[0]['vote']['voting_for_block'] in (blocks[0]['id'], blocks[1]['id']) assert ({v['vote']['voting_for_block'] for v in votes} ==
assert votes[1]['vote']['voting_for_block'] in (blocks[0]['id'], blocks[1]['id']) {block['id'] for block in blocks})
def test_voter_checks_for_previous_vote(monkeypatch, b): def test_voter_checks_for_previous_vote(monkeypatch, b):
@ -570,10 +571,10 @@ def test_voter_checks_for_previous_vote(monkeypatch, b):
inpipe = Pipe() inpipe = Pipe()
outpipe = Pipe() outpipe = Pipe()
monkeypatch.setattr('time.time', lambda: 1) monkeypatch.setattr('time.time', lambda: 1111111111)
b.create_genesis_block() b.create_genesis_block()
monkeypatch.setattr('time.time', lambda: 2) monkeypatch.setattr('time.time', lambda: 2222222222)
block_1 = dummy_block(b) block_1 = dummy_block(b)
inpipe.put(block_1.to_dict()) inpipe.put(block_1.to_dict())
assert len(list(b.backend.get_votes_by_block_id(block_1.id))) == 0 assert len(list(b.backend.get_votes_by_block_id(block_1.id))) == 0
@ -586,11 +587,11 @@ def test_voter_checks_for_previous_vote(monkeypatch, b):
outpipe.get() outpipe.get()
# queue block for voting AGAIN # queue block for voting AGAIN
monkeypatch.setattr('time.time', lambda: 3) monkeypatch.setattr('time.time', lambda: 3333333333)
inpipe.put(block_1.to_dict()) inpipe.put(block_1.to_dict())
# queue another block # queue another block
monkeypatch.setattr('time.time', lambda: 4) monkeypatch.setattr('time.time', lambda: 4444444444)
block_2 = dummy_block(b) block_2 = dummy_block(b)
inpipe.put(block_2.to_dict()) inpipe.put(block_2.to_dict())