package mortgages;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.TextMessage;
import junit.framework.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.switchyard.component.test.mixins.cdi.CDIMixIn;
import org.switchyard.component.test.mixins.hornetq.HornetQMixIn;
import org.switchyard.test.MockHandler;
import org.switchyard.test.SwitchYardRunner;
import org.switchyard.test.SwitchYardTestCaseConfig;
import org.switchyard.test.SwitchYardTestKit;
@SwitchYardTestCaseConfig(
config = SwitchYardTestCaseConfig.SWITCHYARD_XML,
mixins = {CDIMixIn.class, HornetQMixIn.class})
@RunWith(SwitchYardRunner.class)
public class T5_QualifyJMSTest {
private static final String REQUEST_QUEUE = "QualifyRequest";
private static final String RESPONSE_QUEUE = "QualifyResponse";
private SwitchYardTestKit testKit;
private HornetQMixIn hornetQ;
@Test
public void sendTextMessageToJMSQueue() throws Exception {
// Mock the qualify service to verify it's invoked
MockHandler qualifyMock = testKit.replaceService("QualificationService");
// Create and send a JMS message with the request XML payload
MessageProducer producer = hornetQ.getJMSSession().createProducer(
HornetQMixIn.getJMSQueue(REQUEST_QUEUE));
TextMessage message = hornetQ.getJMSSession().createTextMessage();
message.setText(testKit.readResourceString("xml/applicant-before.xml"));
producer.send(message);
// Verify that we received the message in the service
qualifyMock.waitForOKMessage();
Assert.assertEquals(1, qualifyMock.getMessages().size());
// Did we get a reply?
MessageConsumer consumer = hornetQ.getJMSSession().createConsumer(
HornetQMixIn.getJMSQueue(RESPONSE_QUEUE));
Assert.assertNotNull(consumer.receive(1000));
}
}