Added the ability to load Soap 1.2 messages. Renamed methods in existing tests for consistency.

This commit is contained in:
Tareq Abedrabbo
2010-01-12 19:23:50 +00:00
parent 596946e1f8
commit f4768518c0
12 changed files with 139 additions and 80 deletions

View File

@@ -46,10 +46,10 @@ public class SaajWss4jMessageInterceptorSignTest extends Wss4jMessageInterceptor
interceptor.setEnableSignatureConfirmation(false);
interceptor.setSecurementPassword("123456");
interceptor.setSecurementUsername("rsaKey");
SOAPMessage saajMessage = messageFactory.createMessage();
SOAPMessage saajMessage = saajSoap11MessageFactory.createMessage();
transformer.transform(new StringSource(PAYLOAD), new DOMResult(saajMessage.getSOAPBody()));
SoapMessage message = new SaajSoapMessage(saajMessage);
MessageContext messageContext = new DefaultMessageContext(message, new SaajSoapMessageFactory(messageFactory));
MessageContext messageContext = new DefaultMessageContext(message, new SaajSoapMessageFactory(saajSoap11MessageFactory));
interceptor.secureMessage(message, messageContext);
@@ -68,9 +68,9 @@ public class SaajWss4jMessageInterceptorSignTest extends Wss4jMessageInterceptor
mimeHeaders.addHeader("Content-Type", "text/xml");
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
SOAPMessage signed = messageFactory.createMessage(mimeHeaders, bis);
SOAPMessage signed = saajSoap11MessageFactory.createMessage(mimeHeaders, bis);
message = new SaajSoapMessage(signed);
messageContext = new DefaultMessageContext(message, new SaajSoapMessageFactory(messageFactory));
messageContext = new DefaultMessageContext(message, new SaajSoapMessageFactory(saajSoap11MessageFactory));
interceptor.validateMessage(message, messageContext);
}

View File

