package org.switchyard.quickstarts.camel.saxon;
import java.util.concurrent.LinkedBlockingQueue;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.switchyard.Exchange;
import org.switchyard.component.test.mixins.cdi.CDIMixIn;
import org.switchyard.test.BeforeDeploy;
import org.switchyard.test.Invoker;
import org.switchyard.test.MockHandler;
import org.switchyard.test.ServiceOperation;
import org.switchyard.test.SwitchYardRunner;
import org.switchyard.test.SwitchYardTestCaseConfig;
import org.switchyard.test.SwitchYardTestKit;
@RunWith(SwitchYardRunner.class)
@SwitchYardTestCaseConfig(
config = SwitchYardTestCaseConfig.SWITCHYARD_XML,
mixins = CDIMixIn.class)
public class CamelServiceTest {
private static final String REQUEST_HELLO =
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
" <soapenv:Header/>" +
" <soapenv:Body>" +
" <greet xmlns=\"urn:switchyard-quickstart:camel-saxon:0.1.0\">Douglas</greet>" +
" </soapenv:Body>" +
"</soapenv:Envelope>";
private static final String REQUEST_GOODBYE =
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
" <soapenv:Header/>" +
" <soapenv:Body>" +
" <greet xmlns=\"urn:switchyard-quickstart:camel-saxon:0.1.0\">Garfield</greet>" +
" </soapenv:Body>" +
"</soapenv:Envelope>";
private SwitchYardTestKit _testKit;
@ServiceOperation("RoutingService.greet")
private Invoker greet;
@BeforeDeploy
public void setProperties() {
System.setProperty("org.switchyard.component.http.standalone.port", "18001");
}
@Test
public void testXQueryRouting() throws Exception {
_testKit.removeService("HelloService");
_testKit.removeService("GoodbyeService");
MockHandler helloService = _testKit.registerInOnlyService("HelloService");
MockHandler goodbyeService = _testKit.registerInOnlyService("GoodbyeService");
greet.sendInOnly(REQUEST_HELLO);
greet.sendInOnly(REQUEST_GOODBYE);
Thread.sleep(1000);
LinkedBlockingQueue<Exchange> helloReceived = helloService.getMessages();
Assert.assertNotNull(helloReceived);
Exchange helloExchange = helloReceived.iterator().next();
Assert.assertTrue(helloExchange.getMessage().getContent(String.class).matches(".*Douglas.*"));
LinkedBlockingQueue<Exchange> goodbyeReceived = goodbyeService.getMessages();
Assert.assertNotNull(goodbyeReceived);
Exchange goodbyeExchange = goodbyeReceived.iterator().next();
Assert.assertTrue(goodbyeExchange.getMessage().getContent(String.class).matches(".*Garfield.*"));
}
}