4 package org.onap.ccsdk.sli.core.filters;
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;
37 public class TestRequestResponseLoggingFilter {
39 RequestResponseLoggingFilter filter;
41 private class DummyServletInputStream extends ServletInputStream {
45 public DummyServletInputStream(InputStream stream) {
51 public void close() throws IOException {
58 public int read() throws IOException {
64 public boolean isFinished() {
66 return stream.available() < 1;
67 } catch (IOException e) {
74 public boolean isReady() {
75 // TODO Auto-generated method stub
81 public void setReadListener(ReadListener arg0) {
82 // TODO Auto-generated method stub
90 private class DummyServletOutputStream extends ServletOutputStream {
94 public DummyServletOutputStream(OutputStream ostr) {
99 public void write(int b) throws IOException {
104 public boolean isReady() {
109 public void setWriteListener(WriteListener arg0) {
116 * @throws java.lang.Exception
119 public void setUp() throws Exception {
120 filter = new RequestResponseLoggingFilter();
125 * @throws java.lang.Exception
128 public void tearDown() throws Exception {}
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
136 public void testDoFilter() throws IOException, ServletException {
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());
150 when(request.getHeader(LogFilter.REQUEST_ID)).thenReturn(UUID.randomUUID().toString());
151 when(request.getHeader("Authorization")).thenReturn("Basic "+Base64.encodeBase64String("username:password".getBytes()));
153 HttpServletResponse response = mock(HttpServletResponse.class);
154 OutputStream outStr = new ByteArrayOutputStream();
155 when(response.getOutputStream()).thenReturn(new DummyServletOutputStream(outStr));
157 FilterChain filterChain = mock(FilterChain.class);
159 filter.doFilter(request, response, filterChain);