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 }