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