This is an automated email from the ASF dual-hosted git repository.

healchow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new b73b15eff [INLONG-4709][Manager] Add AnnoController unit test (#4722)
b73b15eff is described below

commit b73b15efff3e8428c57dcba28df4c304ca1fa03b
Author: leosanqing <[email protected]>
AuthorDate: Tue Jun 21 17:10:05 2022 +0800

    [INLONG-4709][Manager] Add AnnoController unit test (#4722)
---
 .../inlong/manager/common/pojo/user/UserInfo.java  |  10 ++
 .../transform/StreamTransformServiceTest.java      |   3 -
 .../service/workflow/WorkflowServiceImplTest.java  |   3 -
 .../resources/application-unit-test.properties     |   3 +-
 .../src/main/resources/h2/data.sql}                |  14 +--
 .../org/apache/inlong/manager/web/WebBaseTest.java |  89 +++++++++++++++
 .../manager/web/controller/AnnoControllerTest.java | 121 +++++++++++++++++++++
 .../web/controller/openapi/SortControllerTest.java |  58 +++++-----
 8 files changed, 255 insertions(+), 46 deletions(-)

diff --git 
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/user/UserInfo.java
 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/user/UserInfo.java
index 18c9b8b29..10b6eacbb 100644
--- 
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/user/UserInfo.java
+++ 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/pojo/user/UserInfo.java
@@ -19,7 +19,10 @@ package org.apache.inlong.manager.common.pojo.user;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 import org.apache.inlong.manager.common.enums.UserTypeEnum;
 import org.apache.inlong.manager.common.util.Preconditions;
 
@@ -27,11 +30,18 @@ import org.apache.inlong.manager.common.util.Preconditions;
  * User info, including username, password, etc.
  */
 @Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
 @ApiModel("User info")
 public class UserInfo {
 
     private Integer id;
 
+    /**
+     * user type
+     * {@link UserTypeEnum}
+     */
     @ApiModelProperty("type: 0 - manager, 1 - operator")
     private Integer type;
 
diff --git 
a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/transform/StreamTransformServiceTest.java
 
b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/transform/StreamTransformServiceTest.java
index a24920a5b..adf467981 100644
--- 
a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/transform/StreamTransformServiceTest.java
+++ 
b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/transform/StreamTransformServiceTest.java
@@ -27,8 +27,6 @@ import org.apache.inlong.manager.service.ServiceBaseTest;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import springfox.boot.starter.autoconfigure.OpenApiAutoConfiguration;
 
 import java.util.Date;
 import java.util.List;
@@ -36,7 +34,6 @@ import java.util.List;
 /**
  * Test class for save stream transform.
  */
-@EnableAutoConfiguration(exclude = OpenApiAutoConfiguration.class)
 public class StreamTransformServiceTest extends ServiceBaseTest {
 
     public static final String TRANSFORM_NAME = "test_transform";
diff --git 
a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImplTest.java
 
b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImplTest.java
index cce93a2a4..1dacb4c1e 100644
--- 
a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImplTest.java
+++ 
b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/workflow/WorkflowServiceImplTest.java
@@ -61,8 +61,6 @@ import 
org.apache.inlong.manager.workflow.util.WorkflowBeanUtils;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import springfox.boot.starter.autoconfigure.OpenApiAutoConfiguration;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -76,7 +74,6 @@ import static org.mockito.Mockito.when;
 /**
  * Test class for workflow service.
  */
-@EnableAutoConfiguration(exclude = OpenApiAutoConfiguration.class)
 public class WorkflowServiceImplTest extends ServiceBaseTest {
 
     public static final String OPERATOR = "admin";
diff --git 
a/inlong-manager/manager-test/src/main/resources/application-unit-test.properties
 
b/inlong-manager/manager-test/src/main/resources/application-unit-test.properties
index 650a6dc36..679a0176b 100644
--- 
a/inlong-manager/manager-test/src/main/resources/application-unit-test.properties
+++ 
b/inlong-manager/manager-test/src/main/resources/application-unit-test.properties
@@ -21,12 +21,13 @@
 logging.level.root=INFO
 logging.level.org.apache.inlong.manager=debug
 
-spring.datasource.druid.url=jdbc:h2:mem:test;MODE=MYSQL;DB_CLOSE_DELAY=-1;IGNORECASE=TRUE;
+spring.datasource.druid.url=jdbc:h2:mem:test;MODE=MYSQL;DB_CLOSE_DELAY=-1;IGNORECASE=TRUE;NON_KEYWORDS=USER
 spring.datasource.druid.username=root
 spring.datasource.druid.password=""
 
 spring.datasource.druid.driver-class-name=org.h2.Driver
 spring.sql.init.schema-locations=classpath:h2/apache_inlong_manager.sql
+spring.sql.init.data-locations=classpath:h2/data.sql
 
 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
 spring.datasource.druid.validationQuery=SELECT 'x'
diff --git 
a/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/WebBaseTest.java
 b/inlong-manager/manager-test/src/main/resources/h2/data.sql
similarity index 71%
copy from 
inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/WebBaseTest.java
copy to inlong-manager/manager-test/src/main/resources/h2/data.sql
index 72a0be0c6..1ab768789 100644
--- 
a/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/WebBaseTest.java
+++ b/inlong-manager/manager-test/src/main/resources/h2/data.sql
@@ -14,13 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-package org.apache.inlong.manager.web;
-
-import org.apache.inlong.manager.test.BaseTest;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest(classes = InLongWebApplication.class)
-public abstract class WebBaseTest extends BaseTest {
-
-}
+INSERT INTO `user` (`id`, `name`, `password`, `account_type`, `due_date`, 
`create_time`,
+                    `update_time`, `create_by`, `update_by`)
+VALUES (1, 'admin', '628ed559bff5ae36bd2184d4216973cf', 0, '2099-12-31 
23:59:59', '2022-06-05 08:58:06',
+        '2022-06-05 08:58:06', 'inlong_init', 'inlong_init');
\ No newline at end of file
diff --git 
a/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/WebBaseTest.java
 
b/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/WebBaseTest.java
index 72a0be0c6..9b87dcb18 100644
--- 
a/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/WebBaseTest.java
+++ 
b/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/WebBaseTest.java
@@ -17,10 +17,99 @@
 
 package org.apache.inlong.manager.web;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.inlong.manager.common.beans.Response;
 import org.apache.inlong.manager.test.BaseTest;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.mgt.SecurityManager;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.TestInstance.Lifecycle;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.context.WebApplicationContext;
 
+import javax.annotation.Resource;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static 
org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+
+@TestInstance(Lifecycle.PER_CLASS)
 @SpringBootTest(classes = InLongWebApplication.class)
 public abstract class WebBaseTest extends BaseTest {
 
+    public MockMvc mockMvc;
+
+    @Resource
+    private WebApplicationContext context;
+    @Resource
+    ObjectMapper objectMapper;
+
+    @BeforeAll
+    void setup() {
+        
SecurityUtils.setSecurityManager(context.getBean(SecurityManager.class));
+
+        mockMvc = MockMvcBuilders
+                .webAppContextSetup(context)
+                .alwaysDo(print())
+                .build();
+    }
+
+    public <T> Response<T> getResBody(MvcResult mvcResult, Class<T> t) throws 
Exception {
+        return objectMapper
+                .readValue(
+                        
mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8),
+                        
objectMapper.getTypeFactory().constructParametricType(Response.class, t)
+                );
+    }
+
+    public <T> T getResBodyObj(MvcResult mvcResult, Class<T> t) throws 
Exception {
+        Response<T> resBody = getResBody(mvcResult, t);
+        Assertions.assertTrue(resBody.isSuccess());
+        return resBody.getData();
+    }
+
+    public <T> List<T> getResBodyList(MvcResult mvcResult, Class<T> t) throws 
Exception {
+        JsonNode jsonNode = 
objectMapper.readTree(mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8));
+        return objectMapper
+                .readValue(
+                        jsonNode.get("data").toString(),
+                        
objectMapper.getTypeFactory().constructParametricType(List.class, t)
+                );
+    }
+
+    public <T, R> Map<T, R> getResBodyMap(MvcResult mvcResult, Class<T> 
keyType, Class<R> valueType) throws Exception {
+        JsonNode jsonNode = 
objectMapper.readTree(mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8));
+        return objectMapper
+                .readValue(
+                        jsonNode.get("data").toString(),
+                        
this.objectMapper.getTypeFactory().constructParametricType(HashMap.class, 
keyType, valueType)
+                );
+    }
+
+    public <T, R> Map<T, R> getResBodyListMap(MvcResult mvcResult, Class<T> 
keyType, Class<R> valueType)
+            throws Exception {
+        JsonNode jsonNode = 
objectMapper.readTree(mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8));
+        return objectMapper
+                .readValue(
+                        jsonNode.get("data").toString(),
+                        
this.objectMapper.getTypeFactory().constructParametricType(HashMap.class, 
keyType, valueType)
+                );
+    }
+
+    public <T> List<T> getResBodyPageList(MvcResult mvcResult, Class<T> t) 
throws Exception {
+        JsonNode jsonNode = 
objectMapper.readTree(mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8));
+        return objectMapper
+                .readValue(
+                        jsonNode.get("data").get("records").toString(),
+                        
objectMapper.getTypeFactory().constructParametricType(List.class, t)
+                );
+    }
 }
