### Question:
BlockchainTemplate extends AbstractTemplate implements BlockchainOperation { @Override public ServerInfo getServerInfo(final List<String> categories) { return request(blockchainMethods.getServerInfo(), Arrays.<Object>asList(categories)); } BlockchainTemplate(final ContextStorage<Context> contextStorage); @Override ChainIdHash getChainIdHash(); @Override BlockchainStatus getBlockchainStatus(); @Override ChainInfo getChainInfo(); @Override ChainStats getChainStats(); @Override List<Peer> listPeers(); @Override List<Peer> listPeers(final boolean showHidden, final boolean showSelf); @Override List<PeerMetric> listPeerMetrics(); @Override ServerInfo getServerInfo(final List<String> categories); @Override NodeStatus getNodeStatus();  }### Answer:
@Test public void testGetServerInfo() throws Exception { final BlockchainTemplate blockchainTemplate = new BlockchainTemplate(contextStorage); final Requester mockRequester = mock(Requester.class); final ServerInfo expected = ServerInfo.newBuilder().build(); when(mockRequester.request(ArgumentMatchers.<Invocation<?>>any())) .thenReturn(expected); blockchainTemplate.requester = mockRequester; final ServerInfo actual = blockchainTemplate.getServerInfo(Collections.<String>emptyList()); assertEquals(expected, actual); }