Fixed the build.

This commit is contained in:
Arjen Poutsma
2006-11-16 10:56:37 +00:00
parent eae2989096
commit 8013f469f5
9 changed files with 202 additions and 152 deletions

View File

@@ -20,8 +20,13 @@ import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPMessage;
import junit.framework.TestCase;
import org.springframework.ws.soap.saaj.SaajSoapMessageContext;
import org.springframework.ws.soap.saaj.saaj13.Saaj13SoapMessageContext;
import org.springframework.ws.context.DefaultMessageContext;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.soap.SoapMessage;
import org.springframework.ws.soap.saaj.SaajSoapMessage;
import org.springframework.ws.soap.saaj.SaajSoapMessageFactory;
import org.springframework.ws.soap.saaj.saaj13.Saaj13SoapMessage;
import org.springframework.ws.soap.security.WsSecurityValidationException;
public class XwsSecurityInterceptorTest extends TestCase {
@@ -35,42 +40,43 @@ public class XwsSecurityInterceptorTest extends TestCase {
final SOAPMessage request = messageFactory.createMessage();
final SOAPMessage validatedRequest = messageFactory.createMessage();
XwsSecurityInterceptor interceptor = new XwsSecurityInterceptor() {
protected SOAPMessage secureMessage(SOAPMessage message) throws XwsSecuritySecurementException {
protected void secureMessage(SoapMessage soapMessage) throws XwsSecuritySecurementException {
fail("secure not expected");
return null;
}
protected SOAPMessage validateMessage(SOAPMessage message) throws XwsSecurityValidationException {
assertEquals("Invalid message", request, message);
return validatedRequest;
protected void validateMessage(SoapMessage message) throws WsSecurityValidationException {
SaajSoapMessage saajSoapMessage = (SaajSoapMessage) message;
assertEquals("Invalid message", request, saajSoapMessage.getSaajMessage());
saajSoapMessage.setSaajMessage(validatedRequest);
}
};
SaajSoapMessageContext context = new Saaj13SoapMessageContext(request, messageFactory);
MessageContext context =
new DefaultMessageContext(new Saaj13SoapMessage(request), new SaajSoapMessageFactory(messageFactory));
interceptor.handleRequest(context, null);
assertEquals("Invalid request", validatedRequest, context.getSaajRequest());
assertEquals("Invalid request", validatedRequest, ((SaajSoapMessage) context.getRequest()).getSaajMessage());
}
public void testhandleResponse() throws Exception {
final SOAPMessage response = messageFactory.createMessage();
final SOAPMessage securedResponse = messageFactory.createMessage();
XwsSecurityInterceptor interceptor = new XwsSecurityInterceptor() {
protected SOAPMessage secureMessage(SOAPMessage message) throws XwsSecuritySecurementException {
assertEquals("Invalid message", response, message);
return securedResponse;
protected void secureMessage(SoapMessage message) throws XwsSecuritySecurementException {
SaajSoapMessage saajSoapMessage = (SaajSoapMessage) message;
saajSoapMessage.setSaajMessage(securedResponse);
}
protected SOAPMessage validateMessage(SOAPMessage message) throws XwsSecurityValidationException {
protected void validateMessage(SoapMessage soapMessage) throws WsSecurityValidationException {
fail("validate not expected");
return null;
}
};
SOAPMessage request = messageFactory.createMessage();
SaajSoapMessageContext context = new Saaj13SoapMessageContext(request, messageFactory);
context.setSaajResponse(response);
MessageContext context =
new DefaultMessageContext(new Saaj13SoapMessage(request), new SaajSoapMessageFactory(messageFactory));
interceptor.handleResponse(context, null);
assertEquals("Invalid response", securedResponse, context.getSaajResponse());
assertEquals("Invalid response", securedResponse, ((SaajSoapMessage) context.getResponse()).getSaajMessage());
}
}

View File

@@ -22,8 +22,8 @@ import javax.xml.soap.SOAPMessage;
import com.sun.xml.wss.impl.callback.DecryptionKeyCallback;
import com.sun.xml.wss.impl.callback.EncryptionKeyCallback;
import org.springframework.core.io.ClassPathResource;
import org.springframework.ws.soap.saaj.SaajSoapMessage;
import org.springframework.ws.soap.security.xwss.callback.AbstractCallbackHandler;
public class XwssMessageInterceptorEncryptTest extends XwssMessageInterceptorKeyStoreTestCase {
@@ -52,8 +52,9 @@ public class XwssMessageInterceptorEncryptTest extends XwssMessageInterceptorKey
};
interceptor.setCallbackHandler(handler);
interceptor.afterPropertiesSet();
SOAPMessage message = loadSaajMessage("empty-soap.xml");
SOAPMessage result = interceptor.secureMessage(message);
SaajSoapMessage message = loadSaajMessage("empty-soap.xml");
interceptor.secureMessage(message);
SOAPMessage result = message.getSaajMessage();
assertNotNull("No result returned", result);
assertXpathExists("BinarySecurityToken does not exist",
"SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsse:BinarySecurityToken", result);
@@ -85,8 +86,9 @@ public class XwssMessageInterceptorEncryptTest extends XwssMessageInterceptorKey
};
interceptor.setCallbackHandler(handler);
interceptor.afterPropertiesSet();
SOAPMessage message = loadSaajMessage("empty-soap.xml");
SOAPMessage result = interceptor.secureMessage(message);
SaajSoapMessage message = loadSaajMessage("empty-soap.xml");
interceptor.secureMessage(message);
SOAPMessage result = message.getSaajMessage();
assertNotNull("No result returned", result);
assertXpathExists("BinarySecurityToken does not exist",
"SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsse:BinarySecurityToken", result);
@@ -118,8 +120,9 @@ public class XwssMessageInterceptorEncryptTest extends XwssMessageInterceptorKey
};
interceptor.setCallbackHandler(handler);
interceptor.afterPropertiesSet();
SOAPMessage message = loadSaajMessage("encrypted-soap.xml");
SOAPMessage result = interceptor.validateMessage(message);
SaajSoapMessage message = loadSaajMessage("encrypted-soap.xml");
interceptor.validateMessage(message);
SOAPMessage result = message.getSaajMessage();
assertNotNull("No result returned", result);
assertXpathNotExists("Security Header not removed", "/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security", result);
}

View File

@@ -17,15 +17,14 @@
package org.springframework.ws.soap.security.xwss;
import java.security.cert.X509Certificate;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.xml.soap.SOAPMessage;
import com.sun.xml.wss.impl.callback.CertificateValidationCallback;
import com.sun.xml.wss.impl.callback.SignatureKeyCallback;
import org.springframework.core.io.ClassPathResource;
import org.springframework.ws.soap.saaj.SaajSoapMessage;
import org.springframework.ws.soap.security.xwss.callback.AbstractCallbackHandler;
public class XwssMessageInterceptorSignTest extends XwssMessageInterceptorKeyStoreTestCase {
@@ -54,8 +53,9 @@ public class XwssMessageInterceptorSignTest extends XwssMessageInterceptorKeySto
};
interceptor.setCallbackHandler(handler);
interceptor.afterPropertiesSet();
SOAPMessage message = loadSaajMessage("empty-soap.xml");
SOAPMessage result = interceptor.secureMessage(message);
SaajSoapMessage message = loadSaajMessage("empty-soap.xml");
interceptor.secureMessage(message);
SOAPMessage result = message.getSaajMessage();
assertNotNull("No result returned", result);
assertXpathExists("BinarySecurityToken does not exist",
"SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsse:BinarySecurityToken", result);
@@ -88,8 +88,9 @@ public class XwssMessageInterceptorSignTest extends XwssMessageInterceptorKeySto
};
interceptor.setCallbackHandler(handler);
interceptor.afterPropertiesSet();
SOAPMessage message = loadSaajMessage("empty-soap.xml");
SOAPMessage result = interceptor.secureMessage(message);
SaajSoapMessage message = loadSaajMessage("empty-soap.xml");
interceptor.secureMessage(message);
SOAPMessage result = message.getSaajMessage();
assertNotNull("No result returned", result);
assertXpathExists("BinarySecurityToken does not exist",
"SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsse:BinarySecurityToken", result);
@@ -118,8 +119,9 @@ public class XwssMessageInterceptorSignTest extends XwssMessageInterceptorKeySto
};
interceptor.setCallbackHandler(handler);
interceptor.afterPropertiesSet();
SOAPMessage message = loadSaajMessage("signed-soap.xml");
SOAPMessage result = interceptor.validateMessage(message);
SaajSoapMessage message = loadSaajMessage("signed-soap.xml");
interceptor.validateMessage(message);
SOAPMessage result = message.getSaajMessage();
assertNotNull("No result returned", result);
assertXpathNotExists("Security Header not removed", "/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security", result);
}

