9f36fe11e1f6942291d5851ba9abfaafce18bbbf
[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.ServletException;
22 import javax.servlet.ServletInputStream;
23 import javax.servlet.ServletOutputStream;
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
26 import org.apache.commons.codec.binary.Base64;
27 import org.junit.After;
28 import org.junit.Before;
29 import org.junit.Test;
30
31 /**
32  * @author dt5972
33  *
34  */
35 public class TestRequestResponseLoggingFilter {
36
37     RequestResponseLoggingFilter filter;
38
39     private class DummyServletInputStream extends ServletInputStream {
40
41         InputStream stream;
42
43         public DummyServletInputStream(InputStream stream) {
44             this.stream = stream;
45         }
46
47
48         @Override
49         public void close() throws IOException {
50             super.close();
51             stream.close();
52         }
53
54
55         @Override
56         public int read() throws IOException {
57             return stream.read();
58         }
59
60
61
62     }
63
64     private class DummyServletOutputStream extends ServletOutputStream {
65
66         OutputStream ostr;
67
68         public DummyServletOutputStream(OutputStream ostr) {
69             this.ostr = ostr;
70         }
71
72         @Override
73         public void write(int b) throws IOException {
74             ostr.write(b);
75         }
76
77     }
78
79     /**
80      * @throws java.lang.Exception
81      */
82     @Before
83     public void setUp() throws Exception {
84         filter = new RequestResponseLoggingFilter();
85         filter.init(null);
86     }
87
88     /**
89      * @throws java.lang.Exception
90      */
91     @After
92     public void tearDown() throws Exception {}
93
94     /**
95      * Test method for {@link org.onap.ccsdk.sli.core.filters.RequestResponseLoggingFilter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)}.
96      * @throws IOException
97      * @throws ServletException
98      */
99     @Test
100     public void testDoFilter() throws IOException, ServletException {
101
102         HttpServletRequest request = mock(HttpServletRequest.class);
103         String msgBody = "hello world";
104         InputStream reqInputStream = new ByteArrayInputStream(msgBody.getBytes());
105         when(request.getInputStream()).thenReturn(new DummyServletInputStream(reqInputStream));
106         when(request.getMethod()).thenReturn("POST");
107         when(request.getRequestURL()).thenReturn(new StringBuffer("/HELLO:world"));
108         when(request.getPathInfo()).thenReturn("/hello:world");
109         Vector<String> headerList = new Vector<>();
110         headerList.add(LogFilter.REQUEST_ID);
111         headerList.add("Authorization");
112         when(request.getHeaderNames()).thenReturn(headerList.elements());
113
114         when(request.getHeader(LogFilter.REQUEST_ID)).thenReturn(UUID.randomUUID().toString());
115         when(request.getHeader("Authorization")).thenReturn("Basic "+Base64.encodeBase64String("username:password".getBytes()));
116
117         HttpServletResponse response = mock(HttpServletResponse.class);
118         OutputStream outStr = new ByteArrayOutputStream();
119         when(response.getOutputStream()).thenReturn(new DummyServletOutputStream(outStr));
120
121         FilterChain filterChain = mock(FilterChain.class);
122
123         filter.doFilter(request, response, filterChain);
124
125
126
127     }
128
129 }