use of org.springframework.ws.context.MessageContext in project spring-integration by spring-projects.
the class WebServiceInboundGatewayJavaConfigTests method testWebServiceInboundGatewayJavaConfig.
@Test
public void testWebServiceInboundGatewayJavaConfig() throws Exception {
MessageContext context = mock(MessageContext.class);
SoapMessage request = mock(SoapMessage.class);
SoapMessage response = mock(SoapMessage.class);
SoapBody soapBody = mock(SoapBody.class);
String input = "<hello/>";
Source payloadSource = new StringSource(input);
StringWriter output = new StringWriter();
Result payloadResult = new StreamResult(output);
when(context.getResponse()).thenReturn(response);
when(response.getPayloadResult()).thenReturn(payloadResult);
when(response.getSoapBody()).thenReturn(soapBody);
when(context.getRequest()).thenReturn(request);
when(request.getPayloadSource()).thenReturn(payloadSource);
this.messageReceiver.receive(context);
verify(soapBody).addServerOrReceiverFault(eq("503 Service Unavailable"), any(Locale.class));
this.wsGateway.start();
this.messageReceiver.receive(context);
assertTrue(output.toString().endsWith(input));
context = mock(MessageContext.class);
request = mock(SoapMessage.class);
payloadSource = new StringSource("<order/>");
when(context.getRequest()).thenReturn(request);
when(request.getPayloadSource()).thenReturn(payloadSource);
this.messageReceiver.receive(context);
Message<?> receive = this.webserviceRequestsQueue.receive(10000);
assertNotNull(receive);
assertThat(receive.getPayload(), instanceOf(Element.class));
Element order = (Element) receive.getPayload();
assertEquals("order", order.getLocalName());
}
use of org.springframework.ws.context.MessageContext in project spring-integration-samples by spring-projects.
the class InboundGatewayTests method testSendAndReceive.
/**
* Emulate the Spring WS MessageDispatcherServlet by calling the gateway
* with a DOMSource object representing the payload of the original SOAP
* 'echoRequest' message. Expect an 'echoResponse' DOMSource object
* to be returned in synchronous fashion, which the MessageDispatcherServlet
* would in turn wrap in a SOAP envelope and return to the client.
*/
@Test
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(instanceOf(DOMSource.class)));
DOMSource replySource = (DOMSource) reply;
Element element = (Element) replySource.getNode().getFirstChild();
assertThat(element.getTagName(), equalTo("echoResponse"));
}
Aggregations