1   /*
2    * Copyright 2005-2010 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.springframework.ws.soap.security.wss4j;
18  
19  import org.springframework.ws.context.DefaultMessageContext;
20  import org.springframework.ws.context.MessageContext;
21  import org.springframework.ws.soap.SoapMessage;
22  import org.springframework.ws.soap.security.WsSecuritySecurementException;
23  import org.springframework.ws.soap.security.WsSecurityValidationException;
24  
25  import org.junit.Test;
26  
27  import static org.junit.Assert.assertEquals;
28  import static org.junit.Assert.fail;
29  
30  public abstract class Wss4jInterceptorTestCase extends Wss4jTestCase {
31  
32      @Test
33      public void testHandleRequest() throws Exception {
34          SoapMessage request = loadSoap11Message("empty-soap.xml");
35          final Object requestMessage = getMessage(request);
36          SoapMessage validatedRequest = loadSoap11Message("empty-soap.xml");
37          final Object validatedRequestMessage = getMessage(validatedRequest);
38          Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor() {
39              @Override
40              protected void secureMessage(SoapMessage soapMessage, MessageContext messageContext)
41                      throws WsSecuritySecurementException {
42                  fail("secure not expected");
43              }
44  
45              @Override
46              protected void validateMessage(SoapMessage soapMessage, MessageContext messageContext)
47                      throws WsSecurityValidationException {
48                  assertEquals("Invalid message", requestMessage, getMessage(soapMessage));
49                  setMessage(soapMessage, validatedRequestMessage);
50              }
51          };
52          MessageContext context = new DefaultMessageContext(request, getSoap11MessageFactory());
53          interceptor.handleRequest(context, null);
54          assertEquals("Invalid request", validatedRequestMessage, getMessage((SoapMessage) context.getRequest()));
55      }
56  
57      @Test
58      public void testHandleResponse() throws Exception {
59          SoapMessage securedResponse = loadSoap11Message("empty-soap.xml");
60          final Object securedResponseMessage = getMessage(securedResponse);
61  
62          Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor() {
63  
64              @Override
65              protected void secureMessage(SoapMessage soapMessage, MessageContext messageContext)
66                      throws WsSecuritySecurementException {
67                  setMessage(soapMessage, securedResponseMessage);
68              }
69  
70              @Override
71              protected void validateMessage(SoapMessage soapMessage, MessageContext messageContext)
72                      throws WsSecurityValidationException {
73                  fail("validate not expected");
74              }
75  
76          };
77          SoapMessage request = loadSoap11Message("empty-soap.xml");
78          MessageContext context = new DefaultMessageContext(request, getSoap11MessageFactory());
79          context.getResponse();
80          interceptor.handleResponse(context, null);
81          assertEquals("Invalid response", securedResponseMessage, getMessage((SoapMessage) context.getResponse()));
82      }
83  
84  }