@Test
  public void receiveRoundStateIsNotLostIfASecondProposalMessageIsReceivedForCurrentRound() {
    final QbftBlock block =
        context.createBlockForProposalFromChainHead(15, peers.getProposer().getNodeAddress());
    final ConsensusRoundIdentifier nextRoundId = new ConsensusRoundIdentifier(1, 1);

    final PreparedCertificate preparedRoundArtifacts =
        createValidPreparedCertificate(context, roundId, block);

    final List<SignedData<RoundChangePayload>> roundChanges =
        peers.createSignedRoundChangePayload(nextRoundId, preparedRoundArtifacts);

    final RoundSpecificPeers nextRoles = context.roundSpecificPeers(nextRoundId);
    final ValidatorPeer nextProposer = nextRoles.getProposer();

    nextProposer.injectProposalForFutureRound(
        nextRoundId, roundChanges, preparedRoundArtifacts.getPrepares(), block);

    peers.verifyMessagesReceived(
        localNodeMessageFactory.createPrepare(nextRoundId, block.getHash()));

    // Inject a prepare, then re-inject the proposal - then ensure only a single prepare is enough
    // to trigger a Commit transmission from the local node
    nextRoles.getNonProposing(0).injectPrepare(nextRoundId, block.getHash());

    nextProposer.injectProposalForFutureRound(
        nextRoundId, roundChanges, preparedRoundArtifacts.getPrepares(), block);
    nextProposer.injectPrepare(nextRoundId, block.getHash());
    peers.verifyNoMessagesReceived();

    nextRoles.getNonProposing(1).injectPrepare(nextRoundId, block.getHash());

    final Commit expectedCommit =
        new Commit(
            IntegrationTestHelpers.createSignedCommitPayload(
                nextRoundId,
                block,
                context.getLocalNodeParams().getNodeKey(),
                context.getBlockEncoder()));

    peers.verifyMessagesReceived(expectedCommit);
  }
Ensure the Qbft component responds appropriately when a future round Proposal message is
received.
consensus/qbft-core/src/integration-test/java/org/hyperledger/besu/consensus/qbft/core/test/ReceivedFutureProposalTest.java