package org.jentrata.ebms.as4.internal.routes; import org.apache.camel.Exchange; import org.apache.camel.Header; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultExchange; import org.apache.camel.test.junit4.CamelTestSupport; import org.apache.commons.io.IOUtils; import org.jentrata.ebms.EbmsConstants; import org.jentrata.ebms.MessageStatusType; import org.jentrata.ebms.messaging.DefaultMessage; import org.jentrata.ebms.messaging.Message; import org.jentrata.ebms.messaging.MessageStore; import org.junit.Test; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Collections; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import static org.hamcrest.CoreMatchers.equalTo; /** * Unit tests for org.jentrata.ebms.as4.internal.routes.MessageStoreRouteBuilder * * @author aaronwalker */ public class MessageStoreRouteBuilderTest extends CamelTestSupport { private DummyMessageStore messageStore; @Test public void testMessageStore() throws IOException { Exchange request = new DefaultExchange(context()); request.getIn().setBody(new ByteArrayInputStream("test".getBytes())); Exchange response = context().createProducerTemplate().send(MessageStore.DEFAULT_MESSAGE_STORE_ENDPOINT,request); String msgId = response.getIn().getHeader(MessageStore.JENTRATA_MESSAGE_ID, String.class); assertThat(msgId,equalTo(request.getIn().getMessageId())); assertThat(messageStore.findByMessageId(msgId,EbmsConstants.MESSAGE_DIRECTION_INBOUND).getMessageId(),equalTo(msgId)); } @Override protected RouteBuilder createRouteBuilder() throws Exception { MessageStoreRouteBuilder routeBuilder = new MessageStoreRouteBuilder(); messageStore = new DummyMessageStore(); routeBuilder.setMessageStore(messageStore); return routeBuilder; } private static class DummyMessageStore implements MessageStore { private Map<String, InputStream> messageStore = new LinkedHashMap<>(); @Override public void store(InputStream input, Exchange exchange) { messageStore.put(exchange.getIn().getMessageId(),input); exchange.getIn().setHeader(MESSAGE_STORE_REF,exchange.getIn().getMessageId()); exchange.getIn().setHeader(JENTRATA_MESSAGE_ID,exchange.getIn().getMessageId()); } @Override public void storeMessage(Exchange exchange) {} @Override public void updateMessage(String messageId,String messageDirection,MessageStatusType status,String statusDescription) {} @Override public Message findByMessageId(final String messageId, String messageDirection) { return new DefaultMessage(messageId); } @Override public InputStream findPayloadById(String messageId) { return messageStore.get(messageId); } @Override public List<Message> findByMessageStatus(String messageDirection,String status) { return Collections.emptyList(); } } }