57911a368f9b4e4920937fc799988f942fd08ae1
[sdc.git] /
1 /*
2  * Copyright © 2016-2017 European Support Limited
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.openecomp.sdc.logging.servlet;
18
19 import org.slf4j.MDC;
20 import org.testng.Assert;
21 import org.testng.annotations.Test;
22
23 import javax.servlet.*;
24 import java.io.BufferedReader;
25 import java.io.IOException;
26 import java.io.PrintWriter;
27 import java.io.UnsupportedEncodingException;
28 import java.net.InetAddress;
29 import java.util.Enumeration;
30 import java.util.Locale;
31 import java.util.Map;
32 import java.util.UUID;
33 import java.util.concurrent.atomic.AtomicInteger;
34
35 import static org.testng.Assert.assertEquals;
36 import static org.testng.Assert.assertNull;
37
38 /**
39  * TODO: Add more tests
40  *
41  * @author EVITALIY
42  * @since 17/08/2016.
43  */
44 public class LoggingFilterTest {
45
46   private static final String REMOTE_HOST = UUID.randomUUID().toString();
47
48   @Test
49   public void testDoFilter() throws Exception {
50     LoggingFilter loggingFilter = new LoggingFilter();
51     ServletRequest mockRequest = new TestServletRequest();
52     ServletResponse mockResponse = new TestServletResponse();
53     TestFilterChain mockChain = new TestFilterChain();
54     loggingFilter.doFilter(mockRequest, mockResponse, mockChain);
55     assertEquals(1, mockChain.getCount());
56     assertNull(MDC.getCopyOfContextMap());
57   }
58
59   private static class TestServletRequest implements ServletRequest {
60
61     @Override
62     public Object getAttribute(String s) {
63       return null;
64     }
65
66     @Override
67     public Enumeration getAttributeNames() {
68       return null;
69     }
70
71     @Override
72     public String getCharacterEncoding() {
73       return null;
74     }
75
76     @Override
77     public void setCharacterEncoding(String s) throws UnsupportedEncodingException {
78
79     }
80
81     @Override
82     public int getContentLength() {
83       return 0;
84     }
85
86     @Override
87     public String getContentType() {
88       return null;
89     }
90
91     @Override
92     public ServletInputStream getInputStream() throws IOException {
93       return null;
94     }
95
96     @Override
97     public String getParameter(String s) {
98       return null;
99     }
100
101     @Override
102     public Enumeration getParameterNames() {
103       return null;
104     }
105
106     @Override
107     public String[] getParameterValues(String s) {
108       return new String[0];
109     }
110
111     @Override
112     public Map getParameterMap() {
113       return null;
114     }
115
116     @Override
117     public String getProtocol() {
118       return null;
119     }
120
121     @Override
122     public String getScheme() {
123       return null;
124     }
125
126     @Override
127     public String getServerName() {
128       return null;
129     }
130
131     @Override
132     public int getServerPort() {
133       return 0;
134     }
135
136     @Override
137     public BufferedReader getReader() throws IOException {
138       return null;
139     }
140
141     @Override
142     public String getRemoteAddr() {
143       return null;
144     }
145
146     @Override
147     public String getRemoteHost() {
148       return REMOTE_HOST;
149     }
150
151     @Override
152     public void setAttribute(String s, Object o) {
153
154     }
155
156     @Override
157     public void removeAttribute(String s) {
158
159     }
160
161     @Override
162     public Locale getLocale() {
163       return null;
164     }
165
166     @Override
167     public Enumeration getLocales() {
168       return null;
169     }
170
171     @Override
172     public boolean isSecure() {
173       return false;
174     }
175
176     @Override
177     public RequestDispatcher getRequestDispatcher(String s) {
178       return null;
179     }
180
181     @Override
182     public String getRealPath(String s) {
183       return null;
184     }
185
186     @Override
187     public int getRemotePort() {
188       return 0;
189     }
190
191     @Override
192     public String getLocalName() {
193       return null;
194     }
195
196     @Override
197     public String getLocalAddr() {
198       return null;
199     }
200
201     @Override
202     public int getLocalPort() {
203       return 0;
204     }
205   }
206
207   private static class TestFilterChain implements FilterChain {
208
209     private AtomicInteger count = new AtomicInteger(0);
210
211     @Override
212     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse)
213         throws IOException, ServletException {
214
215       Assert.assertNotNull(MDC.get("RequestId"));
216       Assert.assertEquals(MDC.get("ServiceInstanceId"), "N/A");
217       Assert.assertEquals(MDC.get("ServiceName"), "ASDC");
218       Assert.assertEquals(MDC.get("InstanceUUID"), "N/A");
219       Assert.assertEquals(MDC.get("RemoteHost"), REMOTE_HOST);
220
221       InetAddress host = InetAddress.getLocalHost();
222       Assert.assertEquals(MDC.get("ServerIPAddress"), host.getHostAddress());
223       Assert.assertEquals(MDC.get("ServerFQDN"), host.getHostName());
224
225       count.incrementAndGet();
226     }
227
228     public int getCount() {
229       return count.get();
230     }
231   }
232
233   private static class TestServletResponse implements ServletResponse {
234
235     @Override
236     public String getCharacterEncoding() {
237       return null;
238     }
239
240     @Override
241     public void setCharacterEncoding(String s) {
242
243     }
244
245     @Override
246     public String getContentType() {
247       return null;
248     }
249
250     @Override
251     public void setContentType(String s) {
252
253     }
254
255     @Override
256     public ServletOutputStream getOutputStream() throws IOException {
257       return null;
258     }
259
260     @Override
261     public PrintWriter getWriter() throws IOException {
262       return null;
263     }
264
265     @Override
266     public void setContentLength(int i) {
267
268     }
269
270     @Override
271     public int getBufferSize() {
272       return 0;
273     }
274
275     @Override
276     public void setBufferSize(int i) {
277
278     }
279
280     @Override
281     public void flushBuffer() throws IOException {
282
283     }
284
285     @Override
286     public void resetBuffer() {
287
288     }
289
290     @Override
291     public boolean isCommitted() {
292       return false;
293     }
294
295     @Override
296     public void reset() {
297
298     }
299
300     @Override
301     public Locale getLocale() {
302       return null;
303     }
304
305     @Override
306     public void setLocale(Locale locale) {
307
308     }
309   }
310 }