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);
}
}