blob: 8fe6ad2f9cf168d9d343868fa7ac1f86c975d3bc [file] [log] [blame]
package org.apache.axis2.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.xml.stream.XMLStreamException;
import junit.framework.TestCase;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPConstants;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFault;
import org.apache.axiom.soap.SOAPProcessingException;
import org.apache.axis2.builder.SOAPBuilder;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.namespace.Constants;
import org.apache.axis2.AbstractTestCase;
import org.apache.axis2.AxisFault;
public class MessageContextBuilderTest extends AbstractTestCase {
private OMNamespace nsp = OMAbstractFactory.getOMFactory().createOMNamespace(Constants.URI_SOAP11_ENV, "soapenv");
public MessageContextBuilderTest(String testName) {
super(testName);
}
public void testSwitchNamespacePrefixes()
throws Exception {
// Incoming envelope has a "soapenv" prefix
assertEquals("soapenv:" + SOAPConstants.FAULT_CODE_VERSION_MISMATCH,
MessageContextBuilder.switchNamespacePrefix("soapenv:" + SOAPConstants.FAULT_CODE_VERSION_MISMATCH, nsp));
// Incoming envelope has a "s" prefix
assertEquals("soapenv:" + SOAPConstants.FAULT_CODE_VERSION_MISMATCH,
MessageContextBuilder.switchNamespacePrefix("s:" + SOAPConstants.FAULT_CODE_VERSION_MISMATCH, nsp));
// Incoming envelope uses default namespace and no prefixes
assertEquals("soapenv:" + SOAPConstants.FAULT_CODE_VERSION_MISMATCH,
MessageContextBuilder.switchNamespacePrefix(":" + SOAPConstants.FAULT_CODE_VERSION_MISMATCH, nsp));
}
public void testElementNamespaces() throws Exception {
File file = getTestResourceFile("soapmessage.xml");
SOAPBuilder soapBuilder = new SOAPBuilder();
FileInputStream fis = new FileInputStream(file);
MessageContext mc = new MessageContext();
//Set up a mock envelope
try {
OMElement envelope = soapBuilder.processDocument(fis, SOAP11Constants.SOAP_11_CONTENT_TYPE, mc);
} catch (Exception e) {
}
SOAPProcessingException e = new SOAPProcessingException(
"Transport level information does not match with SOAP" +
" Message namespace URI", "S:" + ":" +
SOAPConstants.FAULT_CODE_VERSION_MISMATCH);
AxisFault axisFault = AxisFault.makeFault(e);
ConfigurationContext configContext = new ConfigurationContext(new AxisConfiguration());
mc.setConfigurationContext(configContext);
MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(mc, axisFault);
SOAPFault fault = faultContext.getEnvelope().getBody().getFault();
String se = faultContext.getEnvelope().getNamespace().getPrefix();
assertEquals (fault.getCode().getValueAsQName().getPrefix(), se);
}
}