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_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_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_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