@Test(expected = IllegalStateException.class) public void exceptionIsThrownWhenEventTypeIsFork() { final Blockchain mockBlockchain = mock(Blockchain.class); final IbftEventQueue mockQueue = mock(IbftEventQueue.class); final BlockAddedEvent mockBlockAddedEvent = mock(BlockAddedEvent.class); when(mockBlockAddedEvent.getEventType()).thenReturn(BlockAddedEvent.EventType.FORK); final IbftChainObserver ibftChainObserver = new IbftChainObserver(mockQueue); ibftChainObserver.onBlockAdded(mockBlockAddedEvent, mockBlockchain); }
@Test(expected = IllegalStateException.class) public void exceptionIsThrownWhenEventTypeIsChainReorg() { final Blockchain mockBlockchain = mock(Blockchain.class); final IbftEventQueue mockQueue = mock(IbftEventQueue.class); final BlockAddedEvent mockBlockAddedEvent = mock(BlockAddedEvent.class); when(mockBlockAddedEvent.getEventType()).thenReturn(BlockAddedEvent.EventType.CHAIN_REORG); final IbftChainObserver ibftChainObserver = new IbftChainObserver(mockQueue); ibftChainObserver.onBlockAdded(mockBlockAddedEvent, mockBlockchain); } }
@Test public void newChainHeadHeaderEventIsAddedToTheQueue() { final Blockchain mockBlockchain = mock(Blockchain.class); final IbftEventQueue mockQueue = mock(IbftEventQueue.class); final BlockAddedEvent mockBlockAddedEvent = mock(BlockAddedEvent.class); final IbftChainObserver ibftChainObserver = new IbftChainObserver(mockQueue); final BlockHeader header = new BlockHeaderTestFixture() .number(1234) .coinbase(Address.ECREC) .parentHash(Hash.EMPTY_LIST_HASH) .buildHeader(); final Block block = new Block(header, new BlockBody(emptyList(), emptyList())); when(mockBlockAddedEvent.getEventType()).thenReturn(BlockAddedEvent.EventType.HEAD_ADVANCED); when(mockBlockAddedEvent.getBlock()).thenReturn(block); ibftChainObserver.onBlockAdded(mockBlockAddedEvent, mockBlockchain); final ArgumentCaptor<IbftEvent> ibftEventArgumentCaptor = ArgumentCaptor.forClass(IbftEvent.class); verify(mockQueue).add(ibftEventArgumentCaptor.capture()); assertThat(ibftEventArgumentCaptor.getValue() instanceof NewChainHead).isTrue(); assertThat(((NewChainHead) ibftEventArgumentCaptor.getValue()).getNewChainHeadHeader()) .isEqualTo(header); }