def test_hex_format(self): blockchain_ref = make_blockchain() outfile = BytesIO() blockchain_ref.save_to_file(outfile) outfile.seek(0) blockchain = Blockchain(NEW_USER_PUB_KEY) blockchain.from_file(outfile) assert blockchain == blockchain_ref
def test_basic_ok(self): # Arrange blockchain = Blockchain(NEW_USER_PUB_KEY) blockchain.new_block() # Act random_sign(blockchain.last_block()) # Assert assert blockchain[0].is_signed() is True
def test_hex_format(self): # Arrange blockchain_ref = make_blockchain() b = blockchain_ref.pack() # Act blockchain = Blockchain(NEW_USER_PUB_KEY) blockchain.from_bytes(b) # Assert assert blockchain == blockchain_ref
def test_return_part_of_blockchain_at_second_contact(self): # Arrange blockchain = Blockchain(NEW_USER_PUB_KEY) blockchain.new_block() tx0 = Transaction(VERSION, Transaction.GUZI_CREATE, KEY_POOL[0]["pub"], 0) tx1 = Transaction(VERSION, Transaction.GUZI_CREATE, KEY_POOL[1]["pub"], 0) tx2 = Transaction(VERSION, Transaction.GUZI_CREATE, KEY_POOL[2]["pub"], 0) tx3 = Transaction(VERSION, Transaction.GUZI_CREATE, KEY_POOL[3]["pub"], 0) tx4 = Transaction(VERSION, Transaction.GUZI_CREATE, KEY_POOL[4]["pub"], 0) blockchain[0].add_transactions([tx0, tx1, tx2]) random_sign(blockchain.last_block()) blockchain.new_block() blockchain[0].add_transactions([tx3, tx4]) # Act result = blockchain._reduce(KEY_POOL[3]["pub"]) # Assert assert len(result) == 1
def test_transactions_are_the_same(self): blockchain_ref = make_blockchain() ref_transactions = blockchain_ref[0].transactions outfile = BytesIO() blockchain_ref.save_to_file(outfile) outfile.seek(0) blockchain = Blockchain(NEW_USER_PUB_KEY) blockchain.from_file(outfile) transactions = blockchain[0].transactions assert len(transactions) == 3 assert transactions[0] == ref_transactions[0] assert transactions[1] == ref_transactions[1] assert transactions[2] == ref_transactions[2]
def test_signer_is_set(self): bc = Blockchain(NEW_USER_PUB_KEY) bc.new_block() random_sign(bc.last_block()) assert bc.last_block().signer == REF_PUB_KEY
def test_raise_exception_if_last_block_not_signed(self): # Arrange blockchain = Blockchain(NEW_USER_PUB_KEY) blockchain.new_block() # Act with pytest.raises(UnsignedPreviousBlockError): blockchain.new_block()
def test_set_previous_block_hash(self): # Arrange blockchain = Blockchain(NEW_USER_PUB_KEY) blockchain.new_block() random_sign(blockchain.last_block()) # Act blockchain.new_block() # Assert assert blockchain[1].previous_block_signature == blockchain[ 0].signature
def test_empty_ko(self): bc = Blockchain(NEW_USER_PUB_KEY) result = bc.is_valid() assert result is False