1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.rest;
20
21 import static org.junit.Assert.assertEquals;
22 import static org.junit.Assert.assertNotNull;
23 import static org.mockito.Mockito.mock;
24 import static org.mockito.Mockito.never;
25 import static org.mockito.Mockito.verify;
26 import static org.mockito.Mockito.when;
27
28 import java.io.IOException;
29
30 import javax.servlet.ServletOutputStream;
31 import javax.servlet.http.HttpServletResponse;
32
33 import org.apache.hadoop.hbase.rest.filter.GZIPResponseStream;
34 import org.apache.hadoop.hbase.rest.filter.GZIPResponseWrapper;
35 import org.apache.hadoop.hbase.testclassification.SmallTests;
36 import org.junit.Test;
37 import org.junit.experimental.categories.Category;
38
39 @Category(SmallTests.class)
40 public class TestGZIPResponseWrapper {
41
42 private final HttpServletResponse response = mock(HttpServletResponse.class);
43 private final GZIPResponseWrapper wrapper = new GZIPResponseWrapper(response);
44
45
46
47
48 @Test
49 public void testHeader() throws IOException {
50 wrapper.setStatus(200);
51 verify(response).setStatus(200);
52 wrapper.addHeader("header", "header value");
53 verify(response).addHeader("header", "header value");
54 wrapper.addHeader("content-length", "header value2");
55 verify(response, never()).addHeader("content-length", "header value");
56
57 wrapper.setIntHeader("header", 5);
58 verify(response).setIntHeader("header", 5);
59 wrapper.setIntHeader("content-length", 4);
60 verify(response, never()).setIntHeader("content-length", 4);
61
62 wrapper.setHeader("set-header", "new value");
63 verify(response).setHeader("set-header", "new value");
64 wrapper.setHeader("content-length", "content length value");
65 verify(response, never()).setHeader("content-length", "content length value");
66
67 wrapper.sendRedirect("location");
68 verify(response).sendRedirect("location");
69
70 wrapper.flushBuffer();
71 verify(response).flushBuffer();
72 }
73
74 @Test
75 public void testResetBuffer() throws IOException {
76 when(response.isCommitted()).thenReturn(false);
77 ServletOutputStream out = mock(ServletOutputStream.class);
78 when(response.getOutputStream()).thenReturn(out);
79
80 ServletOutputStream servletOutput = wrapper.getOutputStream();
81 assertEquals(GZIPResponseStream.class, servletOutput.getClass());
82 wrapper.resetBuffer();
83 verify(response).setHeader("Content-Encoding", null);
84
85 when(response.isCommitted()).thenReturn(true);
86 servletOutput = wrapper.getOutputStream();
87 assertEquals(out.getClass(), servletOutput.getClass());
88 assertNotNull(wrapper.getWriter());
89 }
90
91 @Test
92 public void testReset() throws IOException {
93 when(response.isCommitted()).thenReturn(false);
94 ServletOutputStream out = mock(ServletOutputStream.class);
95 when(response.getOutputStream()).thenReturn(out);
96
97 ServletOutputStream servletOutput = wrapper.getOutputStream();
98 verify(response).addHeader("Content-Encoding", "gzip");
99 assertEquals(GZIPResponseStream.class, servletOutput.getClass());
100 wrapper.reset();
101 verify(response).setHeader("Content-Encoding", null);
102
103 when(response.isCommitted()).thenReturn(true);
104 servletOutput = wrapper.getOutputStream();
105 assertEquals(out.getClass(), servletOutput.getClass());
106 }
107
108 @Test
109 public void testSendError() throws IOException {
110 wrapper.sendError(404);
111 verify(response).sendError(404);
112
113 wrapper.sendError(404, "error message");
114 verify(response).sendError(404, "error message");
115 }
116
117 }