blob: f5e58e03fc1887c49dca7ee007a90b36b4ed8198 [file] [log] [blame]
package org.apache.ode.axis2;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.soap.SOAPBody;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axiom.soap.SOAPHeaderBlock;
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.engine.MessageReceiver;
import org.apache.axis2.util.Utils;
import org.apache.ode.utils.DOMUtils;
import static org.testng.AssertJUnit.assertEquals;
import org.testng.annotations.Test;
import org.w3c.dom.Element;
import javax.xml.namespace.QName;
/**
* Tests a simple process that gets a message that includes a header, pass it on when invoking
* a dummy service, gets the changed header back and returns it.
* @author Matthieu Riou <mriou@apache.org>
*/
public class SoapHeaderTest extends Axis2TestBase {
@Test(dataProvider="configs")
public void testSimplePassing() throws Exception {
server.deployService("TestSoapHeader", "dummy-service.wsdl",
new QName("http://axis2.ode.apache.org", "DummyService"), "DummyServiceSOAP11port_http",
new MessageReceiver() {
@SuppressWarnings("deprecation")
public void receive(MessageContext messageCtx) throws AxisFault {
OMElement cidElmt = messageCtx.getEnvelope().getHeader().getFirstElement();
assertEquals("ConversationId", cidElmt.getLocalName());
assertEquals("ZZZXYZ", cidElmt.getText());
MessageContext outMsgContext = Utils.createOutMessageContext(messageCtx);
outMsgContext.getOperationContext().addMessageContext(outMsgContext);
// Far too many lines of code...
SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope env = factory.createSOAPEnvelope();
SOAPHeader header = factory.createSOAPHeader(env);
SOAPBody body = factory.createSOAPBody(env);
outMsgContext.setEnvelope(env);
OMElement respElmt = factory.createOMElement(new QName("http://axis2.ode.apache.org", "faultTestResponse"));
body.addChild(respElmt);
respElmt.setText("dummy");
SOAPHeaderBlock headerBlock = factory.createSOAPHeaderBlock("ConversationId",
factory.createOMNamespace("http://my.company/super/protocol", "pns"), header);
headerBlock.setText("ZZYV");
AxisEngine.send(outMsgContext);
}
});
if (!server.isDeployed("TestSoapHeader")) server.deployProcess("TestSoapHeader");
String response = server.sendRequestFile("http://localhost:8888/processes/headerTest",
"TestSoapHeader", "testRequest.soap");
System.out.println(response);
Element rootElemt = DOMUtils.stringToDOM(response);
Element cidElemt = DOMUtils.getFirstChildElement(DOMUtils.getFirstChildElement(rootElemt));
assertEquals("ConversationId", cidElemt.getLocalName());
assertEquals("ZZYV", cidElemt.getTextContent());
server.undeployProcess("TestStructuredFault");
}
}