1 package org.springframework.ws.soap.security; 2 3 import static org.junit.Assert.assertTrue; 4 import static org.junit.Assert.fail; 5 6 import java.io.IOException; 7 import java.io.InputStream; 8 9 import javax.xml.soap.MessageFactory; 10 import javax.xml.soap.MimeHeaders; 11 import javax.xml.soap.SOAPException; 12 13 import org.junit.Before; 14 import org.junit.Test; 15 import org.springframework.core.io.ClassPathResource; 16 import org.springframework.core.io.Resource; 17 import org.springframework.ws.context.DefaultMessageContext; 18 import org.springframework.ws.context.MessageContext; 19 import org.springframework.ws.soap.SoapMessage; 20 import org.springframework.ws.soap.saaj.SaajSoapMessage; 21 import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; 22 23 public class SkipValidationWsSecurityInterceptorTest { 24 25 private MessageFactory messageFactory; 26 private AbstractWsSecurityInterceptor interceptor; 27 private SaajSoapMessageFactory soapMessageFactory; 28 29 @Before 30 public void setUp() throws Exception { 31 messageFactory = MessageFactory.newInstance(); 32 soapMessageFactory = new SaajSoapMessageFactory(messageFactory); 33 interceptor = new AbstractWsSecurityInterceptor() { 34 35 @Override 36 protected void validateMessage(SoapMessage soapMessage, 37 MessageContext messageContext) 38 throws WsSecurityValidationException { 39 fail("validation must be skipped."); 40 } 41 42 @Override 43 protected void secureMessage(SoapMessage soapMessage, 44 MessageContext messageContext) 45 throws WsSecuritySecurementException { 46 } 47 48 @Override 49 protected void cleanUp() { 50 } 51 }; 52 interceptor.setSkipValidationIfNoHeaderPresent(true); 53 } 54 55 @Test 56 public void testSkipValidationOnNoHeader() throws Exception { 57 doTestSkipValidation("noHeader-soap.xml"); 58 } 59 60 @Test 61 public void testSkipValidationOnEmptyHeader() throws Exception { 62 doTestSkipValidation("emptyHeader-soap.xml"); 63 } 64 65 @Test 66 public void testSkipValidationOnNoSecurityHeader() throws Exception { 67 doTestSkipValidation("noSecurityHeader-soap.xml"); 68 } 69 70 71 private void doTestSkipValidation(String fileName) throws Exception { 72 SoapMessage message = loadSaajMessage(fileName); 73 MessageContext messageContext = new DefaultMessageContext(message, 74 soapMessageFactory); 75 assertTrue("handeRequest result must be true", interceptor 76 .handleRequest(messageContext, null)); 77 78 } 79 80 private SaajSoapMessage loadSaajMessage(String fileName) 81 throws SOAPException, IOException { 82 MimeHeaders mimeHeaders = new MimeHeaders(); 83 mimeHeaders.addHeader("Content-Type", "text/xml"); 84 Resource resource = new ClassPathResource(fileName, getClass()); 85 InputStream is = resource.getInputStream(); 86 try { 87 assertTrue("Could not load SAAJ message [" + resource + "]", 88 resource.exists()); 89 is = resource.getInputStream(); 90 return new SaajSoapMessage(messageFactory.createMessage( 91 mimeHeaders, is)); 92 } finally { 93 is.close(); 94 } 95 } 96 }