updated test so it no longer depends on the exposed gateway method... now it actually tests the endpoint invocation

This commit is contained in:
Mark Fisher
2010-09-01 19:35:44 +00:00
parent 754b9a198d
commit a66b125172

View File

@@ -17,28 +17,37 @@
package org.springframework.integration.samples.ws;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import javax.xml.transform.Source;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.Message;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.integration.ws.SimpleWebServiceInboundGateway;
import org.springframework.integration.xml.source.DomSourceFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.ws.context.DefaultMessageContext;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.pox.dom.DomPoxMessage;
import org.springframework.ws.pox.dom.DomPoxMessageFactory;
/**
* Out-of-container tests for ws:inbound-gateway message processing.
*
* @author Chris Beams
* @author Mark Fisher
*/
@ContextConfiguration("inbound-gateway-config.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@@ -55,15 +64,21 @@ public class InboundGatewayTests {
* would in turn wrap in a SOAP envelope and return to the client.
*/
@Test
public void testSendAndReceive() {
Source source = new DomSourceFactory().createSource(
"<echoRequest xmlns=\"http://www.springframework.org/spring-ws/samples/echo\">hello</echoRequest>");
Message<Source> msg = MessageBuilder.withPayload(source).build();
Object reply = gateway.sendAndReceive(msg);
public void testSendAndReceive() throws Exception {
String xml = "<echoRequest xmlns=\"http://www.springframework.org/spring-ws/samples/echo\">hello</echoRequest>";
DomPoxMessageFactory messageFactory = new DomPoxMessageFactory();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new InputSource(new StringReader(xml)));
Transformer transformer = TransformerFactory.newInstance().newTransformer();
DomPoxMessage request = new DomPoxMessage(document, transformer, "text/xml");
MessageContext messageContext = new DefaultMessageContext(request, messageFactory);
gateway.invoke(messageContext);
Object reply = messageContext.getResponse().getPayloadSource();
assertThat(reply, is(DOMSource.class));
assertThat(((DOMSource)reply).getNode().getNodeName(), equalTo("echoResponse"));
DOMSource replySource = (DOMSource) reply;
Element element = (Element) replySource.getNode().getFirstChild();
assertThat(element.getTagName(), equalTo("echoResponse"));
}
}