diff --git 
a/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/AnnoControllerTest.java
 
b/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/AnnoControllerTest.java
new file mode 100644
index 000000000..32b996033
--- /dev/null
+++ 
b/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/AnnoControllerTest.java
@@ -0,0 +1,121 @@
+/*
+ * 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.inlong.manager.web.controller;
+
+import org.apache.inlong.manager.common.beans.Response;
+import org.apache.inlong.manager.common.enums.UserTypeEnum;
+import org.apache.inlong.manager.common.pojo.user.LoginUser;
+import org.apache.inlong.manager.common.pojo.user.UserInfo;
+import org.apache.inlong.manager.common.util.JsonUtils;
+import org.apache.inlong.manager.web.WebBaseTest;
+import org.apache.shiro.SecurityUtils;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MvcResult;
+
+import static 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+class AnnoControllerTest extends WebBaseTest {
+
+    @Test
+    void testLogin() throws Exception {
+        LoginUser loginUser = new LoginUser();
+        loginUser.setUsername("admin");
+        loginUser.setPassword("inlong");
+
+        MvcResult mvcResult = mockMvc.perform(
+                        post("/anno/login")
+                                .content(JsonUtils.toJsonString(loginUser))
+                                .contentType(MediaType.APPLICATION_JSON_UTF8)
+                                .accept(MediaType.APPLICATION_JSON)
+                )
+                .andExpect(status().isOk())
+                .andReturn();
+
+        String resBodyObj = getResBodyObj(mvcResult, String.class);
+        Assertions.assertNotNull(resBodyObj);
+
+        Assertions.assertTrue(SecurityUtils.getSubject().isAuthenticated());
+    }
+
+    @Test
+    void testRegister() throws Exception {
+        UserInfo userInfo = UserInfo.builder()
+                .username("test_name")
+                .password("test!!!!2343434")
+                .type(UserTypeEnum.Admin.getCode())
+                .validDays(88888)
+                .build();
+
+        MvcResult mvcResult = mockMvc.perform(
+                        post("/anno/doRegister")
+                                .content(JsonUtils.toJsonString(userInfo))
+                                .contentType(MediaType.APPLICATION_JSON_UTF8)
+                                .accept(MediaType.APPLICATION_JSON)
+                )
+                .andExpect(status().isOk())
+                .andReturn();
+
+        Response<Boolean> resBody = getResBody(mvcResult, Boolean.class);
+        Assertions.assertTrue(resBody.isSuccess() && resBody.getData());
+    }
+
+    @Test
+    void testRegisterFailByExistName() throws Exception {
+        UserInfo userInfo = UserInfo.builder()
+                .username("admin")
+                .password("test!!!!2343434")
+                .type(UserTypeEnum.Admin.getCode())
+                .validDays(88888)
+                .build();
+
+        MvcResult mvcResult = mockMvc.perform(
+                        post("/anno/doRegister")
+                                .content(JsonUtils.toJsonString(userInfo))
+                                .contentType(MediaType.APPLICATION_JSON_UTF8)
+                                .accept(MediaType.APPLICATION_JSON)
+                )
+                .andExpect(status().isOk())
+                .andReturn();
+
+        Response<Boolean> resBody = getResBody(mvcResult, Boolean.class);
+        Assertions.assertFalse(resBody.isSuccess());
+        Assertions.assertEquals("User [admin] already exists", 
resBody.getErrMsg());
+    }
+
+    @Test
+    void testLogout() throws Exception {
+        testLogin();
+
+        MvcResult mvcResult = mockMvc.perform(
+                        get("/anno/logout")
+                                .contentType(MediaType.APPLICATION_JSON_UTF8)
+                                .accept(MediaType.APPLICATION_JSON)
+                )
+                .andExpect(status().isOk())
+                .andReturn();
+
+        Response<String> resBody = getResBody(mvcResult, String.class);
+        Assertions.assertTrue(resBody.isSuccess());
+        Assertions.assertFalse(SecurityUtils.getSubject().isAuthenticated());
+    }
+
+}
diff --git 
a/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/openapi/SortControllerTest.java
 
b/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/openapi/SortControllerTest.java
index f68a99b98..305289377 100644
--- 
a/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/openapi/SortControllerTest.java
+++ 
b/inlong-manager/manager-web/src/test/java/org/apache/inlong/manager/web/controller/openapi/SortControllerTest.java
@@ -17,6 +17,9 @@
 
 package org.apache.inlong.manager.web.controller.openapi;
 
+import lombok.extern.slf4j.Slf4j;
+import org.apache.inlong.common.pojo.sortstandalone.SortClusterResponse;
+import org.apache.inlong.manager.common.util.JsonUtils;
 import org.apache.inlong.manager.dao.entity.SortClusterConfigEntity;
 import org.apache.inlong.manager.dao.entity.SortTaskIdParamEntity;
 import org.apache.inlong.manager.dao.entity.SortTaskSinkParamEntity;
@@ -24,14 +27,15 @@ import 
org.apache.inlong.manager.dao.mapper.SortClusterConfgiEntityMapper;
 import org.apache.inlong.manager.dao.mapper.SortTaskIdParamEntityMapper;
 import org.apache.inlong.manager.dao.mapper.SortTaskSinkParamEntityMapper;
 import org.apache.inlong.manager.web.WebBaseTest;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.TestInstance.Lifecycle;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
 import org.springframework.test.web.servlet.RequestBuilder;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
+import org.springframework.transaction.annotation.Transactional;
 
 import static 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 import static 
org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
@@ -40,14 +44,9 @@ import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 /**
  * Test class for sort controller.
  */
