package org.jentrata.ebms.internal.messaging; 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.jentrata.ebms.EbmsConstants; import org.jentrata.ebms.messaging.SplitAttachmentsToBody; import org.junit.Test; import java.io.File; import java.io.FileInputStream; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.equalToIgnoringCase; /** * Unit test for org.jentrata.ebms.internal.messaging.PartPropertiesPayloadProcessor * * @author aaronwalker */ public class PartPropertiesPayloadProcessorTest extends CamelTestSupport { @Test public void testPartPropertiesPayloadProcessor() throws Exception{ Exchange request = new DefaultExchange(context()); request.getIn().setHeader(EbmsConstants.CONTENT_ID,"payload-id@jentrata.org"); request.getIn().setHeader(Exchange.CONTENT_TYPE,"application/xml"); request.getIn().setHeader(SplitAttachmentsToBody.ORIGINAL_MESSAGE_BODY, IOUtils.toString(new FileInputStream(fileFromClasspath("soapenv-user-message.xml")))); request.getIn().setBody("<invoice>123456789</invoice>"); Exchange response = context().createProducerTemplate().send("direct:testPartPropertiesPayloadProcessor",request); assertThat(response.getIn().getHeader("PartID",String.class),equalTo("payload-id@jentrata.org")); assertThat(response.getIn().getHeader("MimeType",String.class),equalTo("text/xml")); assertThat(response.getIn().getHeader("CharacterSet",String.class),equalTo("UTF-8")); } @Test public void testSoapBodyPartPropertiesPayloadProcessor() throws Exception{ Exchange request = new DefaultExchange(context()); request.getIn().setHeader(EbmsConstants.CONTENT_ID,EbmsConstants.SOAP_BODY_PAYLOAD_ID); request.getIn().setHeader(Exchange.CONTENT_TYPE,"application/xml"); request.getIn().setHeader(SplitAttachmentsToBody.ORIGINAL_MESSAGE_BODY, IOUtils.toString(new FileInputStream(fileFromClasspath("simple-as4-with-soap-body.xml")))); request.getIn().setBody(" <invoice id=\"123\"/>"); Exchange response = context().createProducerTemplate().send("direct:testPartPropertiesPayloadProcessor",request); assertThat(response.getIn().getHeader("PartID",String.class),equalTo("soapbody")); assertThat(response.getIn().getHeader("MimeType",String.class),equalTo("application/xml")); assertThat(response.getIn().getHeader("CharacterSet",String.class),equalToIgnoringCase("UTF-8")); } @Test public void testSoapBodyPartPropertiesPayloadProcessorWithSchema() throws Exception{ Exchange request = new DefaultExchange(context()); request.getIn().setHeader(EbmsConstants.CONTENT_ID,EbmsConstants.SOAP_BODY_PAYLOAD_ID); request.getIn().setHeader(Exchange.CONTENT_TYPE,"application/xml"); request.getIn().setHeader(SplitAttachmentsToBody.ORIGINAL_MESSAGE_BODY, IOUtils.toString(new FileInputStream(fileFromClasspath("simple-as4-with-soap-body-schema.xml")))); request.getIn().setBody(" <invoice id=\"123\"/>"); Exchange response = context().createProducerTemplate().send("direct:testPartPropertiesPayloadProcessor",request); assertThat(response.getIn().getHeader("PartID",String.class),equalTo("soapbody")); assertThat(response.getIn().getHeader("MimeType",String.class),equalTo("application/xml")); assertThat(response.getIn().getHeader("CharacterSet",String.class),equalToIgnoringCase("UTF-8")); assertThat(response.getIn().getHeader("Schema",String.class),equalToIgnoringCase("default")); } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { from("direct:testPartPropertiesPayloadProcessor") .bean(new PartPropertiesPayloadProcessor()) .routeId("testPartPropertiesPayloadProcessor"); } }; } protected static File fileFromClasspath(String filename) { File file = new File(Thread.currentThread().getContextClassLoader().getResource(filename).getFile()); return file; } }