From 6af9d2fd506e044240fa41b586b63da701ffacc9 Mon Sep 17 00:00:00 2001 From: KomachiSion Date: Thu, 21 Nov 2024 13:41:44 +0800 Subject: [PATCH] Fix Unit test. --- .../controller/v2/ConfigControllerV2Test.java | 88 ++++++++++++------- 1 file changed, 54 insertions(+), 34 deletions(-) diff --git a/config/src/test/java/com/alibaba/nacos/config/server/controller/v2/ConfigControllerV2Test.java b/config/src/test/java/com/alibaba/nacos/config/server/controller/v2/ConfigControllerV2Test.java index d53152f98c0..ea06e8fb539 100644 --- a/config/src/test/java/com/alibaba/nacos/config/server/controller/v2/ConfigControllerV2Test.java +++ b/config/src/test/java/com/alibaba/nacos/config/server/controller/v2/ConfigControllerV2Test.java @@ -29,6 +29,7 @@ import com.alibaba.nacos.config.server.service.ConfigOperationService; import com.alibaba.nacos.config.server.service.repository.ConfigInfoPersistService; import com.alibaba.nacos.core.auth.AuthFilter; +import com.alibaba.nacos.core.code.ControllerMethodsCache; import com.alibaba.nacos.persistence.model.Page; import com.alibaba.nacos.sys.env.EnvUtil; import com.fasterxml.jackson.databind.JsonNode; @@ -52,7 +53,9 @@ import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -91,6 +94,9 @@ class ConfigControllerV2Test { @Mock private AuthConfigs authConfigs; + @Mock + private ControllerMethodsCache controllerMethodsCache; + private ConfigControllerV2 configControllerV2; private MockMvc mockmvc; @@ -126,16 +132,17 @@ void testGetConfig() throws Exception { doAnswer(x -> { x.getArgument(1, HttpServletResponse.class).setStatus(200); - x.getArgument(1, HttpServletResponse.class).setContentType(com.alibaba.nacos.common.http.param.MediaType.APPLICATION_JSON); + x.getArgument(1, HttpServletResponse.class) + .setContentType(com.alibaba.nacos.common.http.param.MediaType.APPLICATION_JSON); x.getArgument(1, HttpServletResponse.class).getWriter().print(JacksonUtils.toJson(stringResult)); return null; - }).when(inner).doGetConfig(any(HttpServletRequest.class), any(HttpServletResponse.class), eq(TEST_DATA_ID), eq(TEST_GROUP), - eq(TEST_NAMESPACE_ID), eq(TEST_TAG), eq(null), anyString(), eq(true)); + }).when(inner).doGetConfig(any(HttpServletRequest.class), any(HttpServletResponse.class), eq(TEST_DATA_ID), + eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), eq(TEST_TAG), eq(null), anyString(), eq(true)); configControllerV2.getConfig(request, response, TEST_DATA_ID, TEST_GROUP, TEST_NAMESPACE_ID, TEST_TAG); - verify(inner).doGetConfig(eq(request), eq(response), eq(TEST_DATA_ID), eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), eq(TEST_TAG), - eq(null), anyString(), eq(true)); + verify(inner).doGetConfig(eq(request), eq(response), eq(TEST_DATA_ID), eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), + eq(TEST_TAG), eq(null), anyString(), eq(true)); JsonNode resNode = JacksonUtils.toObj(response.getContentAsString()); Integer errCode = JacksonUtils.toObj(resNode.get("code").toString(), Integer.class); String actContent = JacksonUtils.toObj(resNode.get("data").toString(), String.class); @@ -154,7 +161,8 @@ void testPublishConfig() throws Exception { configForm.setContent(TEST_CONTENT); MockHttpServletRequest request = new MockHttpServletRequest(); - when(configOperationService.publishConfig(any(ConfigForm.class), any(ConfigRequestInfo.class), anyString())).thenReturn(true); + when(configOperationService.publishConfig(any(ConfigForm.class), any(ConfigRequestInfo.class), + anyString())).thenReturn(true); Result booleanResult = configControllerV2.publishConfig(configForm, request); @@ -196,13 +204,13 @@ void testPublishConfigWhenNameSpaceIsPublic() throws Exception { configForm.setContent(TEST_CONTENT); MockHttpServletRequest request = new MockHttpServletRequest(); - when(configOperationService.publishConfig(any(ConfigForm.class), any(ConfigRequestInfo.class), anyString())).thenAnswer( - (Answer) invocation -> { - if (invocation.getArgument(0, ConfigForm.class).getNamespaceId().equals(TEST_NAMESPACE_ID)) { - return true; - } - return false; - }); + when(configOperationService.publishConfig(any(ConfigForm.class), any(ConfigRequestInfo.class), + anyString())).thenAnswer((Answer) invocation -> { + if (invocation.getArgument(0, ConfigForm.class).getNamespaceId().equals(TEST_NAMESPACE_ID)) { + return true; + } + return false; + }); Result booleanResult = configControllerV2.publishConfig(configForm, request); @@ -217,12 +225,13 @@ void testDeleteConfigWhenNameSpaceIsPublic() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); - when(configOperationService.deleteConfig(eq(TEST_DATA_ID), eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), eq(TEST_TAG), any(), - any())).thenReturn(true); - Result booleanResult = configControllerV2.deleteConfig(request, TEST_DATA_ID, TEST_GROUP, TEST_NAMESPACE_ID_PUBLIC, - TEST_TAG); + when(configOperationService.deleteConfig(eq(TEST_DATA_ID), eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), eq(TEST_TAG), + any(), any())).thenReturn(true); + Result booleanResult = configControllerV2.deleteConfig(request, TEST_DATA_ID, TEST_GROUP, + TEST_NAMESPACE_ID_PUBLIC, TEST_TAG); - verify(configOperationService).deleteConfig(eq(TEST_DATA_ID), eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), eq(TEST_TAG), any(), any()); + verify(configOperationService).deleteConfig(eq(TEST_DATA_ID), eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), + eq(TEST_TAG), any(), any()); assertEquals(ErrorCode.SUCCESS.getCode(), booleanResult.getCode()); assertTrue(booleanResult.getData()); @@ -233,12 +242,14 @@ void testDeleteConfig() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); - when(configOperationService.deleteConfig(eq(TEST_DATA_ID), eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), eq(TEST_TAG), any(), - any())).thenReturn(true); + when(configOperationService.deleteConfig(eq(TEST_DATA_ID), eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), eq(TEST_TAG), + any(), any())).thenReturn(true); - Result booleanResult = configControllerV2.deleteConfig(request, TEST_DATA_ID, TEST_GROUP, TEST_NAMESPACE_ID, TEST_TAG); + Result booleanResult = configControllerV2.deleteConfig(request, TEST_DATA_ID, TEST_GROUP, + TEST_NAMESPACE_ID, TEST_TAG); - verify(configOperationService).deleteConfig(eq(TEST_DATA_ID), eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), eq(TEST_TAG), any(), any()); + verify(configOperationService).deleteConfig(eq(TEST_DATA_ID), eq(TEST_GROUP), eq(TEST_NAMESPACE_ID), + eq(TEST_TAG), any(), any()); assertEquals(ErrorCode.SUCCESS.getCode(), booleanResult.getCode()); assertTrue(booleanResult.getData()); @@ -258,11 +269,14 @@ void testGetConfigByDetail() throws Exception { Map configAdvanceInfo = new HashMap<>(8); configAdvanceInfo.put("content", "server.port"); - when(configInfoPersistService.findConfigInfo4Page(1, 10, "test", "test", "", configAdvanceInfo)).thenReturn(page); + when(configInfoPersistService.findConfigInfo4Page(1, 10, "test", "test", "", configAdvanceInfo)).thenReturn( + page); - MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(Constants.CONFIG_CONTROLLER_V2_PATH + "/searchDetail") - .param("search", "accurate").param("dataId", "test").param("group", "test").param("appName", "").param("tenant", "") - .param("config_tags", "").param("pageNo", "1").param("pageSize", "10").param("config_detail", "server.port"); + MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get( + Constants.CONFIG_CONTROLLER_V2_PATH + "/searchDetail").param("search", "accurate") + .param("dataId", "test").param("group", "test").param("appName", "").param("tenant", "") + .param("config_tags", "").param("pageNo", "1").param("pageSize", "10") + .param("config_detail", "server.port"); MockHttpServletResponse response = mockmvc.perform(builder).andReturn().getResponse(); String actualValue = response.getContentAsString(); @@ -290,11 +304,13 @@ void testGetConfigFuzzyByDetail() throws Exception { Map configAdvanceInfo = new HashMap<>(8); configAdvanceInfo.put("content", "server.port"); - when(configInfoPersistService.findConfigInfoLike4Page(1, 10, "test", "test", "", configAdvanceInfo)).thenReturn(page); + when(configInfoPersistService.findConfigInfoLike4Page(1, 10, "test", "test", "", configAdvanceInfo)).thenReturn( + page); - MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(Constants.CONFIG_CONTROLLER_V2_PATH + "/searchDetail") - .param("search", "blur").param("dataId", "test").param("group", "test").param("appName", "").param("tenant", "") - .param("config_tags", "").param("pageNo", "1").param("pageSize", "10").param("config_detail", "server.port"); + MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get( + Constants.CONFIG_CONTROLLER_V2_PATH + "/searchDetail").param("search", "blur").param("dataId", "test") + .param("group", "test").param("appName", "").param("tenant", "").param("config_tags", "") + .param("pageNo", "1").param("pageSize", "10").param("config_detail", "server.port"); MockHttpServletResponse response = mockmvc.perform(builder).andReturn().getResponse(); String actualValue = response.getContentAsString(); @@ -311,10 +327,14 @@ void testGetConfigFuzzyByDetail() throws Exception { @Test void testGetConfigAuthFilter() throws Exception { when(authConfigs.isAuthEnabled()).thenReturn(true); - - MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(Constants.CONFIG_CONTROLLER_V2_PATH + "/searchDetail") - .param("search", "accurate").param("dataId", "test").param("group", "test").param("appName", "").param("tenant", "") - .param("config_tags", "").param("pageNo", "1").param("pageSize", "10").param("config_detail", "server.port"); + Method method = Arrays.stream(ConfigControllerV2.class.getMethods()) + .filter(m -> m.getName().equals("searchConfigByDetails")).findFirst().get(); + when(controllerMethodsCache.getMethod(any(HttpServletRequest.class))).thenReturn(method); + MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get( + Constants.CONFIG_CONTROLLER_V2_PATH + "/searchDetail").param("search", "accurate") + .param("dataId", "test").param("group", "test").param("appName", "").param("tenant", "") + .param("config_tags", "").param("pageNo", "1").param("pageSize", "10") + .param("config_detail", "server.port"); MockHttpServletResponse response = mockmvc.perform(builder).andReturn().getResponse(); assertEquals(HttpServletResponse.SC_FORBIDDEN, response.getStatus());