7ce856e6834e7ce26243f488dc3763d0ebf55820
[ccsdk/sli.git] /
1 /**
2  *
3  */
4 package org.onap.ccsdk.sli.core.filters;
5
6 import static org.junit.Assert.*;
7 import static org.mockito.Mockito.*;
8 import java.io.BufferedInputStream;
9 import java.io.BufferedReader;
10 import java.io.ByteArrayInputStream;
11 import java.io.ByteArrayOutputStream;
12 import java.io.IOException;
13 import java.io.InputStream;
14 import java.io.OutputStream;
15 import java.io.StringBufferInputStream;
16 import java.io.StringReader;
17 import java.util.LinkedList;
18 import java.util.UUID;
19 import java.util.Vector;
20 import javax.servlet.FilterChain;
21 import javax.servlet.ReadListener;
22 import javax.servlet.ServletException;
23 import javax.servlet.ServletInputStream;
24 import javax.servlet.ServletOutputStream;
25 import javax.servlet.WriteListener;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28 import org.apache.commons.codec.binary.Base64;
29 import org.junit.After;
30 import org.junit.Before;
31 import org.junit.Test;
32
33 /**
34  * @author dt5972
35  *
36  */
37 public class TestRequestResponseLoggingFilter {
38
39     RequestResponseLoggingFilter filter;
40
41     private class DummyServletInputStream extends ServletInputStream {
42
43         InputStream stream;
44
45         public DummyServletInputStream(InputStream stream) {
46             this.stream = stream;
47         }
48
49
50         @Override
51         public void close() throws IOException {
52             super.close();
53             stream.close();
54         }
55
56
57         @Override
58         public int read() throws IOException {
59             return stream.read();
60         }
61
62
63                 @Override
64                 public boolean isFinished() {
65                         try {
66                                 return stream.available() < 1;
67                         } catch (IOException e) {
68                                 return true;
69                         }
70                 }
71
72
73                 @Override
74                 public boolean isReady() {
75                         // TODO Auto-generated method stub
76                         return true;
77                 }
78
79
80                 @Override
81                 public void setReadListener(ReadListener arg0) {
82                         // TODO Auto-generated method stub
83                         
84                 }
85
86
87
88     }
89
90     private class DummyServletOutputStream extends ServletOutputStream {
91
92         OutputStream ostr;
93
94         public DummyServletOutputStream(OutputStream ostr) {
95             this.ostr = ostr;
96         }
97
98         @Override
99         public void write(int b) throws IOException {
100             ostr.write(b);
101         }
102
103                 @Override
104                 public boolean isReady() {
105                         return true;
106                 }
107
108                 @Override
109                 public void setWriteListener(WriteListener arg0) {
110                         
111                 }
112
113     }
114
115     /**
116      * @throws java.lang.Exception
117      */
118     @Before
119     public void setUp() throws Exception {
120         filter = new RequestResponseLoggingFilter();
121         filter.init(null);
122     }
123
124     /**
125      * @throws java.lang.Exception
126      */
127     @After
128     public void tearDown() throws Exception {}
129
130     /**
131      * Test method for {@link org.onap.ccsdk.sli.core.filters.RequestResponseLoggingFilter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)}.
132      * @throws IOException
133      * @throws ServletException
134      */
135     @Test
136     public void testDoFilter() throws IOException, ServletException {
137
138         HttpServletRequest request = mock(HttpServletRequest.class);
139         String msgBody = "hello world";
140         InputStream reqInputStream = new ByteArrayInputStream(msgBody.getBytes());
141         when(request.getInputStream()).thenReturn(new DummyServletInputStream(reqInputStream));
142         when(request.getMethod()).thenReturn("POST");
143         when(request.getRequestURL()).thenReturn(new StringBuffer("/HELLO:world"));
144         when(request.getPathInfo()).thenReturn("/hello:world");
145         Vector<String> headerList = new Vector<>();
146         headerList.add(LogFilter.REQUEST_ID);
147         headerList.add("Authorization");
148         when(request.getHeaderNames()).thenReturn(headerList.elements());
149
150         when(request.getHeader(LogFilter.REQUEST_ID)).thenReturn(UUID.randomUUID().toString());
151         when(request.getHeader("Authorization")).thenReturn("Basic "+Base64.encodeBase64String("username:password".getBytes()));
152
153         HttpServletResponse response = mock(HttpServletResponse.class);
154         OutputStream outStr = new ByteArrayOutputStream();
155         when(response.getOutputStream()).thenReturn(new DummyServletOutputStream(outStr));
156
157         FilterChain filterChain = mock(FilterChain.class);
158
159         filter.doFilter(request, response, filterChain);
160
161
162
163     }
164
165 }