@@ -25,9 +25,9 @@ import org.springframework.ws.soap.security.WsSecurityValidationException;
public abstract class Wss4jInterceptorTestCase extends Wss4jTestCase {
public void testhandleRequest() throws Exception {
SoapMessage request = loadMessage("empty-soap.xml");
SoapMessage request = loadSoap11Message("empty-soap.xml");
final Object requestMessage = getMessage(request);
SoapMessage validatedRequest = loadMessage("empty-soap.xml");
SoapMessage validatedRequest = loadSoap11Message("empty-soap.xml");
final Object validatedRequestMessage = getMessage(validatedRequest);
Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor() {
protected void secureMessage(SoapMessage soapMessage, MessageContext messageContext)
@@ -41,13 +41,13 @@ public abstract class Wss4jInterceptorTestCase extends Wss4jTestCase {
setMessage(soapMessage, validatedRequestMessage);
}
};
MessageContext context = new DefaultMessageContext(request, getMessageFactory());
MessageContext context = new DefaultMessageContext(request, getSoap11MessageFactory());
interceptor.handleRequest(context, null);
assertEquals("Invalid request", validatedRequestMessage, getMessage((SoapMessage) context.getRequest()));
}
public void testhandleResponse() throws Exception {
SoapMessage securedResponse = loadMessage("empty-soap.xml");
SoapMessage securedResponse = loadSoap11Message("empty-soap.xml");
final Object securedResponseMessage = getMessage(securedResponse);
Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor() {
@@ -63,8 +63,8 @@ public abstract class Wss4jInterceptorTestCase extends Wss4jTestCase {
}
};
SoapMessage request = loadMessage("empty-soap.xml");
MessageContext context = new DefaultMessageContext(request, getMessageFactory());
SoapMessage request = loadSoap11Message("empty-soap.xml");
MessageContext context = new DefaultMessageContext(request, getSoap11MessageFactory());
context.getResponse();
interceptor.handleResponse(context, null);
assertEquals("Invalid response", securedResponseMessage, getMessage((SoapMessage) context.getResponse()));

View File

@@ -56,8 +56,8 @@ public abstract class Wss4jMessageInterceptorAcegiCallbackHandlerTestCase extend
public void testValidateUsernameTokenPlainText() throws Exception {
EndpointInterceptor interceptor = prepareInterceptor("UsernameToken", true, false);
SoapMessage message = loadMessage("usernameTokenPlainText-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("usernameTokenPlainText-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.handleRequest(messageContext, null);
assertValidateUsernameToken(message);
@@ -69,8 +69,8 @@ public abstract class Wss4jMessageInterceptorAcegiCallbackHandlerTestCase extend
public void testValidateUsernameTokenDigest() throws Exception {
EndpointInterceptor interceptor = prepareInterceptor("UsernameToken", true, true);
SoapMessage message = loadMessage("usernameTokenDigest-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("usernameTokenDigest-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.handleRequest(messageContext, null);
assertValidateUsernameToken(message);

View File

@@ -61,8 +61,8 @@ public abstract class Wss4jMessageInterceptorEncryptionTestCase extends Wss4jTes
}
public void testDecryptRequest() throws Exception {
SoapMessage message = loadMessage("encrypted-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("encrypted-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.validateMessage(message, messageContext);
Document document = getDocument((SoapMessage) messageContext.getRequest());
assertXpathEvaluatesTo("Decryption error", "Hello", "/SOAP-ENV:Envelope/SOAP-ENV:Body/echo:echoRequest/text()",
@@ -72,8 +72,8 @@ public abstract class Wss4jMessageInterceptorEncryptionTestCase extends Wss4jTes
}
public void testEncryptResponse() throws Exception {
SoapMessage message = loadMessage("empty-soap.xml");
MessageContext messageContext = getMessageContext(message);
SoapMessage message = loadSoap11Message("empty-soap.xml");
MessageContext messageContext = getSoap11MessageContext(message);
interceptor.setSecurementEncryptionUser("rsakey");
interceptor.secureMessage(message, messageContext);
Document document = getDocument(message);

View File

@@ -46,8 +46,8 @@ public abstract class Wss4jMessageInterceptorHeaderTestCase extends Wss4jTestCas
}
public void testValidateUsernameTokenPlainText() throws Exception {
SoapMessage message = loadMessage("usernameTokenPlainTextWithHeaders-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("usernameTokenPlainTextWithHeaders-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.validateMessage(message, messageContext);
Object result = getMessage(message);
assertNotNull("No result returned", result);
@@ -70,8 +70,8 @@ public abstract class Wss4jMessageInterceptorHeaderTestCase extends Wss4jTestCas
}
public void testEmptySecurityHeader() throws Exception {
SoapMessage message = loadMessage("emptySecurityHeader-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("emptySecurityHeader-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
try {
interceptor.validateMessage(message, messageContext);
fail("validation must fail for an empty security header.");
@@ -87,8 +87,8 @@ public abstract class Wss4jMessageInterceptorHeaderTestCase extends Wss4jTestCas
interceptor.setSecurementPassword("Ernie");
ByteArrayOutputStream os = new ByteArrayOutputStream();
SoapMessage message = loadMessage("customHeader-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("customHeader-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
message.writeTo(os);
String document = os.toString("UTF-8");
assertXpathEvaluatesTo("Header 1 does not exist", "test1", "/SOAP-ENV:Envelope/SOAP-ENV:Header/test:header1",

View File

@@ -55,9 +55,9 @@ public abstract class Wss4jMessageInterceptorSignTestCase extends Wss4jTestCase
}
public void testValidateCertificate() throws Exception {
SoapMessage message = loadMessage("signed-soap.xml");
SoapMessage message = loadSoap11Message("signed-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.validateMessage(message, messageContext);
Object result = getMessage(message);
assertNotNull("No result returned", result);
@@ -66,8 +66,8 @@ public abstract class Wss4jMessageInterceptorSignTestCase extends Wss4jTestCase
}
public void testValidateCertificateWithSignatureConfirmation() throws Exception {
SoapMessage message = loadMessage("signed-soap.xml");
MessageContext messageContext = getMessageContext(message);
SoapMessage message = loadSoap11Message("signed-soap.xml");
MessageContext messageContext = getSoap11MessageContext(message);
interceptor.setEnableSignatureConfirmation(true);
interceptor.validateMessage(message, messageContext);
WebServiceMessage response = messageContext.getResponse();
@@ -83,8 +83,8 @@ public abstract class Wss4jMessageInterceptorSignTestCase extends Wss4jTestCase
interceptor.setEnableSignatureConfirmation(false);
interceptor.setSecurementPassword("123456");
interceptor.setSecurementUsername("rsaKey");
SoapMessage message = loadMessage("empty-soap.xml");
MessageContext messageContext = getMessageContext(message);
SoapMessage message = loadSoap11Message("empty-soap.xml");
MessageContext messageContext = getSoap11MessageContext(message);
// interceptor.setSecurementSignatureKeyIdentifier("IssuerSerial");
@@ -102,8 +102,8 @@ public abstract class Wss4jMessageInterceptorSignTestCase extends Wss4jTestCase
interceptor.setEnableSignatureConfirmation(false);
interceptor.setSecurementPassword("123456");
interceptor.setSecurementSignatureUser("rsaKey");
SoapMessage message = loadMessage("empty-soap.xml");
MessageContext messageContext = getMessageContext(message);
SoapMessage message = loadSoap11Message("empty-soap.xml");
MessageContext messageContext = getSoap11MessageContext(message);
interceptor.secureMessage(message, messageContext);

View File

@@ -56,8 +56,8 @@ public abstract class Wss4jMessageInterceptorSpringSecurityCallbackHandlerTestCa
public void testValidateUsernameTokenPlainText() throws Exception {
EndpointInterceptor interceptor = prepareInterceptor("UsernameToken", true, false);
SoapMessage message = loadMessage("usernameTokenPlainText-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("usernameTokenPlainText-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.handleRequest(messageContext, null);
assertValidateUsernameToken(message);
@@ -69,8 +69,8 @@ public abstract class Wss4jMessageInterceptorSpringSecurityCallbackHandlerTestCa
public void testValidateUsernameTokenDigest() throws Exception {
EndpointInterceptor interceptor = prepareInterceptor("UsernameToken", true, true);
SoapMessage message = loadMessage("usernameTokenDigest-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("usernameTokenDigest-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.handleRequest(messageContext, null);
assertValidateUsernameToken(message);

View File

@@ -16,22 +16,15 @@
package org.springframework.ws.soap.security.wss4j;
import java.lang.reflect.Field;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import org.w3c.dom.Document;
import org.springframework.ws.context.DefaultMessageContext;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.soap.SoapMessage;
import org.springframework.ws.soap.security.WsSecurityValidationException;
import org.springframework.xml.transform.StringResult;
public abstract class Wss4jMessageInterceptorTimestampTestCase extends Wss4jTestCase {
@@ -39,8 +32,8 @@ public abstract class Wss4jMessageInterceptorTimestampTestCase extends Wss4jTest
Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor();
interceptor.setSecurementActions("Timestamp");
interceptor.afterPropertiesSet();
SoapMessage message = loadMessage("empty-soap.xml");
MessageContext context = getMessageContext(message);
SoapMessage message = loadSoap11Message("empty-soap.xml");
MessageContext context = getSoap11MessageContext(message);
interceptor.secureMessage(message, context);
Document document = getDocument(message);
assertXpathExists("timestamp header not found",
@@ -53,7 +46,7 @@ public abstract class Wss4jMessageInterceptorTimestampTestCase extends Wss4jTest
interceptor.afterPropertiesSet();
SoapMessage message = getMessageWithTimestamp();
MessageContext context = new DefaultMessageContext(message, getMessageFactory());
MessageContext context = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.validateMessage(message, context);
assertXpathNotExists("Security Header not removed", "/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security",
getDocument(message));
@@ -63,8 +56,8 @@ public abstract class Wss4jMessageInterceptorTimestampTestCase extends Wss4jTest
Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor();
interceptor.setValidationActions("Timestamp");
interceptor.afterPropertiesSet();
SoapMessage message = loadMessage("expiredTimestamp-soap.xml");
MessageContext context = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("expiredTimestamp-soap.xml");
MessageContext context = new DefaultMessageContext(message, getSoap11MessageFactory());
try {
interceptor.validateMessage(message, context);
fail();
@@ -81,8 +74,8 @@ public abstract class Wss4jMessageInterceptorTimestampTestCase extends Wss4jTest
interceptor.setTimestampStrict(true);
interceptor.setSecurementTimeToLive(ttlInSeconds);
interceptor.afterPropertiesSet();
SoapMessage message = loadMessage("empty-soap.xml");
MessageContext context = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("empty-soap.xml");
MessageContext context = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.secureMessage(message, context);
String created = xpathTemplate.evaluateAsString("/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsu:Timestamp/wsu:Created/text()",
@@ -100,8 +93,8 @@ public abstract class Wss4jMessageInterceptorTimestampTestCase extends Wss4jTest
Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor();
interceptor.setSecurementActions("Timestamp");
interceptor.afterPropertiesSet();
SoapMessage message = loadMessage("empty-soap.xml");
MessageContext context = getMessageContext(message);
SoapMessage message = loadSoap11Message("empty-soap.xml");
MessageContext context = getSoap11MessageContext(message);
interceptor.secureMessage(message, context);
return message;
}

View File

@@ -29,8 +29,8 @@ public abstract class Wss4jMessageInterceptorUsernameTokenSignatureTestCase exte
interceptor.setSecurementUsername("Bert");
interceptor.setSecurementPassword("Ernie");
interceptor.afterPropertiesSet();
SoapMessage message = loadMessage("empty-soap.xml");
MessageContext context = getMessageContext(message);
SoapMessage message = loadSoap11Message("empty-soap.xml");
MessageContext context = getSoap11MessageContext(message);
interceptor.secureMessage(message, context);
Document doc = getDocument(message);

View File

@@ -25,7 +25,6 @@ import org.springframework.ws.context.DefaultMessageContext;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.soap.SoapMessage;
import org.springframework.ws.soap.security.wss4j.callback.SimplePasswordValidationCallbackHandler;
import org.springframework.ws.soap.security.WsSecurityValidationException;
public abstract class Wss4jMessageInterceptorUsernameTokenTestCase extends Wss4jTestCase {
@@ -37,24 +36,24 @@ public abstract class Wss4jMessageInterceptorUsernameTokenTestCase extends Wss4j
public void testValidateUsernameTokenPlainText() throws Exception {
Wss4jSecurityInterceptor interceptor = prepareInterceptor("UsernameToken", true, false);
SoapMessage message = loadMessage("usernameTokenPlainText-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("usernameTokenPlainText-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.validateMessage(message, messageContext);
assertValidateUsernameToken(message);
}
public void testValidateUsernameTokenDigest() throws Exception {
Wss4jSecurityInterceptor interceptor = prepareInterceptor("UsernameToken", true, true);
SoapMessage message = loadMessage("usernameTokenDigest-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("usernameTokenDigest-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.validateMessage(message, messageContext);
assertValidateUsernameToken(message);
}
public void testValidateUsernameTokenWithQualifiedType() throws Exception {
Wss4jSecurityInterceptor interceptor = prepareInterceptor("UsernameToken", true, false);
SoapMessage message = loadMessage("usernameTokenPlainTextQualifiedType-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getMessageFactory());
SoapMessage message = loadSoap11Message("usernameTokenPlainTextQualifiedType-soap.xml");
MessageContext messageContext = new DefaultMessageContext(message, getSoap11MessageFactory());
interceptor.validateMessage(message, messageContext);
assertValidateUsernameToken(message);
}
@@ -63,9 +62,9 @@ public abstract class Wss4jMessageInterceptorUsernameTokenTestCase extends Wss4j
Wss4jSecurityInterceptor interceptor = prepareInterceptor("UsernameToken", false, false);
interceptor.setSecurementUsername("Bert");
interceptor.setSecurementPassword("Ernie");
SoapMessage message = loadMessage("empty-soap.xml");
SoapMessage message = loadSoap11Message("empty-soap.xml");
MessageContext messageContext = getMessageContext(message);
MessageContext messageContext = getSoap11MessageContext(message);
interceptor.secureMessage(message, messageContext);
assertAddUsernameTokenPlainText(message);
@@ -75,9 +74,9 @@ public abstract class Wss4jMessageInterceptorUsernameTokenTestCase extends Wss4j
Wss4jSecurityInterceptor interceptor = prepareInterceptor("UsernameToken", false, true);
interceptor.setSecurementUsername("Bert");
interceptor.setSecurementPassword("Ernie");
SoapMessage message = loadMessage("empty-soap.xml");
SoapMessage message = loadSoap11Message("empty-soap.xml");
MessageContext messageContext = getMessageContext(message);
MessageContext messageContext = getSoap11MessageContext(message);
interceptor.secureMessage(message, messageContext);
assertAddUsernameTokenDigest(message);
}

View File

@@ -52,8 +52,8 @@ public abstract class Wss4jMessageInterceptorX509TestCase extends Wss4jTestCase
interceptor.setSecurementPassword("123456");
interceptor.setSecurementUsername("rsaKey");
SoapMessage message = loadMessage("empty-soap.xml");
MessageContext messageContext = getMessageContext(message);
SoapMessage message = loadSoap11Message("empty-soap.xml");
MessageContext messageContext = getSoap11MessageContext(message);
interceptor.setSecurementSignatureKeyIdentifier("DirectReference");

View File

@@ -20,22 +20,25 @@ import java.util.Properties;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPConstants;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.dom.DOMSource;
import junit.framework.TestCase;
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.apache.axiom.soap.SOAP12Constants;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.WebServiceMessageFactory;
import org.springframework.ws.context.DefaultMessageContext;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.soap.SoapMessage;
import org.springframework.ws.soap.SoapMessageFactory;
import org.springframework.ws.soap.SoapVersion;
import org.springframework.ws.soap.axiom.AxiomSoapMessage;
import org.springframework.ws.soap.axiom.AxiomSoapMessageFactory;
import org.springframework.ws.soap.axiom.support.AxiomUtils;
@@ -46,7 +49,8 @@ import org.springframework.xml.xpath.Jaxp13XPathTemplate;
public abstract class Wss4jTestCase extends TestCase {
protected MessageFactory messageFactory;
protected MessageFactory saajSoap11MessageFactory;
protected MessageFactory saajSoap12MessageFactory;
protected final boolean axiomTest = this.getClass().getSimpleName().startsWith("Axiom");
@@ -58,7 +62,8 @@ public abstract class Wss4jTestCase extends TestCase {
if (!axiomTest && !saajTest) {
throw new IllegalArgumentException("test class name must statrt with either Axiom or Saaj");
}
messageFactory = MessageFactory.newInstance();
saajSoap11MessageFactory = MessageFactory.newInstance();
saajSoap12MessageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
Properties namespaces = new Properties();
namespaces.setProperty("SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
namespaces.setProperty("wsse",
@@ -105,7 +110,7 @@ public abstract class Wss4jTestCase extends TestCase {
assertNull(message, node);
}
protected SaajSoapMessage loadSaajMessage(String fileName) throws Exception {
protected SaajSoapMessage loadSaaj11Message(String fileName) throws Exception {
MimeHeaders mimeHeaders = new MimeHeaders();
mimeHeaders.addHeader("Content-Type", "text/xml");
Resource resource = new ClassPathResource(fileName, getClass());
@@ -113,14 +118,29 @@ public abstract class Wss4jTestCase extends TestCase {
try {
assertTrue("Could not load SAAJ message [" + resource + "]", resource.exists());
is = resource.getInputStream();
return new SaajSoapMessage(messageFactory.createMessage(mimeHeaders, is));
return new SaajSoapMessage(saajSoap11MessageFactory.createMessage(mimeHeaders, is));
}
finally {
is.close();
}
}
protected SaajSoapMessage loadSaaj12Message(String fileName) throws Exception {
MimeHeaders mimeHeaders = new MimeHeaders();
mimeHeaders.addHeader("Content-Type", "application/soap+xml");
Resource resource = new ClassPathResource(fileName, getClass());
InputStream is = resource.getInputStream();
try {
assertTrue("Could not load SAAJ message [" + resource + "]", resource.exists());
is = resource.getInputStream();
return new SaajSoapMessage(saajSoap12MessageFactory.createMessage(mimeHeaders, is));
}
finally {
is.close();
}
}
protected AxiomSoapMessage loadAxiomMessage(String fileName) throws Exception {
protected AxiomSoapMessage loadAxiom11Message(String fileName) throws Exception {
Resource resource = new ClassPathResource(fileName, getClass());
InputStream is = resource.getInputStream();
try {
@@ -137,6 +157,23 @@ public abstract class Wss4jTestCase extends TestCase {
}
}
protected AxiomSoapMessage loadAxiom12Message(String fileName) throws Exception {
Resource resource = new ClassPathResource(fileName, getClass());
InputStream is = resource.getInputStream();
try {
assertTrue("Could not load Axiom message [" + resource + "]", resource.exists());
is = resource.getInputStream();
XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(is);
StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(parser, SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
org.apache.axiom.soap.SOAPMessage soapMessage = builder.getSoapMessage();
return new AxiomSoapMessage(soapMessage, "", true, true);
}
finally {
is.close();
}
}
protected Object getMessage(SoapMessage soapMessage) {
if (soapMessage instanceof SaajSoapMessage) {
return ((SaajSoapMessage) soapMessage).getSaajMessage();
@@ -163,26 +200,48 @@ public abstract class Wss4jTestCase extends TestCase {
protected void onSetup() throws Exception {
}
protected SoapMessage loadMessage(String fileName) throws Exception {
protected SoapMessage loadSoap11Message(String fileName) throws Exception {
if (axiomTest) {
return loadAxiomMessage(fileName);
return loadAxiom11Message(fileName);
}
if (saajTest) {
return loadSaajMessage(fileName);
return loadSaaj11Message(fileName);
}
throw new IllegalArgumentException();
}
protected WebServiceMessageFactory getMessageFactory() throws Exception {
protected SoapMessage loadSoap12Message(String fileName) throws Exception {
if (axiomTest) {
return loadAxiom12Message(fileName);
}
if (saajTest) {
return loadSaaj12Message(fileName);
}
throw new IllegalArgumentException();
}
protected SoapMessageFactory getSoap11MessageFactory() throws Exception {
if (axiomTest) {
return new AxiomSoapMessageFactory();
}
if (saajTest) {
return new SaajSoapMessageFactory(messageFactory);
return new SaajSoapMessageFactory(saajSoap11MessageFactory);
}
throw new IllegalArgumentException();
}
protected SoapMessageFactory getSoap12MessageFactory() throws Exception {
SoapMessageFactory messageFactory;
if (axiomTest) {
messageFactory = new AxiomSoapMessageFactory();
} else if (saajTest) {
messageFactory = new SaajSoapMessageFactory(saajSoap12MessageFactory);
} else
throw new IllegalArgumentException();
messageFactory.setSoapVersion(SoapVersion.SOAP_12);
return messageFactory;
}
protected Document getDocument(SoapMessage message) throws Exception {
if (axiomTest) {
return AxiomUtils.toDocument(((AxiomSoapMessage) message).getAxiomMessage().getSOAPEnvelope());
@@ -193,8 +252,16 @@ public abstract class Wss4jTestCase extends TestCase {
throw new IllegalArgumentException();
}
protected MessageContext getMessageContext(final SoapMessage response) throws Exception {
return new DefaultMessageContext(response, getMessageFactory()) {
protected MessageContext getSoap11MessageContext(final SoapMessage response) throws Exception {
return new DefaultMessageContext(response, getSoap11MessageFactory()) {
public WebServiceMessage getResponse() {
return response;
}
};
}
protected MessageContext getSoap12MessageContext(final SoapMessage response) throws Exception {
return new DefaultMessageContext(response, getSoap12MessageFactory()) {
public WebServiceMessage getResponse() {
return response;
}