View File

@@ -20,18 +20,18 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import junit.framework.TestCase;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.springframework.ws.soap.saaj.SaajSoapMessage;
import org.springframework.ws.soap.saaj.saaj13.Saaj13SoapMessage;
import org.springframework.xml.xpath.XPathExpression;
import org.springframework.xml.xpath.XPathExpressionFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
public abstract class XwssMessageInterceptorTestCase extends TestCase {
@@ -76,14 +76,14 @@ public abstract class XwssMessageInterceptorTestCase extends TestCase {
assertNull(message, node);
}
protected SOAPMessage loadSaajMessage(String fileName) throws SOAPException, IOException {
protected SaajSoapMessage loadSaajMessage(String fileName) throws SOAPException, IOException {
MimeHeaders mimeHeaders = new MimeHeaders();
mimeHeaders.addHeader("Content-Type", "text/xml");
InputStream is = null;
try {
is = getClass().getResourceAsStream(fileName);
assertNotNull("Could not load SAAJ message with name [" + fileName + "]", is);
return messageFactory.createMessage(mimeHeaders, is);
assertNotNull("Could not load SAAJ message with name [" + fileName + "]", is);
return new Saaj13SoapMessage(messageFactory.createMessage(mimeHeaders, is));
}
finally {
if (is != null) {

View File

@@ -25,6 +25,7 @@ import com.sun.xml.wss.impl.callback.PasswordValidationCallback;
import com.sun.xml.wss.impl.callback.TimestampValidationCallback;
import com.sun.xml.wss.impl.callback.UsernameCallback;
import org.springframework.core.io.ClassPathResource;
import org.springframework.ws.soap.saaj.SaajSoapMessage;
import org.springframework.ws.soap.security.xwss.callback.AbstractCallbackHandler;
public class XwssMessageInterceptorUsernameTokenTest extends XwssMessageInterceptorTestCase {
@@ -48,13 +49,12 @@ public class XwssMessageInterceptorUsernameTokenTest extends XwssMessageIntercep
};
interceptor.setCallbackHandler(handler);
interceptor.afterPropertiesSet();
SOAPMessage message = loadSaajMessage("empty-soap.xml");
SOAPMessage result = interceptor.secureMessage(message);
SaajSoapMessage message = loadSaajMessage("empty-soap.xml");
interceptor.secureMessage(message);
SOAPMessage result = message.getSaajMessage();
assertNotNull("No result returned", result);
assertXpathEvaluatesTo("Invalid Username",
"Bert",
"/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsse:UsernameToken/wsse:Username/text()",
result);
assertXpathEvaluatesTo("Invalid Username", "Bert",
"/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsse:UsernameToken/wsse:Username/text()", result);
assertXpathExists("Password does not exist",
"/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsse:UsernameToken/wsse:Password[@Type='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest']",
result);
@@ -79,15 +79,13 @@ public class XwssMessageInterceptorUsernameTokenTest extends XwssMessageIntercep
};
interceptor.setCallbackHandler(handler);
interceptor.afterPropertiesSet();
SOAPMessage message = loadSaajMessage("empty-soap.xml");
SOAPMessage result = interceptor.secureMessage(message);
SaajSoapMessage message = loadSaajMessage("empty-soap.xml");
interceptor.secureMessage(message);
SOAPMessage result = message.getSaajMessage();
assertNotNull("No result returned", result);
assertXpathEvaluatesTo("Invalid Username",
"Bert",
"/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsse:UsernameToken/wsse:Username/text()",
result);
assertXpathEvaluatesTo("Invalid Password",
"Ernie",
assertXpathEvaluatesTo("Invalid Username", "Bert",
"/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsse:UsernameToken/wsse:Username/text()", result);
assertXpathEvaluatesTo("Invalid Password", "Ernie",
"/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security/wsse:UsernameToken/wsse:Password[@Type='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText']/text()",
result);
}
@@ -123,8 +121,9 @@ public class XwssMessageInterceptorUsernameTokenTest extends XwssMessageIntercep
};
interceptor.setCallbackHandler(handler);
interceptor.afterPropertiesSet();
SOAPMessage message = loadSaajMessage("usernameTokenPlainText-soap.xml");
SOAPMessage result = interceptor.validateMessage(message);
SaajSoapMessage message = loadSaajMessage("usernameTokenPlainText-soap.xml");
interceptor.validateMessage(message);
SOAPMessage result = message.getSaajMessage();
assertNotNull("No result returned", result);
assertXpathNotExists("Security Header not removed", "/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security", result);
}
@@ -161,8 +160,9 @@ public class XwssMessageInterceptorUsernameTokenTest extends XwssMessageIntercep
};
interceptor.setCallbackHandler(handler);
interceptor.afterPropertiesSet();
SOAPMessage message = loadSaajMessage("usernameTokenDigest-soap.xml");
SOAPMessage result = interceptor.validateMessage(message);
SaajSoapMessage message = loadSaajMessage("usernameTokenDigest-soap.xml");
interceptor.validateMessage(message);
SOAPMessage result = message.getSaajMessage();
assertNotNull("No result returned", result);
assertXpathNotExists("Security Header not removed", "/SOAP-ENV:Envelope/SOAP-ENV:Header/wsse:Security", result);
}