package org.jentrata.ebms.messaging.internal;
import org.apache.camel.Exchange;
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.hamcrest.Matchers;
import org.jentrata.ebms.EbmsConstants;
import org.jentrata.ebms.MessageStatusType;
import org.jentrata.ebms.messaging.MessageStore;
import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.Matchers.is;
/**
* Unit Test for org.jentrata.ebms.messaging.internal.FileMessageStore
*
* @author aaronwalker
*/
public class FileMessageStoreTest extends CamelTestSupport {
private FileMessageStore messageStore;
private String baseDir;
@Test
public void testFileMessageStore() throws IOException {
Exchange request = new DefaultExchange(context());
request.getIn().setHeader(EbmsConstants.EBMS_VERSION,EbmsConstants.EBMS_V3);
request.getIn().setHeader(EbmsConstants.MESSAGE_ID,"testMessageID");
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("testMessageID"));
assertThat(messageStore.findByMessageId(msgId,EbmsConstants.MESSAGE_DIRECTION_INBOUND).getMessageId(),equalTo(msgId));
}
@Test
public void testUpdateMessageInMessageStore() throws Exception {
messageStore.updateMessage("testMessageID",EbmsConstants.MESSAGE_DIRECTION_INBOUND, MessageStatusType.RECEIVED,"Received");
File expectedFile = new File(baseDir,"testMessageID.RECEIVED");
assertThat(expectedFile.exists(),is(true));
assertThat("Received", equalTo(IOUtils.toString(new FileInputStream(expectedFile))));
}
@Test
public void testFindPayloadById() throws Exception {
testFileMessageStore();
InputStream stream = messageStore.findPayloadById("testMessageID");
assertThat(IOUtils.toString(stream),equalTo("test"));
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
messageStore = new FileMessageStore();
baseDir = System.getProperty("java.io.tmpdir");
messageStore.setBaseDir(baseDir);
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from(MessageStore.DEFAULT_MESSAGE_STORE_ENDPOINT)
.bean(messageStore,"store")
.routeId("_jentrataMessageStoreTest");
}
};
}
}