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

nicholasjiang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/paimon-webui.git


The following commit(s) were added to refs/heads/main by this push:
     new fbf8963  [Improvement] Improve role management interface (#185)
fbf8963 is described below

commit fbf8963ceb8fe26a95bc02352a7e460213ae2077
Author: silenceland <[email protected]>
AuthorDate: Wed Apr 17 11:33:28 2024 +0800

    [Improvement] Improve role management interface (#185)
---
 .../web/server/controller/SysRoleController.java   |  44 ++--
 .../web/server/data/dto/RoleWithUserDTO.java       |  36 +++
 .../paimon/web/server/mapper/UserMapper.java       |  13 +-
 .../paimon/web/server/service/SysRoleService.java  |   4 +-
 .../paimon/web/server/service/UserService.java     |  11 +-
 .../server/service/impl/SysRoleServiceImpl.java    |   6 +-
 .../web/server/service/impl/UserServiceImpl.java   |  17 +-
 .../src/main/resources/mapper/UserMapper.xml       |  28 +--
 .../server/controller/SysRoleControllerTest.java   | 243 ++++++++++++++++++++-
 9 files changed, 335 insertions(+), 67 deletions(-)

diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/controller/SysRoleController.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/controller/SysRoleController.java
index 1404efc..10d2280 100644
--- 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/controller/SysRoleController.java
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/controller/SysRoleController.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.web.server.controller;
 
+import org.apache.paimon.web.server.data.dto.RoleWithUserDTO;
 import org.apache.paimon.web.server.data.model.SysRole;
 import org.apache.paimon.web.server.data.model.User;
-import org.apache.paimon.web.server.data.model.UserRole;
 import org.apache.paimon.web.server.data.result.PageR;
 import org.apache.paimon.web.server.data.result.R;
 import org.apache.paimon.web.server.data.result.enums.Status;
@@ -51,19 +51,20 @@ public class SysRoleController {
 
     @Autowired private UserService userService;
 
+    /** Obtain role views with pagination. */
     @SaCheckPermission("system:role:list")
     @GetMapping("/list")
-    public PageR<SysRole> list(SysRole role) {
+    public PageR<SysRole> listRoles(SysRole role) {
         IPage<SysRole> page = PageSupport.startPage();
-        List<SysRole> list = roleService.selectRoleList(page, role);
+        List<SysRole> list = roleService.listRoles(page, role);
         return 
PageR.<SysRole>builder().success(true).total(page.getTotal()).data(list).build();
     }
 
     /** Obtain detailed information based on role number. */
     @SaCheckPermission("system:role:query")
     @GetMapping(value = "/{roleId}")
-    public R<SysRole> getInfo(@PathVariable Integer roleId) {
-        return R.succeed(roleService.selectRoleById(roleId));
+    public R<SysRole> getRole(@PathVariable Integer roleId) {
+        return R.succeed(roleService.getRoleById(roleId));
     }
 
     /** Add new role. */
@@ -80,9 +81,9 @@ public class SysRoleController {
     }
 
     /** Update role info. */
-    @SaCheckPermission("system:role:edit")
+    @SaCheckPermission("system:role:update")
     @PutMapping
-    public R<Void> edit(@Validated @RequestBody SysRole role) {
+    public R<Void> update(@Validated @RequestBody SysRole role) {
         roleService.checkRoleAllowed(role);
         if (!roleService.checkRoleNameUnique(role)) {
             return R.failed(Status.ROLE_NAME_IS_EXIST, role.getRoleName());
@@ -98,7 +99,7 @@ public class SysRoleController {
     }
 
     /** Update role status. */
-    @SaCheckPermission("system:role:edit")
+    @SaCheckPermission("system:role:update")
     @PutMapping("/changeStatus")
     public R<Void> changeStatus(@RequestBody SysRole role) {
         roleService.checkRoleAllowed(role);
@@ -106,9 +107,9 @@ public class SysRoleController {
     }
 
     /** Delete role. */
-    @SaCheckPermission("system:role:remove")
+    @SaCheckPermission("system:role:delete")
     @DeleteMapping("/{roleIds}")
-    public R<Void> remove(@PathVariable Integer[] roleIds) {
+    public R<Void> delete(@PathVariable Integer[] roleIds) {
         return roleService.deleteRoleByIds(roleIds) > 0 ? R.succeed() : 
R.failed();
     }
 
@@ -122,37 +123,30 @@ public class SysRoleController {
     /** Query the list of assigned user roles. */
     @SaCheckPermission("system:role:list")
     @GetMapping("/authUser/allocatedList")
-    public PageR<User> allocatedList(User user) {
-        IPage<SysRole> page = PageSupport.startPage();
-        List<User> list = userService.selectAllocatedList(user);
+    public PageR<User> allocatedList(@RequestBody RoleWithUserDTO 
roleWithUserDTO) {
+        IPage<RoleWithUserDTO> page = PageSupport.startPage();
+        List<User> list = userService.selectAllocatedList(page, 
roleWithUserDTO);
         return 
PageR.<User>builder().success(true).total(page.getTotal()).data(list).build();
     }
 
     /** Query the list of unassigned user roles. */
     @SaCheckPermission("system:role:list")
     @GetMapping("/authUser/unallocatedList")
-    public PageR<User> unallocatedList(User user) {
-        IPage<SysRole> page = PageSupport.startPage();
-        List<User> list = userService.selectUnallocatedList(user);
+    public PageR<User> unallocatedList(@RequestBody RoleWithUserDTO 
roleWithUserDTO) {
+        IPage<RoleWithUserDTO> page = PageSupport.startPage();
+        List<User> list = userService.selectUnallocatedList(page, 
roleWithUserDTO);
         return 
PageR.<User>builder().success(true).total(page.getTotal()).data(list).build();
     }
 
-    /** Unauthorize User. */
-    @SaCheckPermission("system:role:edit")
-    @PutMapping("/authUser/cancel")
-    public R<Void> cancelAuthUser(@RequestBody UserRole userRole) {
-        return roleService.deleteAuthUser(userRole) > 0 ? R.succeed() : 
R.failed();
-    }
-
     /** Batch Unauthorize User. */
-    @SaCheckPermission("system:role:edit")
+    @SaCheckPermission("system:role:update")
     @PutMapping("/authUser/cancelAll")
     public R<Void> cancelAuthUserAll(Integer roleId, Integer[] userIds) {
         return roleService.deleteAuthUsers(roleId, userIds) > 0 ? R.succeed() 
: R.failed();
     }
 
     /** Batch Set User Authorization. */
-    @SaCheckPermission("system:role:edit")
+    @SaCheckPermission("system:role:update")
     @PutMapping("/authUser/selectAll")
     public R<Void> selectAuthUserAll(Integer roleId, Integer[] userIds) {
         return roleService.insertAuthUsers(roleId, userIds) > 0 ? R.succeed() 
: R.failed();
diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/dto/RoleWithUserDTO.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/dto/RoleWithUserDTO.java
new file mode 100644
index 0000000..79a248f
--- /dev/null
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/dto/RoleWithUserDTO.java
@@ -0,0 +1,36 @@
+/*
+ * 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.paimon.web.server.data.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/** DTO of role user relation. */
+@Data
+public class RoleWithUserDTO {
+
+    private Integer roleId;
+
+    private String username;
+
+    private String mobile;
+
+    private List<Integer> userIds;
+}
diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/mapper/UserMapper.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/mapper/UserMapper.java
index 7c7459d..3451c3f 100644
--- 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/mapper/UserMapper.java
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/mapper/UserMapper.java
@@ -18,6 +18,7 @@
 
 package org.apache.paimon.web.server.mapper;
 
+import org.apache.paimon.web.server.data.dto.RoleWithUserDTO;
 import org.apache.paimon.web.server.data.dto.UserWithRolesDTO;
 import org.apache.paimon.web.server.data.model.User;
 
@@ -43,18 +44,22 @@ public interface UserMapper extends BaseMapper<User> {
     /**
      * Query user list by role ID.
      *
-     * @param user query params
+     * @param page paging params
+     * @param roleWithUserDTO query params
      * @return user list
      */
-    List<User> selectAllocatedList(User user);
+    List<User> selectAllocatedList(
+            IPage<RoleWithUserDTO> page, @Param("role") RoleWithUserDTO 
roleWithUserDTO);
 
     /**
      * Query the list of unassigned user roles.
      *
-     * @param user query params
+     * @param page paging params
+     * @param roleWithUserDTO query params
      * @return user list
      */
-    List<User> selectUnallocatedList(User user);
+    List<User> selectUnallocatedList(
+            IPage<RoleWithUserDTO> page, @Param("role") RoleWithUserDTO 
roleWithUserDTO);
 
     /**
      * Query user info by username.
diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/SysRoleService.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/SysRoleService.java
index 1e11fb2..777f64d 100644
--- 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/SysRoleService.java
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/SysRoleService.java
@@ -36,7 +36,7 @@ public interface SysRoleService extends IService<SysRole> {
      * @param role query params
      * @return role list
      */
-    List<SysRole> selectRoleList(IPage<SysRole> page, SysRole role);
+    List<SysRole> listRoles(IPage<SysRole> page, SysRole role);
 
     /**
      * Query role list based on user ID.
@@ -68,7 +68,7 @@ public interface SysRoleService extends IService<SysRole> {
      * @param roleId role ID
      * @return role info
      */
-    SysRole selectRoleById(Integer roleId);
+    SysRole getRoleById(Integer roleId);
 
     /**
      * Verify if the role name is unique.
diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/UserService.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/UserService.java
index 1b637b5..774d3a8 100644
--- 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/UserService.java
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/UserService.java
@@ -19,6 +19,7 @@
 package org.apache.paimon.web.server.service;
 
 import org.apache.paimon.web.server.data.dto.LoginDTO;
+import org.apache.paimon.web.server.data.dto.RoleWithUserDTO;
 import org.apache.paimon.web.server.data.model.User;
 import org.apache.paimon.web.server.data.result.exception.BaseException;
 import org.apache.paimon.web.server.data.vo.UserInfoVO;
@@ -68,18 +69,20 @@ public interface UserService extends IService<User> {
     /**
      * Query the list of assigned user roles.
      *
-     * @param user query params
+     * @param page the pagination information
+     * @param roleWithUserDTO query params
      * @return user list
      */
-    List<User> selectAllocatedList(User user);
+    List<User> selectAllocatedList(IPage<RoleWithUserDTO> page, 
RoleWithUserDTO roleWithUserDTO);
 
     /**
      * Query the list of unassigned user roles.
      *
-     * @param user query params
+     * @param page the pagination information
+     * @param roleWithUserDTO query params
      * @return user list
      */
-    List<User> selectUnallocatedList(User user);
+    List<User> selectUnallocatedList(IPage<RoleWithUserDTO> page, 
RoleWithUserDTO roleWithUserDTO);
 
     /**
      * Insert a new user.
diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/SysRoleServiceImpl.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/SysRoleServiceImpl.java
index a7882b3..9c7da0e 100644
--- 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/SysRoleServiceImpl.java
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/SysRoleServiceImpl.java
@@ -59,7 +59,7 @@ public class SysRoleServiceImpl extends 
ServiceImpl<SysRoleMapper, SysRole>
      * @return role list
      */
     @Override
-    public List<SysRole> selectRoleList(IPage<SysRole> page, SysRole role) {
+    public List<SysRole> listRoles(IPage<SysRole> page, SysRole role) {
         return roleMapper.selectRoleList(page, role);
     }
 
@@ -120,7 +120,7 @@ public class SysRoleServiceImpl extends 
ServiceImpl<SysRoleMapper, SysRole>
      * @return role info
      */
     @Override
-    public SysRole selectRoleById(Integer roleId) {
+    public SysRole getRoleById(Integer roleId) {
         return this.getById(roleId);
     }
 
@@ -235,7 +235,7 @@ public class SysRoleServiceImpl extends 
ServiceImpl<SysRoleMapper, SysRole>
             SysRole sysRole = new SysRole();
             sysRole.setId(roleId);
             checkRoleAllowed(sysRole);
-            SysRole role = selectRoleById(roleId);
+            SysRole role = getRoleById(roleId);
             if (countUserRoleByRoleId(roleId) > 0) {
                 throw new RoleInUsedException(role.getRoleName());
             }
diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/UserServiceImpl.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/UserServiceImpl.java
index 83da9ff..99f77be 100644
--- 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/UserServiceImpl.java
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/UserServiceImpl.java
@@ -19,6 +19,7 @@
 package org.apache.paimon.web.server.service.impl;
 
 import org.apache.paimon.web.server.data.dto.LoginDTO;
+import org.apache.paimon.web.server.data.dto.RoleWithUserDTO;
 import org.apache.paimon.web.server.data.dto.UserWithRolesDTO;
 import org.apache.paimon.web.server.data.enums.UserType;
 import org.apache.paimon.web.server.data.model.RoleMenu;
@@ -204,23 +205,27 @@ public class UserServiceImpl extends 
ServiceImpl<UserMapper, User> implements Us
     /**
      * Query the list of assigned user roles.
      *
-     * @param user query params
+     * @param page the pagination information
+     * @param roleWithUserDTO query params
      * @return user list
      */
     @Override
-    public List<User> selectAllocatedList(User user) {
-        return userMapper.selectAllocatedList(user);
+    public List<User> selectAllocatedList(
+            IPage<RoleWithUserDTO> page, RoleWithUserDTO roleWithUserDTO) {
+        return userMapper.selectAllocatedList(page, roleWithUserDTO);
     }
 
     /**
      * Query the list of unassigned user roles.
      *
-     * @param user query params
+     * @param page the pagination information
+     * @param roleWithUserDTO query params
      * @return user list
      */
     @Override
-    public List<User> selectUnallocatedList(User user) {
-        return userMapper.selectUnallocatedList(user);
+    public List<User> selectUnallocatedList(
+            IPage<RoleWithUserDTO> page, RoleWithUserDTO roleWithUserDTO) {
+        return userMapper.selectUnallocatedList(page, roleWithUserDTO);
     }
 
     @Override
diff --git a/paimon-web-server/src/main/resources/mapper/UserMapper.xml 
b/paimon-web-server/src/main/resources/mapper/UserMapper.xml
index a71b9a2..116d923 100644
--- a/paimon-web-server/src/main/resources/mapper/UserMapper.xml
+++ b/paimon-web-server/src/main/resources/mapper/UserMapper.xml
@@ -92,32 +92,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                </if>
        </select>
        
-       <select id="selectAllocatedList" 
parameterType="org.apache.paimon.web.server.data.model.User" 
resultMap="SysUserResult">
+       <select id="selectAllocatedList" 
parameterType="org.apache.paimon.web.server.data.dto.RoleWithUserDTO" 
resultMap="SysUserResult">
            select distinct u.id, u.username, u.nickname, u.email, u.mobile, 
u.enabled, u.create_time
            from user u
                         left join user_role urole on u.id = urole.user_id
                         left join sys_role r on r.id = urole.role_id
-           where u.is_delete = '0' and r.id = #{roleId}
-           <if test="username != null and username != ''">
-                       AND u.username like concat('%', #{username}, '%')
+           where u.is_delete = '0' and r.id = #{role.roleId}
+           <if test="role.username != null and role.username != ''">
+                       AND u.username like concat('%', #{role.username}, '%')
                </if>
-               <if test="mobile != null and mobile != ''">
-                       AND u.mobile like concat('%', #{mobile}, '%')
+               <if test="role.mobile != null and role.mobile != ''">
+                       AND u.mobile like concat('%', #{role.mobile}, '%')
                </if>
        </select>
        
-       <select id="selectUnallocatedList" 
parameterType="org.apache.paimon.web.server.data.model.User" 
resultMap="SysUserResult">
-           select distinct u.id u.username, u.nickname, u.email, u.mobile, 
u.enabled, u.create_time
+       <select id="selectUnallocatedList" 
parameterType="org.apache.paimon.web.server.data.dto.RoleWithUserDTO" 
resultMap="SysUserResult">
+           select distinct u.id, u.username, u.nickname, u.email, u.mobile, 
u.enabled, u.create_time
            from user u
                         left join user_role urole on u.id = urole.user_id
                         left join sys_role r on r.id = urole.role_id
-           where u.is_delete = '0' and (r.id != #{roleId} or r.id IS NULL)
-           and u.id not in (select u.id from user u inner join user_role urole 
on u.id = urole.user_id and urole.role_id = #{roleId})
-           <if test="username != null and username != ''">
-                       AND u.username like concat('%', #{username}, '%')
+           where u.is_delete = '0' and (r.id != #{role.roleId} or r.id IS NULL)
+           and u.id not in (select u.id from user u inner join user_role urole 
on u.id = urole.user_id and urole.role_id = #{role.roleId})
+           <if test="role.username != null and role.username != ''">
+                       AND u.username like concat('%', #{role.username}, '%')
                </if>
-               <if test="mobile != null and mobile != ''">
-                       AND u.mobile like concat('%', #{mobile}, '%')
+               <if test="role.mobile != null and role.mobile != ''">
+                       AND u.mobile like concat('%', #{role.mobile}, '%')
                </if>
        </select>
        
diff --git 
a/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/SysRoleControllerTest.java
 
b/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/SysRoleControllerTest.java
index 8d4bbe8..1c89fe1 100644
--- 
a/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/SysRoleControllerTest.java
+++ 
b/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/SysRoleControllerTest.java
@@ -18,7 +18,9 @@
 
 package org.apache.paimon.web.server.controller;
 
+import org.apache.paimon.web.server.data.dto.RoleWithUserDTO;
 import org.apache.paimon.web.server.data.model.SysRole;
+import org.apache.paimon.web.server.data.model.User;
 import org.apache.paimon.web.server.data.result.PageR;
 import org.apache.paimon.web.server.data.result.R;
 import org.apache.paimon.web.server.util.ObjectMapperUtils;
@@ -35,8 +37,12 @@ import 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
 import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
 import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
 
+import java.util.List;
+
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /** Test for {@link SysRoleController}. */
@@ -46,9 +52,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class SysRoleControllerTest extends ControllerTestBase {
 
     private static final String rolePath = "/api/role";
-
     private static final int roleId = 3;
     private static final String roleName = "test";
+    private static final String commonUserName = "common";
 
     @Test
     @Order(1)
@@ -94,6 +100,25 @@ public class SysRoleControllerTest extends 
ControllerTestBase {
         assertEquals(r.getData().getRoleName(), roleName);
     }
 
+    private SysRole getRole(Integer roleId) throws Exception {
+        String responseString =
+                mockMvc.perform(
+                                MockMvcRequestBuilders.get(rolePath + "/" + 
roleId)
+                                        .cookie(cookie)
+                                        
.contentType(MediaType.APPLICATION_JSON_VALUE)
+                                        
.accept(MediaType.APPLICATION_JSON_VALUE))
+                        .andExpect(MockMvcResultMatchers.status().isOk())
+                        .andDo(MockMvcResultHandlers.print())
+                        .andReturn()
+                        .getResponse()
+                        .getContentAsString();
+
+        R<SysRole> r =
+                ObjectMapperUtils.fromJSON(responseString, new 
TypeReference<R<SysRole>>() {});
+
+        return r.getData();
+    }
+
     @Test
     @Order(3)
     public void testEditRole() throws Exception {
@@ -134,13 +159,66 @@ public class SysRoleControllerTest extends 
ControllerTestBase {
         assertEquals(r.getData().getRoleName(), newRoleName);
     }
 
+    @Test
+    @Order(4)
+    public void testGetRoleList() throws Exception {
+        String responseString =
+                mockMvc.perform(
+                                MockMvcRequestBuilders.get(rolePath + "/list")
+                                        .cookie(cookie)
+                                        
.contentType(MediaType.APPLICATION_JSON_VALUE)
+                                        
.accept(MediaType.APPLICATION_JSON_VALUE))
+                        .andExpect(MockMvcResultMatchers.status().isOk())
+                        .andDo(MockMvcResultHandlers.print())
+                        .andReturn()
+                        .getResponse()
+                        .getContentAsString();
+
+        PageR<SysRole> r =
+                ObjectMapperUtils.fromJSON(responseString, new 
TypeReference<PageR<SysRole>>() {});
+        assertNotNull(r);
+        assertTrue(
+                r.getData() != null
+                        && ((r.getTotal() > 0 && r.getData().size() > 0)
+                                || (r.getTotal() == 0 && r.getData().size() == 
0)));
+
+        SysRole firstRole = r.getData().get(0);
+        assertEquals(1, firstRole.getId());
+        assertEquals("admin", firstRole.getRoleName());
+        assertEquals("admin", firstRole.getRoleKey());
+        assertEquals(1, firstRole.getSort());
+        assertTrue(firstRole.getEnabled());
+        assertFalse(firstRole.getIsDelete());
+
+        SysRole secondRole = r.getData().get(1);
+        assertEquals(2, secondRole.getId());
+        assertEquals("common", secondRole.getRoleName());
+        assertEquals("common", secondRole.getRoleKey());
+        assertEquals(2, secondRole.getSort());
+        assertTrue(secondRole.getEnabled());
+        assertFalse(secondRole.getIsDelete());
+
+        SysRole thirdRole = r.getData().get(2);
+        assertEquals(3, thirdRole.getId());
+        assertEquals("test-edit", thirdRole.getRoleName());
+        assertEquals("test-edit", thirdRole.getRoleKey());
+        assertEquals(3, thirdRole.getSort());
+        assertTrue(secondRole.getEnabled());
+        assertFalse(secondRole.getIsDelete());
+    }
+
     @Test
     @Order(5)
-    public void testDeleteRole() throws Exception {
-        String delResponseString =
+    public void testChangeRoleStatus() throws Exception {
+        SysRole sysRole = new SysRole();
+        sysRole.setId(2);
+        sysRole.setEnabled(false);
+
+        String responseString =
                 mockMvc.perform(
-                                MockMvcRequestBuilders.delete(rolePath + "/" + 
roleId)
+                                MockMvcRequestBuilders.put(rolePath + 
"/changeStatus")
                                         .cookie(cookie)
+                                        
.content(ObjectMapperUtils.toJSON(sysRole))
                                         
.contentType(MediaType.APPLICATION_JSON_VALUE)
                                         
.accept(MediaType.APPLICATION_JSON_VALUE))
                         .andExpect(MockMvcResultMatchers.status().isOk())
@@ -149,17 +227,87 @@ public class SysRoleControllerTest extends 
ControllerTestBase {
                         .getResponse()
                         .getContentAsString();
 
-        R<?> result = ObjectMapperUtils.fromJSON(delResponseString, R.class);
-        assertEquals(200, result.getCode());
+        R<Void> r = ObjectMapperUtils.fromJSON(responseString, new 
TypeReference<R<Void>>() {});
+        assertEquals(200, r.getCode());
+        SysRole changeRole = getRole(2);
+        assertEquals(changeRole.getEnabled(), false);
     }
 
     @Test
-    @Order(4)
-    public void testGetRoleList() throws Exception {
+    @Order(6)
+    public void testSelectAllAuthUser() throws Exception {
         String responseString =
                 mockMvc.perform(
-                                MockMvcRequestBuilders.get(rolePath + "/list")
+                                MockMvcRequestBuilders.put(rolePath + 
"/authUser/selectAll")
+                                        .cookie(cookie)
+                                        
.contentType(MediaType.APPLICATION_JSON_VALUE)
+                                        
.accept(MediaType.APPLICATION_JSON_VALUE)
+                                        .param("roleId", "3")
+                                        .param("userIds", "1,2"))
+                        .andExpect(MockMvcResultMatchers.status().isOk())
+                        .andDo(MockMvcResultHandlers.print())
+                        .andReturn()
+                        .getResponse()
+                        .getContentAsString();
+
+        R<Void> r = ObjectMapperUtils.fromJSON(responseString, new 
TypeReference<R<Void>>() {});
+        assertEquals(200, r.getCode());
+        List<User> expectResults = getAllLocatedUsers(roleId);
+        assertNotNull(expectResults);
+    }
+
+    @Test
+    @Order(7)
+    public void testAllocatedList() throws Exception {
+        RoleWithUserDTO roleWithUser = new RoleWithUserDTO();
+        roleWithUser.setRoleId(roleId);
+        String responseString =
+                mockMvc.perform(
+                                MockMvcRequestBuilders.get(rolePath + 
"/authUser/allocatedList")
                                         .cookie(cookie)
+                                        
.content(ObjectMapperUtils.toJSON(roleWithUser))
+                                        
.contentType(MediaType.APPLICATION_JSON_VALUE)
+                                        
.accept(MediaType.APPLICATION_JSON_VALUE))
+                        .andExpect(MockMvcResultMatchers.status().isOk())
+                        .andDo(MockMvcResultHandlers.print())
+                        .andReturn()
+                        .getResponse()
+                        .getContentAsString();
+
+        PageR<User> r =
+                ObjectMapperUtils.fromJSON(responseString, new 
TypeReference<PageR<User>>() {});
+        assertNotNull(r);
+
+        assertTrue(
+                r.getData() != null
+                        && ((r.getTotal() > 0 && r.getData().size() > 0)
+                                || (r.getTotal() == 0 && r.getData().size() == 
0)));
+
+        User firstUser = r.getData().get(0);
+        assertEquals(1, firstUser.getId());
+        assertEquals("admin", firstUser.getUsername());
+        assertEquals("Admin", firstUser.getNickname());
+        assertEquals("[email protected]", firstUser.getEmail());
+        assertTrue(firstUser.getEnabled());
+        assertTrue(firstUser.isAdmin());
+
+        User secondUser = r.getData().get(1);
+        assertEquals(2, secondUser.getId());
+        assertEquals("common", secondUser.getUsername());
+        assertEquals("common", secondUser.getNickname());
+        assertEquals("[email protected]", secondUser.getEmail());
+        assertTrue(secondUser.getEnabled());
+        assertFalse(secondUser.isAdmin());
+    }
+
+    private List<User> getAllLocatedUsers(Integer roleId) throws Exception {
+        RoleWithUserDTO roleWithUser = new RoleWithUserDTO();
+        roleWithUser.setRoleId(roleId);
+        String responseString =
+                mockMvc.perform(
+                                MockMvcRequestBuilders.get(rolePath + 
"/authUser/allocatedList")
+                                        .cookie(cookie)
+                                        
.content(ObjectMapperUtils.toJSON(roleWithUser))
                                         
.contentType(MediaType.APPLICATION_JSON_VALUE)
                                         
.accept(MediaType.APPLICATION_JSON_VALUE))
                         .andExpect(MockMvcResultMatchers.status().isOk())
@@ -169,10 +317,87 @@ public class SysRoleControllerTest extends 
ControllerTestBase {
                         .getContentAsString();
 
         PageR<?> r = ObjectMapperUtils.fromJSON(responseString, PageR.class);
+        return (List<User>) r.getData();
+    }
+
+    @Test
+    @Order(8)
+    public void testUnAllocatedList() throws Exception {
+        RoleWithUserDTO roleWithUser = new RoleWithUserDTO();
+        roleWithUser.setRoleId(1);
+        roleWithUser.setUsername(commonUserName);
+        String responseString =
+                mockMvc.perform(
+                                MockMvcRequestBuilders.get(rolePath + 
"/authUser/unallocatedList")
+                                        .cookie(cookie)
+                                        
.content(ObjectMapperUtils.toJSON(roleWithUser))
+                                        
.contentType(MediaType.APPLICATION_JSON_VALUE)
+                                        
.accept(MediaType.APPLICATION_JSON_VALUE))
+                        .andExpect(MockMvcResultMatchers.status().isOk())
+                        .andDo(MockMvcResultHandlers.print())
+                        .andReturn()
+                        .getResponse()
+                        .getContentAsString();
+
+        PageR<User> r =
+                ObjectMapperUtils.fromJSON(responseString, new 
TypeReference<PageR<User>>() {});
         assertNotNull(r);
+
         assertTrue(
                 r.getData() != null
                         && ((r.getTotal() > 0 && r.getData().size() > 0)
                                 || (r.getTotal() == 0 && r.getData().size() == 
0)));
+
+        User firstExpectUser = r.getData().get(0);
+        assertEquals(2, firstExpectUser.getId());
+        assertEquals("common", firstExpectUser.getUsername());
+        assertEquals("common", firstExpectUser.getNickname());
+        assertEquals("[email protected]", firstExpectUser.getEmail());
+        assertTrue(firstExpectUser.getEnabled());
+        assertFalse(firstExpectUser.isAdmin());
+    }
+
+    @Test
+    @Order(9)
+    public void testCancelAllAuthUser() throws Exception {
+        String responseString =
+                mockMvc.perform(
+                                MockMvcRequestBuilders.put(rolePath + 
"/authUser/cancelAll")
+                                        .cookie(cookie)
+                                        
.contentType(MediaType.APPLICATION_JSON_VALUE)
+                                        
.accept(MediaType.APPLICATION_JSON_VALUE)
+                                        .param("roleId", 
String.valueOf(roleId))
+                                        .param("userIds", "1,2"))
+                        .andExpect(MockMvcResultMatchers.status().isOk())
+                        .andDo(MockMvcResultHandlers.print())
+                        .andReturn()
+                        .getResponse()
+                        .getContentAsString();
+
+        R<Void> r = ObjectMapperUtils.fromJSON(responseString, new 
TypeReference<R<Void>>() {});
+        assertEquals(200, r.getCode());
+        List<User> expectResults = getAllLocatedUsers(roleId);
+        assertEquals(0, expectResults.size());
+    }
+
+    @Test
+    @Order(10)
+    public void testDeleteRole() throws Exception {
+        String delResponseString =
+                mockMvc.perform(
+                                MockMvcRequestBuilders.delete(rolePath + "/" + 
roleId)
+                                        .cookie(cookie)
+                                        
.contentType(MediaType.APPLICATION_JSON_VALUE)
+                                        
.accept(MediaType.APPLICATION_JSON_VALUE))
+                        .andExpect(MockMvcResultMatchers.status().isOk())
+                        .andDo(MockMvcResultHandlers.print())
+                        .andReturn()
+                        .getResponse()
+                        .getContentAsString();
+
+        R<?> result = ObjectMapperUtils.fromJSON(delResponseString, R.class);
+        assertEquals(200, result.getCode());
+        SysRole deleteRole = getRole(roleId);
+        assertNull(deleteRole);
     }
 }

Reply via email to