From e816aaeb04a25c54f0be7934aa04a246df11a054 Mon Sep 17 00:00:00 2001 From: Qiang Zhao Date: Mon, 28 Jun 2021 20:50:44 +0800 Subject: [PATCH 1/2] [Tests] Add new test --- .../broker/web/ProcessHandlerFilterTest.java | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 pulsar-broker/src/test/java/org/apache/pulsar/broker/web/ProcessHandlerFilterTest.java diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/ProcessHandlerFilterTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/ProcessHandlerFilterTest.java new file mode 100644 index 0000000000000..983eb7ac581d5 --- /dev/null +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/ProcessHandlerFilterTest.java @@ -0,0 +1,86 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.broker.web; + +import static org.mockito.Mockito.*; +import java.io.IOException; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.core.MediaType; +import org.apache.pulsar.broker.PulsarService; +import org.apache.pulsar.broker.ServiceConfiguration; +import org.apache.pulsar.broker.intercept.BrokerInterceptor; +import org.testng.annotations.Test; +import org.testng.collections.Sets; + +public class ProcessHandlerFilterTest { + + @Test + public void testInterceptorOnFilter() throws ServletException, IOException { + PulsarService mockPulsarService = mock(PulsarService.class); + BrokerInterceptor spyInterceptor = spy(BrokerInterceptor.class); + HttpServletRequest mockHttpServletRequest = mock(HttpServletRequest.class); + HttpServletResponse mockHttpServletResponse = mock(HttpServletResponse.class); + ServiceConfiguration mockConfig = mock(ServiceConfiguration.class); + FilterChain mockFilterChain = mock(FilterChain.class); + doReturn(spyInterceptor).when(mockPulsarService).getBrokerInterceptor(); + doReturn(mockConfig).when(mockPulsarService).getConfig(); + doReturn(Sets.newHashSet("Interceptor1", "Interceptor2")).when(mockConfig).getBrokerInterceptors(); + ProcessHandlerFilter processHandlerFilter = new ProcessHandlerFilter(mockPulsarService); + processHandlerFilter.doFilter(mockHttpServletRequest, mockHttpServletResponse, mockFilterChain); + verify(spyInterceptor).onFilter(mockHttpServletRequest, mockHttpServletResponse, mockFilterChain); + } + + @Test + public void testChainDoFilter() throws ServletException, IOException { + PulsarService mockPulsarService = mock(PulsarService.class); + BrokerInterceptor spyInterceptor = mock(BrokerInterceptor.class); + HttpServletResponse mockHttpServletResponse = mock(HttpServletResponse.class); + ServiceConfiguration mockConfig = mock(ServiceConfiguration.class); + FilterChain spyFilterChain = spy(FilterChain.class); + doReturn(spyInterceptor).when(mockPulsarService).getBrokerInterceptor(); + doReturn(mockConfig).when(mockPulsarService).getConfig(); + doReturn(Sets.newHashSet()).when(mockConfig).getBrokerInterceptors(); + // empty interceptor list + HttpServletRequest mockHttpServletRequest = mock(HttpServletRequest.class); + ProcessHandlerFilter processHandlerFilter = new ProcessHandlerFilter(mockPulsarService); + processHandlerFilter.doFilter(mockHttpServletRequest, mockHttpServletResponse, spyFilterChain); + verify(spyFilterChain).doFilter(mockHttpServletRequest, mockHttpServletResponse); + clearInvocations(spyFilterChain); + // request has MULTIPART_FORM_DATA content-type + doReturn(Sets.newHashSet("Interceptor1","Interceptor2")).when(mockConfig).getBrokerInterceptors(); + HttpServletRequest mockHttpServletRequest2 = mock(HttpServletRequest.class); + doReturn(MediaType.MULTIPART_FORM_DATA).when(mockHttpServletRequest2).getContentType(); + ProcessHandlerFilter processHandlerFilter2 = new ProcessHandlerFilter(mockPulsarService); + processHandlerFilter2.doFilter(mockHttpServletRequest2, mockHttpServletResponse, spyFilterChain); + verify(spyFilterChain).doFilter(mockHttpServletRequest2, mockHttpServletResponse); + clearInvocations(spyFilterChain); + // request has APPLICATION_OCTET_STREAM content-type + doReturn(Sets.newHashSet("Interceptor1","Interceptor2")).when(mockConfig).getBrokerInterceptors(); + HttpServletRequest mockHttpServletRequest3 = mock(HttpServletRequest.class); + doReturn(MediaType.APPLICATION_OCTET_STREAM).when(mockHttpServletRequest3).getContentType(); + ProcessHandlerFilter processHandlerFilter3 = new ProcessHandlerFilter(mockPulsarService); + processHandlerFilter3.doFilter(mockHttpServletRequest3, mockHttpServletResponse, spyFilterChain); + verify(spyFilterChain).doFilter(mockHttpServletRequest3, mockHttpServletResponse); + } + + +} \ No newline at end of file From 187ddaf39da29a646d3db50cfb0c7636cf8961eb Mon Sep 17 00:00:00 2001 From: Qiang Zhao Date: Wed, 30 Jun 2021 15:25:33 +0800 Subject: [PATCH 2/2] Refine some code --- .../broker/web/ProcessHandlerFilterTest.java | 63 +++++++++---------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/ProcessHandlerFilterTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/ProcessHandlerFilterTest.java index 983eb7ac581d5..6de49d9aa5664 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/ProcessHandlerFilterTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/ProcessHandlerFilterTest.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.broker.web; -import static org.mockito.Mockito.*; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; @@ -28,6 +27,7 @@ import org.apache.pulsar.broker.PulsarService; import org.apache.pulsar.broker.ServiceConfiguration; import org.apache.pulsar.broker.intercept.BrokerInterceptor; +import org.mockito.Mockito; import org.testng.annotations.Test; import org.testng.collections.Sets; @@ -35,51 +35,48 @@ public class ProcessHandlerFilterTest { @Test public void testInterceptorOnFilter() throws ServletException, IOException { - PulsarService mockPulsarService = mock(PulsarService.class); - BrokerInterceptor spyInterceptor = spy(BrokerInterceptor.class); - HttpServletRequest mockHttpServletRequest = mock(HttpServletRequest.class); - HttpServletResponse mockHttpServletResponse = mock(HttpServletResponse.class); - ServiceConfiguration mockConfig = mock(ServiceConfiguration.class); - FilterChain mockFilterChain = mock(FilterChain.class); - doReturn(spyInterceptor).when(mockPulsarService).getBrokerInterceptor(); - doReturn(mockConfig).when(mockPulsarService).getConfig(); - doReturn(Sets.newHashSet("Interceptor1", "Interceptor2")).when(mockConfig).getBrokerInterceptors(); + PulsarService mockPulsarService = Mockito.mock(PulsarService.class); + BrokerInterceptor spyInterceptor = Mockito.spy(BrokerInterceptor.class); + HttpServletRequest mockHttpServletRequest = Mockito.mock(HttpServletRequest.class); + HttpServletResponse mockHttpServletResponse = Mockito.mock(HttpServletResponse.class); + ServiceConfiguration mockConfig = Mockito.mock(ServiceConfiguration.class); + FilterChain mockFilterChain = Mockito.mock(FilterChain.class); + Mockito.doReturn(spyInterceptor).when(mockPulsarService).getBrokerInterceptor(); + Mockito.doReturn(mockConfig).when(mockPulsarService).getConfig(); + Mockito.doReturn(Sets.newHashSet("Interceptor1", "Interceptor2")).when(mockConfig).getBrokerInterceptors(); ProcessHandlerFilter processHandlerFilter = new ProcessHandlerFilter(mockPulsarService); processHandlerFilter.doFilter(mockHttpServletRequest, mockHttpServletResponse, mockFilterChain); - verify(spyInterceptor).onFilter(mockHttpServletRequest, mockHttpServletResponse, mockFilterChain); + Mockito.verify(spyInterceptor).onFilter(mockHttpServletRequest, mockHttpServletResponse, mockFilterChain); } @Test public void testChainDoFilter() throws ServletException, IOException { - PulsarService mockPulsarService = mock(PulsarService.class); - BrokerInterceptor spyInterceptor = mock(BrokerInterceptor.class); - HttpServletResponse mockHttpServletResponse = mock(HttpServletResponse.class); - ServiceConfiguration mockConfig = mock(ServiceConfiguration.class); - FilterChain spyFilterChain = spy(FilterChain.class); - doReturn(spyInterceptor).when(mockPulsarService).getBrokerInterceptor(); - doReturn(mockConfig).when(mockPulsarService).getConfig(); - doReturn(Sets.newHashSet()).when(mockConfig).getBrokerInterceptors(); + PulsarService mockPulsarService = Mockito.mock(PulsarService.class); + BrokerInterceptor spyInterceptor = Mockito.mock(BrokerInterceptor.class); + HttpServletResponse mockHttpServletResponse = Mockito.mock(HttpServletResponse.class); + ServiceConfiguration mockConfig = Mockito.mock(ServiceConfiguration.class); + FilterChain spyFilterChain = Mockito.spy(FilterChain.class); + Mockito.doReturn(spyInterceptor).when(mockPulsarService).getBrokerInterceptor(); + Mockito.doReturn(mockConfig).when(mockPulsarService).getConfig(); + Mockito.doReturn(Sets.newHashSet()).when(mockConfig).getBrokerInterceptors(); // empty interceptor list - HttpServletRequest mockHttpServletRequest = mock(HttpServletRequest.class); + HttpServletRequest mockHttpServletRequest = Mockito.mock(HttpServletRequest.class); ProcessHandlerFilter processHandlerFilter = new ProcessHandlerFilter(mockPulsarService); processHandlerFilter.doFilter(mockHttpServletRequest, mockHttpServletResponse, spyFilterChain); - verify(spyFilterChain).doFilter(mockHttpServletRequest, mockHttpServletResponse); - clearInvocations(spyFilterChain); + Mockito.verify(spyFilterChain).doFilter(mockHttpServletRequest, mockHttpServletResponse); + Mockito.clearInvocations(spyFilterChain); // request has MULTIPART_FORM_DATA content-type - doReturn(Sets.newHashSet("Interceptor1","Interceptor2")).when(mockConfig).getBrokerInterceptors(); - HttpServletRequest mockHttpServletRequest2 = mock(HttpServletRequest.class); - doReturn(MediaType.MULTIPART_FORM_DATA).when(mockHttpServletRequest2).getContentType(); + Mockito.doReturn(Sets.newHashSet("Interceptor1","Interceptor2")).when(mockConfig).getBrokerInterceptors(); + HttpServletRequest mockHttpServletRequest2 = Mockito.mock(HttpServletRequest.class); + Mockito.doReturn(MediaType.MULTIPART_FORM_DATA).when(mockHttpServletRequest2).getContentType(); ProcessHandlerFilter processHandlerFilter2 = new ProcessHandlerFilter(mockPulsarService); processHandlerFilter2.doFilter(mockHttpServletRequest2, mockHttpServletResponse, spyFilterChain); - verify(spyFilterChain).doFilter(mockHttpServletRequest2, mockHttpServletResponse); - clearInvocations(spyFilterChain); + Mockito.verify(spyFilterChain).doFilter(mockHttpServletRequest2, mockHttpServletResponse); + Mockito.clearInvocations(spyFilterChain); // request has APPLICATION_OCTET_STREAM content-type - doReturn(Sets.newHashSet("Interceptor1","Interceptor2")).when(mockConfig).getBrokerInterceptors(); - HttpServletRequest mockHttpServletRequest3 = mock(HttpServletRequest.class); - doReturn(MediaType.APPLICATION_OCTET_STREAM).when(mockHttpServletRequest3).getContentType(); - ProcessHandlerFilter processHandlerFilter3 = new ProcessHandlerFilter(mockPulsarService); - processHandlerFilter3.doFilter(mockHttpServletRequest3, mockHttpServletResponse, spyFilterChain); - verify(spyFilterChain).doFilter(mockHttpServletRequest3, mockHttpServletResponse); + Mockito.doReturn(MediaType.APPLICATION_OCTET_STREAM).when(mockHttpServletRequest2).getContentType(); + processHandlerFilter2.doFilter(mockHttpServletRequest2, mockHttpServletResponse, spyFilterChain); + Mockito.verify(spyFilterChain).doFilter(mockHttpServletRequest2, mockHttpServletResponse); }