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.server.endpoint.interceptor;
18  
19  import org.springframework.core.io.ClassPathResource;
20  import org.springframework.ws.context.DefaultMessageContext;
21  import org.springframework.ws.context.MessageContext;
22  import org.springframework.ws.soap.saaj.SaajSoapMessageFactory;
23  
24  import org.apache.log4j.AppenderSkeleton;
25  import org.apache.log4j.BasicConfigurator;
26  import org.apache.log4j.Level;
27  import org.apache.log4j.Logger;
28  import org.apache.log4j.PropertyConfigurator;
29  import org.apache.log4j.spi.LoggingEvent;
30  import org.junit.After;
31  import org.junit.Assert;
32  import org.junit.Before;
33  import org.junit.Test;
34  
35  public class SoapEnvelopeLoggingInterceptorTest {
36  
37      private SoapEnvelopeLoggingInterceptor interceptor;
38  
39      private CountingAppender appender;
40  
41      private MessageContext messageContext;
42  
43      @Before
44      public void setUp() throws Exception {
45          interceptor = new SoapEnvelopeLoggingInterceptor();
46          appender = new SoapEnvelopeLoggingInterceptorTest.CountingAppender();
47          BasicConfigurator.configure(appender);
48          Logger.getRootLogger().setLevel(Level.DEBUG);
49          SaajSoapMessageFactory factory = new SaajSoapMessageFactory();
50          factory.afterPropertiesSet();
51          messageContext = new DefaultMessageContext(factory);
52          appender.reset();
53      }
54  
55      @After
56      public void tearDown() throws Exception {
57          BasicConfigurator.resetConfiguration();
58          ClassPathResource resource = new ClassPathResource("log4j.properties");
59          PropertyConfigurator.configure(resource.getURL());
60      }
61  
62      @Test
63      public void testHandleRequestDisabled() throws Exception {
64          interceptor.setLogRequest(false);
65          int eventCount = appender.getCount();
66          interceptor.handleRequest(messageContext, null);
67          Assert.assertEquals("interceptor logged when disabled", appender.getCount(), eventCount);
68      }
69  
70      @Test
71      public void testHandleRequestEnabled() throws Exception {
72          int eventCount = appender.getCount();
73          interceptor.handleRequest(messageContext, null);
74          Assert.assertTrue("interceptor did not log", appender.getCount() > eventCount);
75      }
76  
77      @Test
78      public void testHandleResponseDisabled() throws Exception {
79          messageContext.getResponse();
80          interceptor.setLogResponse(false);
81          int eventCount = appender.getCount();
82          interceptor.handleResponse(messageContext, null);
83          Assert.assertEquals("interceptor logged when disabled", appender.getCount(), eventCount);
84      }
85  
86      @Test
87      public void testHandleResponseEnabled() throws Exception {
88          messageContext.getResponse();
89          int eventCount = appender.getCount();
90          interceptor.handleResponse(messageContext, null);
91          Assert.assertTrue("interceptor did not log", appender.getCount() > eventCount);
92      }
93  
94      @Test
95      public void testHandleFaultDisabled() throws Exception {
96          messageContext.getResponse();
97          interceptor.setLogFault(false);
98          int eventCount = appender.getCount();
99          interceptor.handleFault(messageContext, null);
100         Assert.assertEquals("interceptor logged when disabled", appender.getCount(), eventCount);
101     }
102 
103     @Test
104     public void testHandleFaultEnabled() throws Exception {
105         messageContext.getResponse();
106         int eventCount = appender.getCount();
107         interceptor.handleResponse(messageContext, null);
108         Assert.assertTrue("interceptor did not log", appender.getCount() > eventCount);
109     }
110 
111     private static class CountingAppender extends AppenderSkeleton {
112 
113         private int count;
114 
115         public int getCount() {
116             return count;
117         }
118 
119         public void reset() {
120             count = 0;
121         }
122 
123         @Override
124         protected void append(LoggingEvent loggingEvent) {
125             count++;
126         }
127 
128         public boolean requiresLayout() {
129             return false;
130         }
131 
132         public void close() {
133         }
134     }
135 }