@InvokeOnHeader(Web3jConstants.ETH_SUBMIT_WORK)
    void ethSubmitWork(Message message) throws IOException {
        String nonce = message.getHeader(Web3jConstants.NONCE, configuration::getNonce, String.class);
        String headerPowHash = message.getHeader(Web3jConstants.HEADER_POW_HASH, configuration::getHeaderPowHash, String.class);
        String mixDigest = message.getHeader(Web3jConstants.MIX_DIGEST, configuration::getMixDigest, String.class);
        Request<?, EthSubmitWork> request = web3j.ethSubmitWork(nonce, headerPowHash, mixDigest);
        setRequestId(message, request);
        EthSubmitWork response = request.send();
        boolean hasError = checkForError(message, response);
        if (!hasError) {
            message.setBody(response.solutionValid());
        }
    }
@Test
    public void ethSubmitWorkTest() throws Exception {
        EthSubmitWork response = Mockito.mock(EthSubmitWork.class);
        Mockito.when(mockWeb3j.ethSubmitWork(any(), any(), any())).thenReturn(request);
        Mockito.when(request.send()).thenReturn(response);
        Mockito.when(response.solutionValid()).thenReturn(Boolean.TRUE);

        Exchange exchange = createExchangeWithBodyAndHeader(null, OPERATION, Web3jConstants.ETH_SUBMIT_WORK);
        template.send(exchange);
        Boolean body = exchange.getIn().getBody(Boolean.class);
        assertTrue(body);
    }