@InvokeOnHeader(Web3jConstants.SHH_POST)
    void shhPost(Message message) throws IOException {
        String fromAddress = message.getHeader(Web3jConstants.FROM_ADDRESS, configuration::getFromAddress, String.class);
        String toAddress = message.getHeader(Web3jConstants.TO_ADDRESS, configuration::getToAddress, String.class);
        List<String> topics = message.getHeader(Web3jConstants.TOPICS, configuration::getTopics, List.class);
        String data = message.getHeader(Web3jConstants.DATA, configuration::getData, String.class);
        BigInteger priority = message.getHeader(Web3jConstants.PRIORITY, configuration::getPriority, BigInteger.class);
        BigInteger ttl = message.getHeader(Web3jConstants.TTL, configuration::getTtl, BigInteger.class);
        org.web3j.protocol.core.methods.request.ShhPost shhPost
                = new org.web3j.protocol.core.methods.request.ShhPost(fromAddress, toAddress, topics, data, priority, ttl);

        Request<?, ShhPost> request = web3j.shhPost(shhPost);
        setRequestId(message, request);
        ShhPost response = request.send();
        boolean hasError = checkForError(message, response);
        if (!hasError) {
            message.setBody(response.messageSent());
        }
    }
@Test
    public void shhPostTest() throws Exception {
        ShhPost response = Mockito.mock(ShhPost.class);
        Mockito.when(mockWeb3j.shhPost(any())).thenReturn(request);
        Mockito.when(request.send()).thenReturn(response);
        Mockito.when(response.messageSent()).thenReturn(Boolean.TRUE);

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