-public class SortControllerTest extends WebBaseTest {
-
-    private static final Logger logger = 
LoggerFactory.getLogger(SortControllerTest.class);
-
-    private MockMvc mockMvc;
-
-    @Autowired
-    private WebApplicationContext webApplicationContext;
+@Slf4j
+@TestInstance(Lifecycle.PER_CLASS)
+class SortControllerTest extends WebBaseTest {
 
     // todo Service do not support insert method now, use mappers to insert 
data.
     @Autowired
@@ -59,9 +58,8 @@ public class SortControllerTest extends WebBaseTest {
     @Autowired
     private SortClusterConfgiEntityMapper sortClusterConfgiEntityMapper;
 
-    // @Before
-    public void setUp() {
-        mockMvc = 
MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
+    @BeforeAll
+    void setUp() {
         taskIdParamEntityMapper.insert(this.prepareIdParamsEntity("testTask1", 
1));
         taskIdParamEntityMapper.insert(this.prepareIdParamsEntity("testTask1", 
2));
         taskIdParamEntityMapper.insert(this.prepareIdParamsEntity("testTask2", 
1));
@@ -78,14 +76,21 @@ public class SortControllerTest extends WebBaseTest {
      *
      * @throws Exception Exceptions to request generating.
      */
-    // @Test
-    // @Transactional
-    public void testGetSortClusterConfig() throws Exception {
-        RequestBuilder request =
-                get("/openapi/sort/getClusterConfig")
-                        .param("clusterName", "testCluster")
-                        .param("md5", "testMd5");
-        mockMvc.perform(request).andExpect(status().isOk()).andDo(print());
+    @Test
+    @Transactional
+    void testGetSortClusterConfig() throws Exception {
+        MvcResult mvcResult = mockMvc.perform(
+                        get("/openapi/sort/getClusterConfig")
+                                .param("clusterName", "testCluster")
+                                .param("md5", "testMd5")
+                )
+                .andExpect(status().isOk())
+                .andReturn();
+
+        SortClusterResponse sortClusterResponse = 
JsonUtils.parseObject(mvcResult.getResponse().getContentAsString(),
+                SortClusterResponse.class);
+        Assertions.assertNotNull(sortClusterResponse);
+        Assertions.assertEquals("testCluster", 
sortClusterResponse.getData().getClusterName());
     }
 
     // @Test
@@ -137,9 +142,4 @@ public class SortControllerTest extends WebBaseTest {
                 .build();
     }
 
-    @Test
-    public void defaultTest() {
-        logger.info("Online exception druid connection timeout cannot create 
transaction, "
-                + "add default test method.");
-    }
 }

Reply via email to