This is an automated email from the ASF dual-hosted git repository.
xiaoyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 25fdb4670 [ISSUE #3157] Optimize admin dto validate. (#3804)
25fdb4670 is described below
commit 25fdb467057e9f7ad29263a26eee0604d0ac9e31
Author: Seth <[email protected]>
AuthorDate: Mon Aug 8 14:41:07 2022 +0800
[ISSUE #3157] Optimize admin dto validate. (#3804)
* optimize admin: dto validate. (#3157)
* optimize admin: dto validate. (#3157)
* remove unused import
* optimize admin: fix unit tests. (#3157)
---
.../shenyu/admin/controller/AppAuthController.java | 2 +-
.../admin/controller/DashboardUserController.java | 20 ++++++++------------
.../apache/shenyu/admin/model/dto/AppAuthDTO.java | 4 +++-
.../apache/shenyu/admin/model/dto/AuthApplyDTO.java | 5 +++++
.../shenyu/admin/model/dto/AuthPathApplyDTO.java | 2 ++
.../apache/shenyu/admin/model/dto/AuthPathDTO.java | 2 ++
.../shenyu/admin/model/dto/AuthPathWarpDTO.java | 3 ++-
.../shenyu/admin/model/dto/DashboardUserDTO.java | 7 ++++++-
.../apache/shenyu/admin/model/dto/MetaDataDTO.java | 1 +
.../shenyu/admin/model/dto/PluginHandleDTO.java | 6 ++++--
.../org/apache/shenyu/admin/model/dto/RoleDTO.java | 2 +-
.../apache/shenyu/admin/model/dto/SelectorDTO.java | 4 +++-
.../apache/shenyu/admin/model/dto/ShenyuDictDTO.java | 1 +
.../apache/shenyu/admin/model/dto/UserRoleDTO.java | 3 +++
.../admin/service/impl/DashboardUserServiceImpl.java | 2 +-
.../admin/controller/AppAuthControllerTest.java | 4 ++--
.../controller/DashboardUserControllerTest.java | 2 +-
.../admin/controller/PluginHandleControllerTest.java | 4 ++++
.../admin/controller/ShenyuDictControllerTest.java | 1 +
19 files changed, 51 insertions(+), 24 deletions(-)
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java
index 935423fe3..3e09904d7 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java
@@ -71,7 +71,7 @@ public class AppAuthController implements
PagedController<AppAuthQuery, AppAuthV
*/
@PostMapping("/apply")
@RequiresPermissions("system:authen:add")
- public ShenyuAdminResult apply(@RequestBody final AuthApplyDTO
authApplyDTO) {
+ public ShenyuAdminResult apply(@Valid @RequestBody final AuthApplyDTO
authApplyDTO) {
if (StringUtils.isNoneBlank(authApplyDTO.getAppKey())) {
return appAuthService.applyUpdate(authApplyDTO);
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java
index 2ceef896d..d769e8b75 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java
@@ -17,6 +17,14 @@
package org.apache.shenyu.admin.controller;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.admin.mapper.DashboardUserMapper;
@@ -29,7 +37,6 @@ import org.apache.shenyu.admin.model.result.ShenyuAdminResult;
import org.apache.shenyu.admin.model.vo.DashboardUserEditVO;
import org.apache.shenyu.admin.model.vo.DashboardUserVO;
import org.apache.shenyu.admin.service.DashboardUserService;
-import org.apache.shenyu.admin.utils.Assert;
import org.apache.shenyu.admin.utils.ShenyuResultMessage;
import org.apache.shenyu.admin.validation.annotation.Existed;
import org.apache.shenyu.common.utils.ShaUtils;
@@ -46,15 +53,6 @@ import
org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
-import javax.validation.Valid;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
/**
* this is dashboard user controller.
*/
@@ -118,8 +116,6 @@ public class DashboardUserController {
public ShenyuAdminResult createDashboardUser(@Valid @RequestBody final
DashboardUserDTO dashboardUserDTO) {
return Optional.ofNullable(dashboardUserDTO)
.map(item -> {
- Assert.notBlack(item.getPassword(),
ShenyuResultMessage.PARAMETER_ERROR + ": password is not balck");
- Assert.notNull(item.getRole(),
ShenyuResultMessage.PARAMETER_ERROR + ": role is not null");
item.setPassword(ShaUtils.shaEncryption(item.getPassword()));
Integer createCount =
dashboardUserService.createOrUpdate(item);
return
ShenyuAdminResult.success(ShenyuResultMessage.CREATE_SUCCESS, createCount);
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java
index ea7902487..f1053f681 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java
@@ -22,6 +22,7 @@ import org.apache.shenyu.admin.validation.annotation.Existed;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
@@ -53,7 +54,8 @@ public class AppAuthDTO implements Serializable {
private String appSecret;
private String userId;
-
+
+ @Pattern(regexp = "\\+?\\d{7,11}", message = "number is illegal, length 7
to 11! e.g. +1234567 or 1234567")
private String phone;
private String extInfo;
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java
index a62459e55..2cb7c072e 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java
@@ -17,6 +17,8 @@
package org.apache.shenyu.admin.model.dto;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
@@ -30,10 +32,13 @@ public class AuthApplyDTO implements Serializable {
private String appKey;
+ @NotBlank(message = "userId cannot be empty!")
private String userId;
+ @Pattern(regexp = "\\+?\\d{7,11}", message = "number is illegal, length 7
to 11! e.g. +1234567 or 1234567")
private String phone;
+ @NotBlank(message = "appName cannot be empty!")
private String appName;
private String appParam;
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathApplyDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathApplyDTO.java
index 77d81c0e4..c6d234207 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathApplyDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathApplyDTO.java
@@ -17,6 +17,7 @@
package org.apache.shenyu.admin.model.dto;
+import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Objects;
@@ -29,6 +30,7 @@ public class AuthPathApplyDTO implements Serializable {
private String appName;
+ @NotBlank
private String path;
/**
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathDTO.java
index b68bf0d14..21002bf8d 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathDTO.java
@@ -18,6 +18,7 @@
package org.apache.shenyu.admin.model.dto;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Objects;
@@ -33,6 +34,7 @@ public class AuthPathDTO implements Serializable {
@NotBlank
private String path;
+ @NotNull
private Boolean enabled;
/**
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
index 2cc52c601..637730de6 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
@@ -20,6 +20,7 @@ package org.apache.shenyu.admin.model.dto;
import org.apache.shenyu.admin.mapper.AppAuthMapper;
import org.apache.shenyu.admin.validation.annotation.Existed;
+import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
@@ -36,7 +37,7 @@ public class AuthPathWarpDTO implements Serializable {
private String id;
@NotEmpty(message = "auth path is not empty")
- private List<AuthPathDTO> authPathDTOList;
+ private List<@Valid AuthPathDTO> authPathDTOList;
/**
* Gets the value of id.
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DashboardUserDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DashboardUserDTO.java
index d5aa15ab1..470bfbc97 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DashboardUserDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DashboardUserDTO.java
@@ -18,6 +18,7 @@
package org.apache.shenyu.admin.model.dto;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@@ -44,6 +45,7 @@ public class DashboardUserDTO implements Serializable {
/**
* user password.
*/
+ @NotBlank
private String password;
/**
@@ -54,11 +56,14 @@ public class DashboardUserDTO implements Serializable {
/**
* current role list.
*/
- private List<String> roles;
+ @NotEmpty
+ @NotNull
+ private List<@NotBlank String> roles;
/**
* whether enabled.
*/
+ @NotNull
private Boolean enabled;
public DashboardUserDTO() {
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MetaDataDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MetaDataDTO.java
index 36d000cc1..425b1fd78 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MetaDataDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MetaDataDTO.java
@@ -62,6 +62,7 @@ public class MetaDataDTO implements Serializable {
/**
* rpc tyoe is not null.
*/
+ @NotBlank
private String rpcType;
/**
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginHandleDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginHandleDTO.java
index 98dc4ac3d..e213d2bee 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginHandleDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginHandleDTO.java
@@ -45,7 +45,7 @@ public class PluginHandleDTO implements Serializable {
private String pluginId;
/**
- * the attribute name.
+ * the field name.
*/
@NotBlank
private String field;
@@ -65,15 +65,17 @@ public class PluginHandleDTO implements Serializable {
private Integer dataType;
/**
- * the attribute type.
+ * the field type.
* 1 selector,
* 2 rule.
*/
+ @NotNull
private Integer type;
/**
* the attribute sort.
*/
+ @NotNull
private Integer sort;
/**
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RoleDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RoleDTO.java
index 36cf33476..17e6905de 100644
--- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RoleDTO.java
+++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RoleDTO.java
@@ -52,7 +52,7 @@ public class RoleDTO implements Serializable {
/**
* pre permission ids.
*/
- private List<String> currentPermissionIds;
+ private List<@NotBlank String> currentPermissionIds;
public RoleDTO() {
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/SelectorDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/SelectorDTO.java
index 59ad15b30..fb0d66265 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/SelectorDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/SelectorDTO.java
@@ -20,6 +20,7 @@ package org.apache.shenyu.admin.model.dto;
import org.apache.shenyu.admin.mapper.PluginMapper;
import org.apache.shenyu.admin.mapper.SelectorMapper;
import org.apache.shenyu.admin.validation.annotation.Existed;
+import org.hibernate.validator.constraints.Range;
import javax.validation.Valid;
import javax.validation.constraints.Max;
@@ -57,7 +58,7 @@ public final class SelectorDTO implements Serializable {
private String name;
/**
- * match mode.
+ * match mode. 0 and 1 or
*/
private Integer matchMode;
@@ -73,6 +74,7 @@ public final class SelectorDTO implements Serializable {
* sort type.
*/
@NotNull
+ @Range(min = 1, max = 1000)
private Integer sort;
/**
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ShenyuDictDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ShenyuDictDTO.java
index aec08c2c7..4de1bfc81 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ShenyuDictDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ShenyuDictDTO.java
@@ -76,6 +76,7 @@ public class ShenyuDictDTO implements Serializable {
/**
* whether enabled.
*/
+ @NotNull
private Boolean enabled;
public ShenyuDictDTO() {
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/UserRoleDTO.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/UserRoleDTO.java
index 16f1cfa82..5080c4ab2 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/UserRoleDTO.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/UserRoleDTO.java
@@ -17,6 +17,7 @@
package org.apache.shenyu.admin.model.dto;
+import javax.validation.constraints.NotBlank;
import java.util.Objects;
/**
@@ -32,11 +33,13 @@ public class UserRoleDTO {
/**
* user key.
*/
+ @NotBlank
private String userId;
/**
* role key.
*/
+ @NotBlank
private String roleId;
public UserRoleDTO() {
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DashboardUserServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DashboardUserServiceImpl.java
index e4f9a93c4..23655548d 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DashboardUserServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DashboardUserServiceImpl.java
@@ -299,7 +299,7 @@ public class DashboardUserServiceImpl implements
DashboardUserService {
* @param roleIds role ids.
*/
private void bindUserRole(final String userId, final List<String> roleIds)
{
- if (CollectionUtils.isEmpty(roleIds)) {
+ if (CollectionUtils.isEmpty(roleIds) || StringUtils.isBlank(userId)) {
return;
}
userRoleMapper.insertBatch(roleIds.stream()
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java
index 2d890d787..9ab8258eb 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java
@@ -106,7 +106,7 @@ public final class AppAuthControllerTest {
pathList.add("/test");
authApplyDTO.setAppName("testApp");
authApplyDTO.setUserId("testUser");
- authApplyDTO.setPhone("18600000000");
+ authApplyDTO.setPhone("+1234567");
authApplyDTO.setAppParam("{\"type\": \"test\"}");
authApplyDTO.setExtInfo("{\"extInfo\": \"test\"}");
authApplyDTO.setOpen(true);
@@ -187,7 +187,7 @@ public final class AppAuthControllerTest {
appAuthDTO.setId("0001");
appAuthDTO.setAppKey("app key");
appAuthDTO.setAppSecret("app secret");
- appAuthDTO.setPhone("18600000001");
+ appAuthDTO.setPhone("1234567");
given(this.appAuthService.updateDetail(appAuthDTO)).willReturn(
ShenyuAdminResult.success(ShenyuResultMessage.UPDATE_SUCCESS));
ConfigurableApplicationContext context =
mock(ConfigurableApplicationContext.class);
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/DashboardUserControllerTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/DashboardUserControllerTest.java
index f44b88fe4..3c5b016cb 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/DashboardUserControllerTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/DashboardUserControllerTest.java
@@ -76,7 +76,7 @@ public final class DashboardUserControllerTest {
"dateUpdated");
private final DashboardUserDTO dashboardUserDTO = new
DashboardUserDTO("2", "userName",
- "123456", 0, new ArrayList<>(), false);
+ "123456", 0, Lists.newArrayList("1"), false);
@BeforeEach
public void setUp() throws Exception {
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginHandleControllerTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginHandleControllerTest.java
index aca0cfe13..98882d581 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginHandleControllerTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginHandleControllerTest.java
@@ -117,6 +117,8 @@ public final class PluginHandleControllerTest {
pluginHandleDTO.setPluginId("1213");
pluginHandleDTO.setDataType(1);
pluginHandleDTO.setField("f");
+ pluginHandleDTO.setType(1);
+ pluginHandleDTO.setSort(1);
given(this.pluginHandleService.createOrUpdate(pluginHandleDTO)).willReturn(1);
this.mockMvc.perform(MockMvcRequestBuilders.post("/plugin-handle/")
.contentType(MediaType.APPLICATION_JSON)
@@ -133,6 +135,8 @@ public final class PluginHandleControllerTest {
pluginHandleDTO.setPluginId("1213");
pluginHandleDTO.setDataType(1);
pluginHandleDTO.setField("f");
+ pluginHandleDTO.setType(1);
+ pluginHandleDTO.setSort(1);
SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class));
when(SpringBeanUtils.getInstance().getBean(PluginHandleMapper.class)).thenReturn(handleMapper);
when(handleMapper.existed(pluginHandleDTO.getId())).thenReturn(true);
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ShenyuDictControllerTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ShenyuDictControllerTest.java
index 0c0b4e948..0a235da7a 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ShenyuDictControllerTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ShenyuDictControllerTest.java
@@ -195,6 +195,7 @@ public final class ShenyuDictControllerTest {
shenyuDictDTO.setDictValue("v");
shenyuDictDTO.setDictCode("code");
shenyuDictDTO.setSort(1);
+ shenyuDictDTO.setEnabled(true);
return shenyuDictDTO;
}
}