mirror of https://github.com/hyperledger/besu
Ibft message tests (#367)
parent
391122b68e
commit
d793a7ecae
@ -0,0 +1,70 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2018 ConsenSys AG. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||||
|
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||||
|
* specific language governing permissions and limitations under the License. |
||||||
|
*/ |
||||||
|
package tech.pegasys.pantheon.consensus.ibft.ibftmessage; |
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat; |
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy; |
||||||
|
import static org.mockito.Mockito.verify; |
||||||
|
import static org.mockito.Mockito.when; |
||||||
|
|
||||||
|
import tech.pegasys.pantheon.consensus.ibft.ibftmessagedata.CommitPayload; |
||||||
|
import tech.pegasys.pantheon.consensus.ibft.ibftmessagedata.SignedData; |
||||||
|
import tech.pegasys.pantheon.ethereum.p2p.api.MessageData; |
||||||
|
import tech.pegasys.pantheon.util.bytes.BytesValue; |
||||||
|
|
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.mockito.Mock; |
||||||
|
import org.mockito.junit.MockitoJUnitRunner; |
||||||
|
|
||||||
|
@RunWith(MockitoJUnitRunner.class) |
||||||
|
public class CommitMessageTest { |
||||||
|
@Mock private SignedData<CommitPayload> commitPayload; |
||||||
|
@Mock private BytesValue messageBytes; |
||||||
|
@Mock private MessageData messageData; |
||||||
|
@Mock private CommitMessage commitMessage; |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromCommitMessageData() { |
||||||
|
when(commitPayload.encode()).thenReturn(messageBytes); |
||||||
|
CommitMessage commitMessage = CommitMessage.create(commitPayload); |
||||||
|
|
||||||
|
assertThat(commitMessage.getData()).isEqualTo(messageBytes); |
||||||
|
assertThat(commitMessage.getCode()).isEqualTo(IbftV2.COMMIT); |
||||||
|
verify(commitPayload).encode(); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromCommitMessage() { |
||||||
|
CommitMessage message = CommitMessage.fromMessage(commitMessage); |
||||||
|
assertThat(message).isSameAs(commitMessage); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromGenericMessageData() { |
||||||
|
when(messageData.getData()).thenReturn(messageBytes); |
||||||
|
when(messageData.getCode()).thenReturn(IbftV2.COMMIT); |
||||||
|
CommitMessage commitMessage = CommitMessage.fromMessage(messageData); |
||||||
|
|
||||||
|
assertThat(commitMessage.getData()).isEqualTo(messageData.getData()); |
||||||
|
assertThat(commitMessage.getCode()).isEqualTo(IbftV2.COMMIT); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFailsWhenIncorrectMessageCode() { |
||||||
|
when(messageData.getCode()).thenReturn(42); |
||||||
|
assertThatThrownBy(() -> CommitMessage.fromMessage(messageData)) |
||||||
|
.isInstanceOf(IllegalArgumentException.class) |
||||||
|
.hasMessageContaining("Message has code 42 and thus is not a CommitMessage"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,70 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2018 ConsenSys AG. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||||
|
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||||
|
* specific language governing permissions and limitations under the License. |
||||||
|
*/ |
||||||
|
package tech.pegasys.pantheon.consensus.ibft.ibftmessage; |
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat; |
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy; |
||||||
|
import static org.mockito.Mockito.verify; |
||||||
|
import static org.mockito.Mockito.when; |
||||||
|
|
||||||
|
import tech.pegasys.pantheon.consensus.ibft.ibftmessagedata.NewRoundPayload; |
||||||
|
import tech.pegasys.pantheon.consensus.ibft.ibftmessagedata.SignedData; |
||||||
|
import tech.pegasys.pantheon.ethereum.p2p.api.MessageData; |
||||||
|
import tech.pegasys.pantheon.util.bytes.BytesValue; |
||||||
|
|
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.mockito.Mock; |
||||||
|
import org.mockito.junit.MockitoJUnitRunner; |
||||||
|
|
||||||
|
@RunWith(MockitoJUnitRunner.class) |
||||||
|
public class NewRoundMessageTest { |
||||||
|
@Mock private SignedData<NewRoundPayload> newRoundPayload; |
||||||
|
@Mock private BytesValue messageBytes; |
||||||
|
@Mock private MessageData messageData; |
||||||
|
@Mock private NewRoundMessage newRoundMessage; |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromNewRoundChangeMessageData() { |
||||||
|
when(newRoundPayload.encode()).thenReturn(messageBytes); |
||||||
|
NewRoundMessage prepareMessage = NewRoundMessage.create(newRoundPayload); |
||||||
|
|
||||||
|
assertThat(prepareMessage.getData()).isEqualTo(messageBytes); |
||||||
|
assertThat(prepareMessage.getCode()).isEqualTo(IbftV2.NEW_ROUND); |
||||||
|
verify(newRoundPayload).encode(); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromNewRoundMessage() { |
||||||
|
NewRoundMessage message = NewRoundMessage.fromMessage(newRoundMessage); |
||||||
|
assertThat(message).isSameAs(newRoundMessage); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromGenericMessageData() { |
||||||
|
when(messageData.getData()).thenReturn(messageBytes); |
||||||
|
when(messageData.getCode()).thenReturn(IbftV2.NEW_ROUND); |
||||||
|
NewRoundMessage newRoundMessage = NewRoundMessage.fromMessage(messageData); |
||||||
|
|
||||||
|
assertThat(newRoundMessage.getData()).isEqualTo(messageData.getData()); |
||||||
|
assertThat(newRoundMessage.getCode()).isEqualTo(IbftV2.NEW_ROUND); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFailsWhenIncorrectMessageCode() { |
||||||
|
when(messageData.getCode()).thenReturn(42); |
||||||
|
assertThatThrownBy(() -> NewRoundMessage.fromMessage(messageData)) |
||||||
|
.isInstanceOf(IllegalArgumentException.class) |
||||||
|
.hasMessageContaining("Message has code 42 and thus is not a NewRoundMessage"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,70 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2018 ConsenSys AG. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||||
|
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||||
|
* specific language governing permissions and limitations under the License. |
||||||
|
*/ |
||||||
|
package tech.pegasys.pantheon.consensus.ibft.ibftmessage; |
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat; |
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy; |
||||||
|
import static org.mockito.Mockito.verify; |
||||||
|
import static org.mockito.Mockito.when; |
||||||
|
|
||||||
|
import tech.pegasys.pantheon.consensus.ibft.ibftmessagedata.ProposalPayload; |
||||||
|
import tech.pegasys.pantheon.consensus.ibft.ibftmessagedata.SignedData; |
||||||
|
import tech.pegasys.pantheon.ethereum.p2p.api.MessageData; |
||||||
|
import tech.pegasys.pantheon.util.bytes.BytesValue; |
||||||
|
|
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.mockito.Mock; |
||||||
|
import org.mockito.junit.MockitoJUnitRunner; |
||||||
|
|
||||||
|
@RunWith(MockitoJUnitRunner.class) |
||||||
|
public class PrePrepareMessageTest { |
||||||
|
@Mock private SignedData<ProposalPayload> prePrepareMessageData; |
||||||
|
@Mock private BytesValue messageBytes; |
||||||
|
@Mock private MessageData messageData; |
||||||
|
@Mock private ProposalMessage proposalMessage; |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromPrePrepareMessageData() { |
||||||
|
when(prePrepareMessageData.encode()).thenReturn(messageBytes); |
||||||
|
ProposalMessage proposalMessage = ProposalMessage.create(prePrepareMessageData); |
||||||
|
|
||||||
|
assertThat(proposalMessage.getData()).isEqualTo(messageBytes); |
||||||
|
assertThat(proposalMessage.getCode()).isEqualTo(IbftV2.PROPOSAL); |
||||||
|
verify(prePrepareMessageData).encode(); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromPrePrepareMessage() { |
||||||
|
ProposalMessage message = ProposalMessage.fromMessage(proposalMessage); |
||||||
|
assertThat(message).isSameAs(proposalMessage); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromGenericMessageData() { |
||||||
|
when(messageData.getCode()).thenReturn(IbftV2.PROPOSAL); |
||||||
|
when(messageData.getData()).thenReturn(messageBytes); |
||||||
|
ProposalMessage proposalMessage = ProposalMessage.fromMessage(messageData); |
||||||
|
|
||||||
|
assertThat(proposalMessage.getData()).isEqualTo(messageData.getData()); |
||||||
|
assertThat(proposalMessage.getCode()).isEqualTo(IbftV2.PROPOSAL); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFailsWhenIncorrectMessageCode() { |
||||||
|
when(messageData.getCode()).thenReturn(42); |
||||||
|
assertThatThrownBy(() -> ProposalMessage.fromMessage(messageData)) |
||||||
|
.isInstanceOf(IllegalArgumentException.class) |
||||||
|
.hasMessageContaining("Message has code 42 and thus is not a ProposalMessage"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,70 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2018 ConsenSys AG. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||||
|
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||||
|
* specific language governing permissions and limitations under the License. |
||||||
|
*/ |
||||||
|
package tech.pegasys.pantheon.consensus.ibft.ibftmessage; |
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat; |
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy; |
||||||
|
import static org.mockito.Mockito.verify; |
||||||
|
import static org.mockito.Mockito.when; |
||||||
|
|
||||||
|
import tech.pegasys.pantheon.consensus.ibft.ibftmessagedata.PreparePayload; |
||||||
|
import tech.pegasys.pantheon.consensus.ibft.ibftmessagedata.SignedData; |
||||||
|
import tech.pegasys.pantheon.ethereum.p2p.api.MessageData; |
||||||
|
import tech.pegasys.pantheon.util.bytes.BytesValue; |
||||||
|
|
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.mockito.Mock; |
||||||
|
import org.mockito.junit.MockitoJUnitRunner; |
||||||
|
|
||||||
|
@RunWith(MockitoJUnitRunner.class) |
||||||
|
public class PrepareMessageTest { |
||||||
|
@Mock private SignedData<PreparePayload> preparePayload; |
||||||
|
@Mock private BytesValue messageBytes; |
||||||
|
@Mock private MessageData messageData; |
||||||
|
@Mock private PrepareMessage prepareMessage; |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromPrepareMessageData() { |
||||||
|
when(preparePayload.encode()).thenReturn(messageBytes); |
||||||
|
PrepareMessage prepareMessage = PrepareMessage.create(preparePayload); |
||||||
|
|
||||||
|
assertThat(prepareMessage.getData()).isEqualTo(messageBytes); |
||||||
|
assertThat(prepareMessage.getCode()).isEqualTo(IbftV2.PREPARE); |
||||||
|
verify(preparePayload).encode(); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromPrepareMessage() { |
||||||
|
PrepareMessage message = PrepareMessage.fromMessage(prepareMessage); |
||||||
|
assertThat(message).isSameAs(prepareMessage); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromGenericMessageData() { |
||||||
|
when(messageData.getData()).thenReturn(messageBytes); |
||||||
|
when(messageData.getCode()).thenReturn(IbftV2.PREPARE); |
||||||
|
PrepareMessage prepareMessage = PrepareMessage.fromMessage(messageData); |
||||||
|
|
||||||
|
assertThat(prepareMessage.getData()).isEqualTo(messageData.getData()); |
||||||
|
assertThat(prepareMessage.getCode()).isEqualTo(IbftV2.PREPARE); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFailsWhenIncorrectMessageCode() { |
||||||
|
when(messageData.getCode()).thenReturn(42); |
||||||
|
assertThatThrownBy(() -> PrepareMessage.fromMessage(messageData)) |
||||||
|
.isInstanceOf(IllegalArgumentException.class) |
||||||
|
.hasMessageContaining("Message has code 42 and thus is not a PrepareMessage"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,70 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2018 ConsenSys AG. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||||
|
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||||
|
* specific language governing permissions and limitations under the License. |
||||||
|
*/ |
||||||
|
package tech.pegasys.pantheon.consensus.ibft.ibftmessage; |
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat; |
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy; |
||||||
|
import static org.mockito.Mockito.verify; |
||||||
|
import static org.mockito.Mockito.when; |
||||||
|
|
||||||
|
import tech.pegasys.pantheon.consensus.ibft.ibftmessagedata.RoundChangePayload; |
||||||
|
import tech.pegasys.pantheon.consensus.ibft.ibftmessagedata.SignedData; |
||||||
|
import tech.pegasys.pantheon.ethereum.p2p.api.MessageData; |
||||||
|
import tech.pegasys.pantheon.util.bytes.BytesValue; |
||||||
|
|
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.mockito.Mock; |
||||||
|
import org.mockito.junit.MockitoJUnitRunner; |
||||||
|
|
||||||
|
@RunWith(MockitoJUnitRunner.class) |
||||||
|
public class RoundChangeMessageTest { |
||||||
|
@Mock private SignedData<RoundChangePayload> roundChangePayload; |
||||||
|
@Mock private BytesValue messageBytes; |
||||||
|
@Mock private MessageData messageData; |
||||||
|
@Mock private RoundChangeMessage roundChangeMessage; |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromRoundChangeMessageData() { |
||||||
|
when(roundChangePayload.encode()).thenReturn(messageBytes); |
||||||
|
RoundChangeMessage roundChangeMessage = RoundChangeMessage.create(roundChangePayload); |
||||||
|
|
||||||
|
assertThat(roundChangeMessage.getData()).isEqualTo(messageBytes); |
||||||
|
assertThat(roundChangeMessage.getCode()).isEqualTo(IbftV2.ROUND_CHANGE); |
||||||
|
verify(roundChangePayload).encode(); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromRoundChangeMessage() { |
||||||
|
RoundChangeMessage message = RoundChangeMessage.fromMessage(roundChangeMessage); |
||||||
|
assertThat(message).isSameAs(roundChangeMessage); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFromGenericMessageData() { |
||||||
|
when(messageData.getData()).thenReturn(messageBytes); |
||||||
|
when(messageData.getCode()).thenReturn(IbftV2.ROUND_CHANGE); |
||||||
|
RoundChangeMessage roundChangeMessage = RoundChangeMessage.fromMessage(messageData); |
||||||
|
|
||||||
|
assertThat(roundChangeMessage.getData()).isEqualTo(messageData.getData()); |
||||||
|
assertThat(roundChangeMessage.getCode()).isEqualTo(IbftV2.ROUND_CHANGE); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void createMessageFailsWhenIncorrectMessageCode() { |
||||||
|
when(messageData.getCode()).thenReturn(42); |
||||||
|
assertThatThrownBy(() -> RoundChangeMessage.fromMessage(messageData)) |
||||||
|
.isInstanceOf(IllegalArgumentException.class) |
||||||
|
.hasMessageContaining("Message has code 42 and thus is not a RoundChangeMessage"); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue