This is an automated email from the ASF dual-hosted git repository.
SbloodyS pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 3ec7429892 [Improvement-18224][API] Migrate ProjectService
Map<String,Object> returns to typed returns (#18245)
3ec7429892 is described below
commit 3ec74298922b9ffa25f274438e4b674e394465f8
Author: Wenjun Ruan <[email protected]>
AuthorDate: Tue May 12 11:44:02 2026 +0800
[Improvement-18224][API] Migrate ProjectService Map<String,Object> returns
to typed returns (#18245)
---
.../api/controller/BaseController.java | 35 -----
.../dolphinscheduler/api/python/PythonGateway.java | 4 +-
.../dolphinscheduler/api/service/BaseService.java | 20 ---
.../api/service/ProjectService.java | 29 +---
.../api/service/impl/BaseServiceImpl.java | 37 ------
.../service/impl/ProjectParameterServiceImpl.java | 25 +---
.../service/impl/ProjectPreferenceServiceImpl.java | 15 +--
.../api/service/impl/ProjectServiceImpl.java | 148 ++-------------------
.../ProjectWorkerGroupRelationServiceImpl.java | 12 +-
.../api/service/impl/SchedulerServiceImpl.java | 5 +-
.../service/impl/TaskDefinitionServiceImpl.java | 18 +--
.../impl/WorkflowDefinitionServiceImpl.java | 15 +--
.../api/service/BaseServiceTest.java | 15 ---
.../api/service/ProjectParameterServiceTest.java | 89 ++++++-------
.../api/service/ProjectPreferenceServiceTest.java | 50 ++++---
.../api/service/ProjectServiceTest.java | 131 +++++++-----------
.../ProjectWorkerGroupRelationServiceTest.java | 19 +--
.../api/service/TaskDefinitionServiceImplTest.java | 5 +-
.../api/service/WorkflowDefinitionServiceTest.java | 8 +-
19 files changed, 154 insertions(+), 526 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/BaseController.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/BaseController.java
index b025f5b7f7..1a84594035 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/BaseController.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/BaseController.java
@@ -79,25 +79,6 @@ public class BaseController {
return request.getRemoteAddr();
}
- /**
- * return data list
- *
- * @param result result code
- * @return result code
- */
- public Result returnDataList(Map<String, Object> result) {
- Status status = (Status) result.get(Constants.STATUS);
- if (status == Status.SUCCESS) {
- String msg = Status.SUCCESS.getMsg();
- Object datalist = result.get(Constants.DATA_LIST);
- return success(msg, datalist);
- } else {
- Integer code = status.getCode();
- String msg = (String) result.get(Constants.MSG);
- return error(code, msg);
- }
- }
-
/**
* success
*
@@ -196,22 +177,6 @@ public class BaseController {
return result;
}
- /**
- * put message to map
- *
- * @param result result
- * @param status status
- * @param statusParams object messages
- */
- protected void putMsg(Map<String, Object> result, Status status, Object...
statusParams) {
- result.put(Constants.STATUS, status);
- if (statusParams != null && statusParams.length > 0) {
- result.put(Constants.MSG, MessageFormat.format(status.getMsg(),
statusParams));
- } else {
- result.put(Constants.MSG, status.getMsg());
- }
- }
-
/**
* put message to result object
*
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
index 759608b517..075eef950a 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
@@ -415,7 +415,7 @@ public class PythonGateway {
public Project queryProjectByName(String userName, String projectName) {
User user = usersService.queryUser(userName);
- return (Project) projectService.queryByName(user,
projectName).get(Constants.DATA_LIST);
+ return projectService.queryByName(user, projectName);
}
public void updateProject(String userName, Long projectCode, String
projectName, String desc) {
@@ -522,7 +522,7 @@ public class PythonGateway {
Map<String, Object> result = new HashMap<>();
User user = usersService.queryUser(userName);
- Project project = (Project) projectService.queryByName(user,
projectName).get(Constants.DATA_LIST);
+ Project project = projectService.queryByName(user, projectName);
long projectCode = project.getCode();
WorkflowDefinition workflowDefinition = getWorkflow(user, projectCode,
workflowName);
// get workflow info
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/BaseService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/BaseService.java
index 71c4814a45..6a4697db83 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/BaseService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/BaseService.java
@@ -24,7 +24,6 @@ import
org.apache.dolphinscheduler.common.enums.AuthorizationType;
import org.apache.dolphinscheduler.dao.entity.User;
import java.util.Date;
-import java.util.Map;
public interface BaseService {
@@ -45,15 +44,6 @@ public interface BaseService {
*/
boolean isNotAdmin(User loginUser);
- /**
- * put message to map
- *
- * @param result result code
- * @param status status
- * @param statusParams status message
- */
- void putMsg(Map<String, Object> result, Status status, Object...
statusParams);
-
/**
* put message to result object
*
@@ -63,16 +53,6 @@ public interface BaseService {
*/
void putMsg(Result<Object> result, Status status, Object... statusParams);
- /**
- * check
- *
- * @param result result
- * @param bool bool
- * @param userNoOperationPerm status
- * @return check result
- */
- boolean check(Map<String, Object> result, boolean bool, Status
userNoOperationPerm);
-
/**
* Verify that the operator has permissions
*
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectService.java
index fbf72cccef..4945e34156 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectService.java
@@ -23,7 +23,6 @@ import org.apache.dolphinscheduler.dao.entity.Project;
import org.apache.dolphinscheduler.dao.entity.User;
import java.util.List;
-import java.util.Map;
public interface ProjectService {
@@ -50,34 +49,14 @@ public interface ProjectService {
*
* @param loginUser login user
* @param projectName project name
- * @return project detail information
+ * @return project (throws {@link ServiceException} on not-found or
no-perm)
*/
- Map<String, Object> queryByName(User loginUser, String projectName);
+ Project queryByName(User loginUser, String projectName);
void checkProjectAndAuthThrowException(User loginUser, Project project,
String permission) throws ServiceException;
void checkProjectAndAuthThrowException(User loginUser, Long projectCode,
String permission) throws ServiceException;
- boolean hasProjectAndPerm(User loginUser, Project project, Map<String,
Object> result, String perm);
-
- /**
- * has project and permission
- *
- * @param loginUser login user
- * @param project project
- * @param result result
- * @param permission String
- * @return true if the login user have permission to the project
- */
- @Deprecated
- boolean hasProjectAndPerm(User loginUser, Project project, Result result,
String permission);
-
- @Deprecated
- boolean hasProjectAndWritePerm(User loginUser, Project project, Result
result);
-
- @Deprecated
- boolean hasProjectAndWritePerm(User loginUser, Project project,
Map<String, Object> result);
-
void checkHasProjectWritePermissionThrowException(User loginUser, long
projectCode);
void checkHasProjectWritePermissionThrowException(User loginUser, Project
project);
@@ -161,12 +140,12 @@ public interface ProjectService {
Result queryAuthorizedUser(User loginUser, Long projectCode);
/**
- * query authorized project
+ * query authorized project list created by the login user
*
* @param loginUser login user
* @return projects which the user have permission to see, Except for
items created by this user
*/
- Map<String, Object> queryProjectCreatedByUser(User loginUser);
+ List<Project> queryProjectCreatedByUser(User loginUser);
/**
* query all project list that have one or more workflow definitions.
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/BaseServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/BaseServiceImpl.java
index 7f09cb0b9a..ff01910c9c 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/BaseServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/BaseServiceImpl.java
@@ -32,7 +32,6 @@ import org.apache.commons.lang3.StringUtils;
import java.text.MessageFormat;
import java.util.Date;
-import java.util.Map;
import java.util.Objects;
import lombok.extern.slf4j.Slf4j;
@@ -68,23 +67,6 @@ public class BaseServiceImpl implements BaseService {
return !isAdmin(loginUser);
}
- /**
- * put message to map
- *
- * @param result result code
- * @param status status
- * @param statusParams status message
- */
- @Override
- public void putMsg(Map<String, Object> result, Status status, Object...
statusParams) {
- result.put(Constants.STATUS, status);
- if (statusParams != null && statusParams.length > 0) {
- result.put(Constants.MSG, MessageFormat.format(status.getMsg(),
statusParams));
- } else {
- result.put(Constants.MSG, status.getMsg());
- }
- }
-
/**
* put message to result object
*
@@ -102,25 +84,6 @@ public class BaseServiceImpl implements BaseService {
}
}
- /**
- * check
- *
- * @param result result
- * @param bool bool
- * @param userNoOperationPerm status
- * @return check result
- */
- @Override
- public boolean check(Map<String, Object> result, boolean bool, Status
userNoOperationPerm) {
- // only admin can operate
- if (bool) {
- result.put(Constants.STATUS, userNoOperationPerm);
- result.put(Constants.MSG, userNoOperationPerm.getMsg());
- return true;
- }
- return false;
- }
-
/**
* Verify that the operator has permissions
*
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectParameterServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectParameterServiceImpl.java
index 0c6b4309b6..5f469925cd 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectParameterServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectParameterServiceImpl.java
@@ -73,10 +73,7 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
// check if user have write perm for project
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndWritePerm =
projectService.hasProjectAndWritePerm(loginUser, project, result);
- if (!hasProjectAndWritePerm) {
- return result;
- }
+ projectService.checkHasProjectWritePermissionThrowException(loginUser,
project);
// check if project parameter name exists
ProjectParameter projectParameter =
projectParameterMapper.selectOne(new QueryWrapper<ProjectParameter>()
@@ -123,10 +120,7 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
// check if user have write perm for project
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndWritePerm =
projectService.hasProjectAndWritePerm(loginUser, project, result);
- if (!hasProjectAndWritePerm) {
- return result;
- }
+ projectService.checkHasProjectWritePermissionThrowException(loginUser,
project);
ProjectParameter projectParameter =
projectParameterMapper.queryByCode(code);
// check project parameter exists
@@ -172,10 +166,7 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
// check if user have write perm for project
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndWritePerm =
projectService.hasProjectAndWritePerm(loginUser, project, result);
- if (!hasProjectAndWritePerm) {
- return result;
- }
+ projectService.checkHasProjectWritePermissionThrowException(loginUser,
project);
ProjectParameter projectParameter =
projectParameterMapper.queryByCode(code);
// check project parameter exists
@@ -237,10 +228,7 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
Result result = new Result();
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndPerm =
projectService.hasProjectAndPerm(loginUser, project, result, PROJECT);
- if (!hasProjectAndPerm) {
- return result;
- }
+ projectService.checkProjectAndAuthThrowException(loginUser, project,
PROJECT);
PageInfo<ProjectParameter> pageInfo = new PageInfo<>(pageNo, pageSize);
Page<ProjectParameter> page = new Page<>(pageNo, pageSize);
@@ -263,10 +251,7 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
Result result = new Result();
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndPerm =
projectService.hasProjectAndPerm(loginUser, project, result, PROJECT);
- if (!hasProjectAndPerm) {
- return result;
- }
+ projectService.checkProjectAndAuthThrowException(loginUser, project,
PROJECT);
ProjectParameter projectParameter =
projectParameterMapper.queryByCode(code);
if (projectParameter == null || projectCode !=
projectParameter.getProjectCode()) {
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectPreferenceServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectPreferenceServiceImpl.java
index 6274d290d5..35c58c56f8 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectPreferenceServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectPreferenceServiceImpl.java
@@ -61,10 +61,7 @@ public class ProjectPreferenceServiceImpl extends
BaseServiceImpl
// check if the user has the writing permission for project
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndWritePerm =
projectService.hasProjectAndWritePerm(loginUser, project, result);
- if (!hasProjectAndWritePerm) {
- return result;
- }
+ projectService.checkHasProjectWritePermissionThrowException(loginUser,
project);
ProjectPreference projectPreference = projectPreferenceMapper
.selectOne(new
QueryWrapper<ProjectPreference>().lambda().eq(ProjectPreference::getProjectCode,
@@ -110,10 +107,7 @@ public class ProjectPreferenceServiceImpl extends
BaseServiceImpl
Result result = new Result();
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndPerm =
projectService.hasProjectAndPerm(loginUser, project, result, PROJECT);
- if (!hasProjectAndPerm) {
- return result;
- }
+ projectService.checkProjectAndAuthThrowException(loginUser, project,
PROJECT);
ProjectPreference projectPreference = projectPreferenceMapper
.selectOne(new
QueryWrapper<ProjectPreference>().lambda().eq(ProjectPreference::getProjectCode,
@@ -131,10 +125,7 @@ public class ProjectPreferenceServiceImpl extends
BaseServiceImpl
// check if the user has the writing permission for project
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndWritePerm =
projectService.hasProjectAndWritePerm(loginUser, project, result);
- if (!hasProjectAndWritePerm) {
- return result;
- }
+ projectService.checkHasProjectWritePermissionThrowException(loginUser,
project);
ProjectPreference projectPreference = projectPreferenceMapper
.selectOne(new
QueryWrapper<ProjectPreference>().lambda().eq(ProjectPreference::getProjectCode,
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
index 1625b6e603..db5d8347f5 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
@@ -47,7 +47,6 @@ import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -166,35 +165,22 @@ public class ProjectServiceImpl extends BaseServiceImpl
implements ProjectServic
public Result queryByCode(User loginUser, long projectCode) {
Result result = new Result();
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndPerm = hasProjectAndPerm(loginUser, project,
result, PROJECT);
- if (!hasProjectAndPerm) {
- return result;
- }
- if (project != null) {
- result.setData(project);
- putMsg(result, Status.SUCCESS);
- }
+ checkProjectAndAuthThrowException(loginUser, project, PROJECT);
+ result.setData(project);
+ putMsg(result, Status.SUCCESS);
return result;
}
@Override
- public Map<String, Object> queryByName(User loginUser, String projectName)
{
- Map<String, Object> result = new HashMap<>();
+ public Project queryByName(User loginUser, String projectName) {
Project project = projectMapper.queryByName(projectName);
- boolean hasProjectAndPerm = hasProjectAndPerm(loginUser, project,
result, PROJECT);
- if (!hasProjectAndPerm) {
- return result;
- }
- if (project != null) {
- result.put(Constants.DATA_LIST, project);
- putMsg(result, Status.SUCCESS);
- }
- return result;
+ checkProjectAndAuthThrowException(loginUser, project, PROJECT);
+ return project;
}
+ @Override
public void checkProjectAndAuthThrowException(@NonNull User loginUser,
@Nullable Project project,
String permission) {
- // todo: throw a permission exception
if (project == null) {
throw new ServiceException(Status.PROJECT_NOT_EXIST);
}
@@ -213,77 +199,6 @@ public class ProjectServiceImpl extends BaseServiceImpl
implements ProjectServic
checkProjectAndAuthThrowException(loginUser, project, permission);
}
- @Override
- public boolean hasProjectAndPerm(User loginUser, Project project,
Map<String, Object> result, String permission) {
- boolean checkResult = false;
- if (project == null) {
- log.error("Project does not exist.");
- putMsg(result, Status.PROJECT_NOT_FOUND, "");
- } else if (!canOperatorPermissions(loginUser, new
Object[]{project.getId()}, AuthorizationType.PROJECTS,
- permission)) {
- log.error("User does not have {} permission to operate project,
userName:{}, projectCode:{}.",
- permission, loginUser.getUserName(), project.getCode());
- putMsg(result, Status.USER_NO_OPERATION_PROJECT_PERM,
loginUser.getUserName(), project.getCode());
- } else {
- checkResult = true;
- }
- return checkResult;
- }
-
- @Override
- public boolean hasProjectAndWritePerm(User loginUser, Project project,
Result result) {
- boolean checkResult = false;
- if (project == null) {
- log.error("Project does not exist.");
- putMsg(result, Status.PROJECT_NOT_FOUND, "");
- } else {
- // case 1: user is admin
- if (loginUser.getUserType() == UserType.ADMIN_USER) {
- return true;
- }
- // case 2: user is project owner
- if (project.getUserId().equals(loginUser.getId())) {
- return true;
- }
- // case 3: check user permission level
- ProjectUser projectUser =
projectUserMapper.queryProjectRelation(project.getId(), loginUser.getId());
- if (projectUser == null || projectUser.getPerm() !=
Constants.DEFAULT_ADMIN_PERMISSION) {
- putMsg(result, Status.USER_NO_WRITE_PROJECT_PERM,
loginUser.getUserName(), project.getCode());
- checkResult = false;
- } else {
- checkResult = true;
- }
- }
- return checkResult;
- }
-
- @Override
- public boolean hasProjectAndWritePerm(User loginUser, Project project,
Map<String, Object> result) {
- boolean checkResult = false;
- if (project == null) {
- log.error("Project does not exist.");
- putMsg(result, Status.PROJECT_NOT_FOUND, "");
- } else {
- // case 1: user is admin
- if (loginUser.getUserType() == UserType.ADMIN_USER) {
- return true;
- }
- // case 2: user is project owner
- if (project.getUserId().equals(loginUser.getId())) {
- return true;
- }
- // case 3: check user permission level
- ProjectUser projectUser =
projectUserMapper.queryProjectRelation(project.getId(), loginUser.getId());
- if (projectUser == null || projectUser.getPerm() !=
Constants.DEFAULT_ADMIN_PERMISSION) {
- putMsg(result, Status.USER_NO_WRITE_PROJECT_PERM,
loginUser.getUserName(), project.getCode());
- checkResult = false;
- } else {
- checkResult = true;
- }
- }
- return checkResult;
- }
-
@Override
public void checkHasProjectWritePermissionThrowException(User loginUser,
long projectCode) {
Project project = projectMapper.queryByCode(projectCode);
@@ -310,23 +225,6 @@ public class ProjectServiceImpl extends BaseServiceImpl
implements ProjectServic
}
}
- @Override
- public boolean hasProjectAndPerm(User loginUser, Project project, Result
result, String permission) {
- boolean checkResult = false;
- if (project == null) {
- log.error("Project does not exist.");
- putMsg(result, Status.PROJECT_NOT_FOUND, "");
- } else if (!canOperatorPermissions(loginUser, new
Object[]{project.getId()}, AuthorizationType.PROJECTS,
- permission)) {
- log.error("User does not have {} permission to operate project,
userName:{}, projectCode:{}.",
- permission, loginUser.getUserName(), project.getCode());
- putMsg(result, Status.USER_NO_OPERATION_PROJECT_PERM,
loginUser.getUserName(), project.getName());
- } else {
- checkResult = true;
- }
- return checkResult;
- }
-
/**
* admin can view all projects
*
@@ -445,11 +343,7 @@ public class ProjectServiceImpl extends BaseServiceImpl
implements ProjectServic
Result result = new Result();
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndWritePerm = hasProjectAndWritePerm(loginUser,
project, result);
- if (!hasProjectAndWritePerm) {
- return result;
- }
-
+ checkHasProjectWritePermissionThrowException(loginUser, project);
checkProjectAndAuthThrowException(loginUser, project, PROJECT_DELETE);
List<WorkflowDefinition> workflowDefinitionList =
@@ -494,10 +388,7 @@ public class ProjectServiceImpl extends BaseServiceImpl
implements ProjectServic
}
Project project = projectMapper.queryByCode(projectCode);
- boolean hasProjectAndWritePerm = hasProjectAndWritePerm(loginUser,
project, result);
- if (!hasProjectAndWritePerm) {
- return result;
- }
+ checkHasProjectWritePermissionThrowException(loginUser, project);
Project tempProject = projectMapper.queryByName(projectName);
if (tempProject != null && tempProject.getCode() != project.getCode())
{
putMsg(result, Status.PROJECT_ALREADY_EXISTS, projectName);
@@ -652,10 +543,7 @@ public class ProjectServiceImpl extends BaseServiceImpl
implements ProjectServic
// 1. check read permission
Project project = this.projectMapper.queryByCode(projectCode);
- boolean hasProjectAndPerm = this.hasProjectAndPerm(loginUser, project,
result, PROJECT);
- if (!hasProjectAndPerm) {
- return result;
- }
+ this.checkProjectAndAuthThrowException(loginUser, project, PROJECT);
// 2. query authorized user list
List<User> users =
this.userMapper.queryAuthedUserListByProjectId(project.getId());
@@ -664,21 +552,9 @@ public class ProjectServiceImpl extends BaseServiceImpl
implements ProjectServic
return result;
}
- /**
- * query authorized project
- *
- * @param loginUser login user
- * @return projects which the user have permission to see, Except for
items created by this user
- */
@Override
- public Map<String, Object> queryProjectCreatedByUser(User loginUser) {
- Map<String, Object> result = new HashMap<>();
-
- List<Project> projects =
projectMapper.queryProjectCreatedByUser(loginUser.getId());
- result.put(Constants.DATA_LIST, projects);
- putMsg(result, Status.SUCCESS);
-
- return result;
+ public List<Project> queryProjectCreatedByUser(User loginUser) {
+ return projectMapper.queryProjectCreatedByUser(loginUser.getId());
}
/**
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectWorkerGroupRelationServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectWorkerGroupRelationServiceImpl.java
index 0824f3aaff..7606114eb5 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectWorkerGroupRelationServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectWorkerGroupRelationServiceImpl.java
@@ -23,7 +23,6 @@ import org.apache.dolphinscheduler.api.service.ProjectService;
import
org.apache.dolphinscheduler.api.service.ProjectWorkerGroupRelationService;
import org.apache.dolphinscheduler.api.service.WorkerGroupService;
import org.apache.dolphinscheduler.api.utils.Result;
-import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.dao.entity.Project;
import org.apache.dolphinscheduler.dao.entity.ProjectWorkerGroup;
import org.apache.dolphinscheduler.dao.entity.User;
@@ -39,10 +38,8 @@ import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.Date;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;
@@ -196,14 +193,7 @@ public class ProjectWorkerGroupRelationServiceImpl extends
BaseServiceImpl
public List<ProjectWorkerGroup> queryAssignedWorkerGroupsByProject(User
loginUser, Long projectCode) {
Project project = projectMapper.queryByCode(projectCode);
// check project auth
- Map<String, Object> permResult = new HashMap<>();
- if (!projectService.hasProjectAndPerm(loginUser, project, permResult,
null)) {
- Status status = (Status) permResult.get(Constants.STATUS);
- if (status == null) {
- throw new
ServiceException(Status.USER_NO_OPERATION_PROJECT_PERM);
- }
- throw new ServiceException(status.getCode(), (String)
permResult.get(Constants.MSG));
- }
+ projectService.checkProjectAndAuthThrowException(loginUser, project,
null);
Set<String> assignedWorkerGroups = getAllUsedWorkerGroups(project);
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java
index 772456ac24..89608ebc25 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java
@@ -281,10 +281,7 @@ public class SchedulerServiceImpl extends BaseServiceImpl
implements SchedulerSe
Project project = projectMapper.queryByCode(projectCode);
// check project auth
- boolean hasProjectAndPerm =
projectService.hasProjectAndPerm(loginUser, project, result, PROJECT);
- if (!hasProjectAndPerm) {
- return result;
- }
+ projectService.checkProjectAndAuthThrowException(loginUser, project,
PROJECT);
if (workflowDefinitionCode != 0) {
WorkflowDefinition workflowDefinition =
workflowDefinitionMapper.queryByCode(workflowDefinitionCode);
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
index 43fc5852b8..2c6138e00c 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
@@ -145,20 +145,6 @@ public class TaskDefinitionServiceImpl extends
BaseServiceImpl implements TaskDe
return taskDefinition;
}
- /**
- * Resolve project + write permission; throws ServiceException with the
- * status that {@link ProjectService#hasProjectAndWritePerm(User, Project,
Map)}
- * would otherwise have written into the legacy result map.
- */
- private void requireProjectAndWritePerm(User loginUser, Project project) {
- Map<String, Object> permCheck = new HashMap<>();
- if (!projectService.hasProjectAndWritePerm(loginUser, project,
permCheck)) {
- Status status = (Status) permCheck.get(Constants.STATUS);
- String msg = (String) permCheck.get(Constants.MSG);
- throw new ServiceException(status.getCode(), msg);
- }
- }
-
public void updateDag(User loginUser, long workflowDefinitionCode,
List<WorkflowTaskRelation> workflowTaskRelationList,
List<TaskDefinitionLog> taskDefinitionLogs) {
@@ -224,7 +210,7 @@ public class TaskDefinitionServiceImpl extends
BaseServiceImpl implements TaskDe
Project project = projectMapper.queryByCode(projectCode);
// check if user have write perm for project
- requireProjectAndWritePerm(loginUser, project);
+ projectService.checkHasProjectWritePermissionThrowException(loginUser,
project);
TaskDefinition taskDefinition =
taskDefinitionMapper.queryByCode(taskCode);
if (taskDefinition == null) {
@@ -591,7 +577,7 @@ public class TaskDefinitionServiceImpl extends
BaseServiceImpl implements TaskDe
public void deleteByCodeAndVersion(User loginUser, long projectCode, long
taskCode, int version) {
Project project = projectMapper.queryByCode(projectCode);
// check if user have write perm for project
- requireProjectAndWritePerm(loginUser, project);
+ projectService.checkHasProjectWritePermissionThrowException(loginUser,
project);
TaskDefinition taskDefinition =
taskDefinitionMapper.queryByCode(taskCode);
if (taskDefinition == null || projectCode !=
taskDefinition.getProjectCode()) {
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
index 2f0897aa12..6546579bf8 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
@@ -243,7 +243,7 @@ public class WorkflowDefinitionServiceImpl extends
BaseServiceImpl implements Wo
Project project = projectMapper.queryByCode(projectCode);
// check if user have write perm for project
- requireProjectAndWritePerm(loginUser, project);
+ projectService.checkHasProjectWritePermissionThrowException(loginUser,
project);
if (checkDescriptionLength(description)) {
log.warn("Parameter description is too long.");
@@ -311,17 +311,6 @@ public class WorkflowDefinitionServiceImpl extends
BaseServiceImpl implements Wo
return workflowDefinition;
}
- private void requireProjectAndWritePerm(User loginUser, Project project) {
- Map<String, Object> permResult = new HashMap<>();
- if (!projectService.hasProjectAndWritePerm(loginUser, project,
permResult)) {
- Status status = (Status) permResult.get(Constants.STATUS);
- if (status == null) {
- throw new
ServiceException(Status.USER_NO_OPERATION_PROJECT_PERM);
- }
- throw new ServiceException(status.getCode(), (String)
permResult.get(Constants.MSG));
- }
- }
-
@Override
public void saveWorkflowLineage(long projectCode,
long workflowDefinitionCode,
@@ -631,7 +620,7 @@ public class WorkflowDefinitionServiceImpl extends
BaseServiceImpl implements Wo
WorkflowExecutionTypeEnum executionType) {
Project project = projectMapper.queryByCode(projectCode);
// check if user have write perm for project
- requireProjectAndWritePerm(loginUser, project);
+ projectService.checkHasProjectWritePermissionThrowException(loginUser,
project);
if (checkDescriptionLength(description)) {
log.warn("Parameter description is too long.");
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/BaseServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/BaseServiceTest.java
index 9d7b83c5c5..14271034a9 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/BaseServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/BaseServiceTest.java
@@ -20,13 +20,9 @@ package org.apache.dolphinscheduler.api.service;
import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.service.impl.BaseServiceImpl;
import org.apache.dolphinscheduler.api.utils.Result;
-import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.common.enums.UserType;
import org.apache.dolphinscheduler.dao.entity.User;
-import java.util.HashMap;
-import java.util.Map;
-
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -59,17 +55,6 @@ public class BaseServiceTest {
@Test
public void testPutMsg() {
- Map<String, Object> result = new HashMap<>();
- baseService.putMsg(result, Status.SUCCESS);
- Assertions.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
- // has params
- baseService.putMsg(result, Status.PROJECT_NOT_FOUND, "test");
-
- }
-
- @Test
- public void testPutMsgTwo() {
-
Result result = new Result();
baseService.putMsg(result, Status.SUCCESS);
Assertions.assertEquals(Status.SUCCESS.getMsg(), result.getMsg());
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectParameterServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectParameterServiceTest.java
index 4207bed59d..51d9d580af 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectParameterServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectParameterServiceTest.java
@@ -20,14 +20,16 @@ package org.apache.dolphinscheduler.api.service;
import static
org.apache.dolphinscheduler.api.utils.ServiceTestUtil.getGeneralUser;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.when;
import org.apache.dolphinscheduler.api.AssertionsHelper;
import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.exceptions.ServiceException;
import
org.apache.dolphinscheduler.api.service.impl.ProjectParameterServiceImpl;
import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
import org.apache.dolphinscheduler.api.utils.Result;
@@ -76,16 +78,13 @@ public class ProjectParameterServiceTest {
User loginUser = getGeneralUser();
// PERMISSION DENIED
- when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(false);
- Result result =
projectParameterService.createProjectParameter(loginUser, projectCode, "key",
"value",
- DataType.VARCHAR.name());
- assertNull(result.getData());
- assertNull(result.getCode());
- assertNull(result.getMsg());
+ doThrow(new ServiceException(Status.USER_NO_WRITE_PROJECT_PERM))
+
.when(projectService).checkHasProjectWritePermissionThrowException(any(),
any());
+ assertThrows(ServiceException.class,
+ () ->
projectParameterService.createProjectParameter(loginUser, projectCode, "key",
"value",
+ DataType.VARCHAR.name()));
- when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(true);
+
doNothing().when(projectService).checkHasProjectWritePermissionThrowException(any(),
any());
// CODE GENERATION ERROR
try (MockedStatic<CodeGenerateUtils> ignored =
Mockito.mockStatic(CodeGenerateUtils.class)) {
@@ -99,7 +98,7 @@ public class ProjectParameterServiceTest {
// PROJECT_PARAMETER_ALREADY_EXISTS
when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
when(projectParameterMapper.selectOne(Mockito.any())).thenReturn(getProjectParameter());
- result = projectParameterService.createProjectParameter(loginUser,
projectCode, "key", "value",
+ Result result =
projectParameterService.createProjectParameter(loginUser, projectCode, "key",
"value",
DataType.VARCHAR.name());
assertEquals(Status.PROJECT_PARAMETER_ALREADY_EXISTS.getCode(),
result.getCode());
@@ -125,20 +124,17 @@ public class ProjectParameterServiceTest {
User loginUser = getGeneralUser();
// NO PERMISSION
- when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(false);
- Result result =
projectParameterService.updateProjectParameter(loginUser, projectCode, 1,
"key", "value",
- DataType.VARCHAR.name());
- assertNull(result.getData());
- assertNull(result.getCode());
- assertNull(result.getMsg());
+ doThrow(new ServiceException(Status.USER_NO_WRITE_PROJECT_PERM))
+
.when(projectService).checkHasProjectWritePermissionThrowException(any(),
any());
+ assertThrows(ServiceException.class,
+ () ->
projectParameterService.updateProjectParameter(loginUser, projectCode, 1,
"key", "value",
+ DataType.VARCHAR.name()));
// PROJECT_PARAMETER_NOT_EXISTS
when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
- when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(true);
+
doNothing().when(projectService).checkHasProjectWritePermissionThrowException(any(),
any());
when(projectParameterMapper.queryByCode(Mockito.anyLong())).thenReturn(null);
- result = projectParameterService.updateProjectParameter(loginUser,
projectCode, 1, "key", "value",
+ Result result =
projectParameterService.updateProjectParameter(loginUser, projectCode, 1,
"key", "value",
DataType.VARCHAR.name());
assertEquals(Status.PROJECT_PARAMETER_NOT_EXISTS.getCode(),
result.getCode());
@@ -172,19 +168,16 @@ public class ProjectParameterServiceTest {
User loginUser = getGeneralUser();
// NO PERMISSION
- when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(false);
- Result result =
projectParameterService.deleteProjectParametersByCode(loginUser, projectCode,
1);
- assertNull(result.getData());
- assertNull(result.getCode());
- assertNull(result.getMsg());
+ doThrow(new ServiceException(Status.USER_NO_WRITE_PROJECT_PERM))
+
.when(projectService).checkHasProjectWritePermissionThrowException(any(),
any());
+ assertThrows(ServiceException.class,
+ () ->
projectParameterService.deleteProjectParametersByCode(loginUser, projectCode,
1));
// PROJECT_PARAMETER_NOT_EXISTS
when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
- when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(true);
+
doNothing().when(projectService).checkHasProjectWritePermissionThrowException(any(),
any());
when(projectParameterMapper.queryByCode(Mockito.anyLong())).thenReturn(null);
- result =
projectParameterService.deleteProjectParametersByCode(loginUser, projectCode,
1);
+ Result result =
projectParameterService.deleteProjectParametersByCode(loginUser, projectCode,
1);
assertEquals(Status.PROJECT_PARAMETER_NOT_EXISTS.getCode(),
result.getCode());
// DATABASE OPERATION ERROR
@@ -204,21 +197,17 @@ public class ProjectParameterServiceTest {
User loginUser = getGeneralUser();
// NO PERMISSION
- when(projectService.hasProjectAndPerm(Mockito.any(), Mockito.any(),
Mockito.any(Result.class),
- Mockito.any()))
- .thenReturn(false);
+ doThrow(new ServiceException(Status.USER_NO_OPERATION_PROJECT_PERM))
+ .when(projectService).checkProjectAndAuthThrowException(any(),
Mockito.<Project>any(), any());
- Result result =
projectParameterService.queryProjectParameterByCode(loginUser, projectCode, 1);
- assertNull(result.getData());
- assertNull(result.getCode());
- assertNull(result.getMsg());
+ assertThrows(ServiceException.class,
+ () ->
projectParameterService.queryProjectParameterByCode(loginUser, projectCode, 1));
// PROJECT_PARAMETER_NOT_EXISTS
when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
- when(projectService.hasProjectAndPerm(Mockito.any(), Mockito.any(),
Mockito.any(Result.class),
- Mockito.any())).thenReturn(true);
+
doNothing().when(projectService).checkProjectAndAuthThrowException(any(),
Mockito.<Project>any(), any());
when(projectParameterMapper.queryByCode(Mockito.anyLong())).thenReturn(null);
- result =
projectParameterService.queryProjectParameterByCode(loginUser, projectCode, 1);
+ Result result =
projectParameterService.queryProjectParameterByCode(loginUser, projectCode, 1);
assertEquals(Status.PROJECT_PARAMETER_NOT_EXISTS.getCode(),
result.getCode());
// SUCCESS
@@ -234,27 +223,23 @@ public class ProjectParameterServiceTest {
Integer pageNo = 1;
// NO PERMISSION
- when(projectService.hasProjectAndPerm(Mockito.any(), Mockito.any(),
Mockito.any(Result.class),
- Mockito.any()))
- .thenReturn(false);
+ doThrow(new ServiceException(Status.USER_NO_OPERATION_PROJECT_PERM))
+ .when(projectService).checkProjectAndAuthThrowException(any(),
Mockito.<Project>any(), any());
- Result result =
-
projectParameterService.queryProjectParameterListPaging(loginUser, projectCode,
pageSize, pageNo, null,
- DataType.VARCHAR.name());
- assertNull(result.getData());
- assertNull(result.getCode());
- assertNull(result.getMsg());
+ assertThrows(ServiceException.class,
+ () ->
projectParameterService.queryProjectParameterListPaging(loginUser, projectCode,
pageSize, pageNo,
+ null, DataType.VARCHAR.name()));
// SUCCESS
- when(projectService.hasProjectAndPerm(any(), any(), any(Result.class),
any()))
- .thenReturn(true);
+
doNothing().when(projectService).checkProjectAndAuthThrowException(any(),
Mockito.<Project>any(), any());
Page<ProjectParameter> page = new Page<>(pageNo, pageSize);
page.setRecords(Collections.singletonList(getProjectParameter()));
when(projectParameterMapper.queryProjectParameterListPaging(any(),
anyLong(), any(), any(), any()))
.thenReturn(page);
- result =
projectParameterService.queryProjectParameterListPaging(loginUser, projectCode,
pageSize, pageNo,
+ Result result =
projectParameterService.queryProjectParameterListPaging(loginUser, projectCode,
pageSize,
+ pageNo,
null, null);
assertEquals(Status.SUCCESS.getCode(), result.getCode());
}
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectPreferenceServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectPreferenceServiceTest.java
index 7a74a7c265..4d83763521 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectPreferenceServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectPreferenceServiceTest.java
@@ -18,6 +18,7 @@
package org.apache.dolphinscheduler.api.service;
import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.exceptions.ServiceException;
import
org.apache.dolphinscheduler.api.service.impl.ProjectPreferenceServiceImpl;
import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
import org.apache.dolphinscheduler.api.utils.Result;
@@ -61,24 +62,22 @@ public class ProjectPreferenceServiceTest {
User loginUser = getGeneralUser();
// no permission
- Mockito.when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(false);
- Result result =
projectPreferenceService.updateProjectPreference(loginUser, projectCode,
"value");
- Assertions.assertNull(result.getCode());
- Assertions.assertNull(result.getData());
- Assertions.assertNull(result.getMsg());
+ Mockito.doThrow(new
ServiceException(Status.USER_NO_WRITE_PROJECT_PERM))
+
.when(projectService).checkHasProjectWritePermissionThrowException(Mockito.any(),
Mockito.any());
+ Assertions.assertThrows(ServiceException.class,
+ () ->
projectPreferenceService.updateProjectPreference(loginUser, projectCode,
"value"));
// when preference exists in project
Mockito.when(projectPreferenceMapper.selectOne(Mockito.any())).thenReturn(null);
Mockito.when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
// success
- Mockito.when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(true);
+
Mockito.doNothing().when(projectService).checkHasProjectWritePermissionThrowException(Mockito.any(),
+ Mockito.any());
Mockito.when(projectPreferenceMapper.insert(Mockito.any())).thenReturn(1);
- result = projectPreferenceService.updateProjectPreference(loginUser,
projectCode, "value");
+ Result result =
projectPreferenceService.updateProjectPreference(loginUser, projectCode,
"value");
Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode());
// database operatation fail
@@ -105,20 +104,19 @@ public class ProjectPreferenceServiceTest {
User loginUser = getGeneralUser();
// no permission
- Mockito.when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(false);
- Result result =
projectPreferenceService.queryProjectPreferenceByProjectCode(loginUser,
projectCode);
- Assertions.assertNull(result.getCode());
- Assertions.assertNull(result.getData());
- Assertions.assertNull(result.getMsg());
+ Mockito.doThrow(new
ServiceException(Status.USER_NO_OPERATION_PROJECT_PERM))
+
.when(projectService).checkProjectAndAuthThrowException(Mockito.any(),
Mockito.<Project>any(),
+ Mockito.any());
+ Assertions.assertThrows(ServiceException.class,
+ () ->
projectPreferenceService.queryProjectPreferenceByProjectCode(loginUser,
projectCode));
// PROJECT_PARAMETER_NOT_EXISTS
Mockito.when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
- Mockito.when(projectService.hasProjectAndPerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class),
- Mockito.any())).thenReturn(true);
+
Mockito.doNothing().when(projectService).checkProjectAndAuthThrowException(Mockito.any(),
+ Mockito.<Project>any(), Mockito.any());
Mockito.when(projectPreferenceMapper.selectOne(Mockito.any())).thenReturn(null);
- result =
projectPreferenceService.queryProjectPreferenceByProjectCode(loginUser,
projectCode);
+ Result result =
projectPreferenceService.queryProjectPreferenceByProjectCode(loginUser,
projectCode);
Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode());
// SUCCESS
@@ -132,21 +130,19 @@ public class ProjectPreferenceServiceTest {
User loginUser = getGeneralUser();
// no permission
- Mockito.when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(false);
- Result result =
projectPreferenceService.enableProjectPreference(loginUser, projectCode, 1);
- Assertions.assertNull(result.getCode());
- Assertions.assertNull(result.getData());
- Assertions.assertNull(result.getMsg());
+ Mockito.doThrow(new
ServiceException(Status.USER_NO_WRITE_PROJECT_PERM))
+
.when(projectService).checkHasProjectWritePermissionThrowException(Mockito.any(),
Mockito.any());
+ Assertions.assertThrows(ServiceException.class,
+ () ->
projectPreferenceService.enableProjectPreference(loginUser, projectCode, 1));
Mockito.when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
- Mockito.when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
- .thenReturn(true);
+
Mockito.doNothing().when(projectService).checkHasProjectWritePermissionThrowException(Mockito.any(),
+ Mockito.any());
// success
Mockito.when(projectPreferenceMapper.selectOne(Mockito.any())).thenReturn(getProjectPreference());
Mockito.when(projectPreferenceMapper.updateById(Mockito.any())).thenReturn(1);
- result = projectPreferenceService.enableProjectPreference(loginUser,
projectCode, 2);
+ Result result =
projectPreferenceService.enableProjectPreference(loginUser, projectCode, 2);
Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode());
// db operation fail
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java
index b50b22c5a7..afa71dd06e 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java
@@ -31,7 +31,6 @@ import
org.apache.dolphinscheduler.api.service.impl.BaseServiceImpl;
import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
import org.apache.dolphinscheduler.api.utils.PageInfo;
import org.apache.dolphinscheduler.api.utils.Result;
-import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.common.enums.AuthorizationType;
import org.apache.dolphinscheduler.common.enums.UserType;
import org.apache.dolphinscheduler.dao.entity.Project;
@@ -45,10 +44,8 @@ import
org.apache.dolphinscheduler.dao.mapper.WorkflowDefinitionMapper;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import org.junit.jupiter.api.Assertions;
@@ -158,31 +155,31 @@ public class ProjectServiceTest {
}
@Test
- public void testHasProjectAndPerm() {
+ public void testCheckHasProjectWritePermissionThrowException() {
User loginUser = getLoginUser();
Project project = getProject();
- Map<String, Object> result = new HashMap<>();
- // not exist user
- User tempUser = new User();
- tempUser.setId(Integer.MAX_VALUE);
- tempUser.setUserType(UserType.GENERAL_USER);
-
Mockito.when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.PROJECTS,
- tempUser.getId(), null, baseServiceLogger)).thenReturn(true);
- boolean checkResult = projectService.hasProjectAndPerm(tempUser,
project, result, null);
- logger.info(result.toString());
- Assertions.assertFalse(checkResult);
- // success
- result = new HashMap<>();
- project.setUserId(1);
-
Mockito.when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.PROJECTS,
- loginUser.getId(), null, baseServiceLogger)).thenReturn(true);
-
Mockito.when(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
- new Object[]{project.getId()},
- loginUser.getId(), baseServiceLogger)).thenReturn(true);
- checkResult = projectService.hasProjectAndPerm(loginUser, project,
result, null);
- logger.info(result.toString());
- Assertions.assertTrue(checkResult);
+ // PROJECT_NOT_FOUND
+ ServiceException notFoundEx =
Assertions.assertThrows(ServiceException.class,
+ () ->
projectService.checkHasProjectWritePermissionThrowException(loginUser,
(Project) null));
+ Assertions.assertEquals(Status.PROJECT_NOT_FOUND.getCode(),
notFoundEx.getCode());
+
+ // USER_NO_WRITE_PROJECT_PERM
+ project.setUserId(2);
+ ServiceException noWriteEx =
Assertions.assertThrows(ServiceException.class,
+ () ->
projectService.checkHasProjectWritePermissionThrowException(loginUser,
project));
+ Assertions.assertEquals(Status.USER_NO_WRITE_PROJECT_PERM.getCode(),
noWriteEx.getCode());
+
+ // success: admin
+ loginUser.setUserType(UserType.ADMIN_USER);
+ Assertions.assertDoesNotThrow(
+ () ->
projectService.checkHasProjectWritePermissionThrowException(loginUser,
project));
+
+ // success: project owner
+ loginUser.setUserType(UserType.GENERAL_USER);
+ project.setUserId(loginUser.getId());
+ Assertions.assertDoesNotThrow(
+ () ->
projectService.checkHasProjectWritePermissionThrowException(loginUser,
project));
}
@Test
@@ -212,50 +209,21 @@ public class ProjectServiceTest {
Assertions.assertTrue(CollectionUtils.isNotEmpty(pageInfo.getTotalList()));
}
- @Test
- public void testHasProjectAndWritePerm() {
- User loginUser = getLoginUser();
- Project project = getProject();
- Map<String, Object> result = new HashMap<>();
- // not exist user
- User tempUser = new User();
- tempUser.setId(Integer.MAX_VALUE);
- tempUser.setUserType(UserType.GENERAL_USER);
-
Mockito.when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.PROJECTS,
- tempUser.getId(), null, baseServiceLogger)).thenReturn(true);
- boolean checkResult = projectService.hasProjectAndWritePerm(tempUser,
project, result);
- logger.info(result.toString());
- Assertions.assertFalse(checkResult);
-
- // success
- result = new HashMap<>();
- project.setUserId(1);
- loginUser.setUserType(UserType.ADMIN_USER);
-
Mockito.when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.PROJECTS,
- loginUser.getId(), null, baseServiceLogger)).thenReturn(true);
-
Mockito.when(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
- new Object[]{project.getId()},
- loginUser.getId(), baseServiceLogger)).thenReturn(true);
- checkResult = projectService.hasProjectAndWritePerm(loginUser,
project, result);
- logger.info(result.toString());
- Assertions.assertTrue(checkResult);
- }
-
@Test
public void testDeleteProject() {
User loginUser = getLoginUser();
Mockito.when(projectMapper.queryByCode(1L)).thenReturn(getProject());
// PROJECT_NOT_FOUND
- Result result = projectService.deleteProject(loginUser, 11L);
- logger.info(result.toString());
- Assertions.assertTrue(Status.PROJECT_NOT_FOUND.getCode() ==
result.getCode());
+ ServiceException notFoundEx =
Assertions.assertThrows(ServiceException.class,
+ () -> projectService.deleteProject(loginUser, 11L));
+ Assertions.assertEquals(Status.PROJECT_NOT_FOUND.getCode(),
notFoundEx.getCode());
loginUser.setId(2);
- // USER_NO_OPERATION_PROJECT_PERM
- result = projectService.deleteProject(loginUser, 1L);
- logger.info(result.toString());
- Assertions.assertTrue(Status.USER_NO_WRITE_PROJECT_PERM.getCode() ==
result.getCode());
+ // USER_NO_WRITE_PROJECT_PERM
+ ServiceException noWriteEx =
Assertions.assertThrows(ServiceException.class,
+ () -> projectService.deleteProject(loginUser, 1L));
+ Assertions.assertEquals(Status.USER_NO_WRITE_PROJECT_PERM.getCode(),
noWriteEx.getCode());
// DELETE_PROJECT_ERROR_DEFINES_NOT_NULL
Mockito.when(workflowDefinitionMapper.queryAllDefinitionList(1L)).thenReturn(getProcessDefinitions());
@@ -269,16 +237,16 @@ public class ProjectServiceTest {
resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.PROJECTS,
loginUser.getId(),
PROJECT_DELETE, baseServiceLogger))
.thenReturn(true);
- result = projectService.deleteProject(loginUser, 1L);
+ Result result = projectService.deleteProject(loginUser, 1L);
logger.info(result.toString());
-
Assertions.assertTrue(Status.DELETE_PROJECT_ERROR_DEFINES_NOT_NULL.getCode() ==
result.getCode());
+
Assertions.assertEquals(Status.DELETE_PROJECT_ERROR_DEFINES_NOT_NULL.getCode(),
result.getCode().intValue());
// success
Mockito.when(projectMapper.deleteById(1)).thenReturn(1);
Mockito.when(workflowDefinitionMapper.queryAllDefinitionList(1L)).thenReturn(new
ArrayList<>());
result = projectService.deleteProject(loginUser, 1L);
logger.info(result.toString());
- Assertions.assertTrue(Status.SUCCESS.getCode() == result.getCode());
+ Assertions.assertEquals(Status.SUCCESS.getCode(),
result.getCode().intValue());
}
@Test
@@ -291,9 +259,9 @@ public class ProjectServiceTest {
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(project);
Mockito.when(projectMapper.queryByCode(2L)).thenReturn(getProject());
// PROJECT_NOT_FOUND
- Result result = projectService.update(loginUser, 1L, projectName,
"desc");
- logger.info(result.toString());
- Assertions.assertTrue(Status.PROJECT_NOT_FOUND.getCode() ==
result.getCode());
+ ServiceException notFoundEx =
Assertions.assertThrows(ServiceException.class,
+ () -> projectService.update(loginUser, 1L, projectName,
"desc"));
+ Assertions.assertEquals(Status.PROJECT_NOT_FOUND.getCode(),
notFoundEx.getCode());
// PROJECT_ALREADY_EXISTS
Mockito.when(
@@ -303,14 +271,14 @@ public class ProjectServiceTest {
Mockito.when(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
new Object[]{1},
loginUser.getId(),
baseServiceLogger)).thenReturn(true);
- result = projectService.update(loginUser, 2L, projectName, "desc");
+ Result result = projectService.update(loginUser, 2L, projectName,
"desc");
logger.info(result.toString());
- Assertions.assertTrue(Status.PROJECT_ALREADY_EXISTS.getCode() ==
result.getCode());
+ Assertions.assertEquals(Status.PROJECT_ALREADY_EXISTS.getCode(),
result.getCode().intValue());
// USER_NOT_EXIST
Mockito.when(userMapper.selectById(Mockito.any())).thenReturn(null);
result = projectService.update(loginUser, 2L, "test", "desc");
- Assertions.assertTrue(Status.USER_NOT_EXIST.getCode() ==
result.getCode());
+ Assertions.assertEquals(Status.USER_NOT_EXIST.getCode(),
result.getCode().intValue());
// success
Mockito.when(userMapper.selectById(Mockito.any())).thenReturn(new
User());
@@ -318,7 +286,7 @@ public class ProjectServiceTest {
Mockito.when(projectMapper.updateById(Mockito.any(Project.class))).thenReturn(1);
result = projectService.update(loginUser, 2L, "test", "desc");
logger.info(result.toString());
- Assertions.assertTrue(Status.SUCCESS.getCode() == result.getCode());
+ Assertions.assertEquals(Status.SUCCESS.getCode(),
result.getCode().intValue());
}
@@ -347,16 +315,16 @@ public class ProjectServiceTest {
public void testQueryAuthorizedUser() {
final User loginUser = this.getLoginUser();
- // Failure 1: PROJECT_NOT_FOUND
- Result result = this.projectService.queryAuthorizedUser(loginUser,
3682329499136L);
- logger.info("FAILURE 1: {}", result.toString());
- Assertions.assertTrue(Status.PROJECT_NOT_FOUND.getCode() ==
result.getCode());
+ // Failure 1: PROJECT_NOT_EXIST
+ ServiceException notFoundEx =
Assertions.assertThrows(ServiceException.class,
+ () -> this.projectService.queryAuthorizedUser(loginUser,
3682329499136L));
+ Assertions.assertEquals(Status.PROJECT_NOT_EXIST.getCode(),
notFoundEx.getCode());
// Failure 2: USER_NO_OPERATION_PROJECT_PERM
Mockito.when(this.projectMapper.queryByCode(Mockito.anyLong())).thenReturn(this.getProject());
- result = this.projectService.queryAuthorizedUser(loginUser,
3682329499136L);
- logger.info("FAILURE 2: {}", result.toString());
- Assertions.assertTrue(Status.USER_NO_OPERATION_PROJECT_PERM.getCode()
== result.getCode());
+ ServiceException noPermEx =
Assertions.assertThrows(ServiceException.class,
+ () -> this.projectService.queryAuthorizedUser(loginUser,
3682329499136L));
+
Assertions.assertEquals(Status.USER_NO_OPERATION_PROJECT_PERM.getCode(),
noPermEx.getCode());
// SUCCESS
loginUser.setUserType(UserType.ADMIN_USER);
@@ -367,7 +335,7 @@ public class ProjectServiceTest {
Mockito.when(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
new Object[]{1},
0, baseServiceLogger)).thenReturn(true);
Mockito.when(this.userMapper.queryAuthedUserListByProjectId(1)).thenReturn(this.getUserList());
- result = this.projectService.queryAuthorizedUser(loginUser,
3682329499136L);
+ Result result = this.projectService.queryAuthorizedUser(loginUser,
3682329499136L);
logger.info("SUCCESS 1: {}", result.toString());
List<User> users = (List<User>) result.getData();
Assertions.assertTrue(CollectionUtils.isNotEmpty(users));
@@ -391,9 +359,8 @@ public class ProjectServiceTest {
// success
loginUser.setUserType(UserType.ADMIN_USER);
- Map<String, Object> result =
projectService.queryProjectCreatedByUser(loginUser);
- logger.info(result.toString());
- List<Project> projects = (List<Project>)
result.get(Constants.DATA_LIST);
+ List<Project> projects =
projectService.queryProjectCreatedByUser(loginUser);
+ logger.info("projects size {}", projects.size());
Assertions.assertTrue(CollectionUtils.isNotEmpty(projects));
}
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectWorkerGroupRelationServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectWorkerGroupRelationServiceTest.java
index 54c95fadc2..28c101d2db 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectWorkerGroupRelationServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectWorkerGroupRelationServiceTest.java
@@ -24,7 +24,6 @@ import org.apache.dolphinscheduler.api.AssertionsHelper;
import org.apache.dolphinscheduler.api.enums.Status;
import
org.apache.dolphinscheduler.api.service.impl.ProjectWorkerGroupRelationServiceImpl;
import org.apache.dolphinscheduler.api.utils.Result;
-import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.dao.entity.Project;
import org.apache.dolphinscheduler.dao.entity.ProjectWorkerGroup;
import org.apache.dolphinscheduler.dao.entity.TaskDefinition;
@@ -40,7 +39,6 @@ import
org.apache.dolphinscheduler.dao.repository.WorkerGroupDao;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -184,21 +182,18 @@ public class ProjectWorkerGroupRelationServiceTest {
@Test
public void testQueryAssignedWorkerGroupsByProject() {
- // no permission - hasProjectAndPerm should populate the status into
the result map and return false
- Mockito.when(projectService.hasProjectAndPerm(Mockito.any(),
Mockito.any(), Mockito.anyMap(), Mockito.any()))
- .thenAnswer(invocation -> {
- Map<String, Object> permResult = invocation.getArgument(2);
- permResult.put(Constants.STATUS,
Status.USER_NO_OPERATION_PROJECT_PERM);
- permResult.put(Constants.MSG,
Status.USER_NO_OPERATION_PROJECT_PERM.getMsg());
- return false;
- });
+ // no permission - checkProjectAndAuthThrowException throws
ServiceException
+ Mockito.doThrow(new
org.apache.dolphinscheduler.api.exceptions.ServiceException(
+ Status.USER_NO_OPERATION_PROJECT_PERM))
+
.when(projectService).checkProjectAndAuthThrowException(Mockito.any(),
Mockito.<Project>any(),
+ Mockito.any());
AssertionsHelper.assertThrowsServiceException(Status.USER_NO_OPERATION_PROJECT_PERM,
() ->
projectWorkerGroupRelationService.queryAssignedWorkerGroupsByProject(getGeneralUser(),
projectCode));
// success
- Mockito.when(projectService.hasProjectAndPerm(Mockito.any(),
Mockito.any(), Mockito.anyMap(), Mockito.any()))
- .thenReturn(true);
+
Mockito.doNothing().when(projectService).checkProjectAndAuthThrowException(Mockito.any(),
+ Mockito.<Project>any(), Mockito.any());
Mockito.when(projectMapper.queryByCode(projectCode))
.thenReturn(getProject());
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
index 35ee263461..2f2e601757 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
@@ -175,7 +175,7 @@ public class TaskDefinitionServiceImplTest {
public void deleteByCodeAndVersion() {
Project project = getProject();
when(projectMapper.queryByCode(PROJECT_CODE)).thenReturn(project);
- when(projectService.hasProjectAndWritePerm(eq(user), eq(project),
any(Map.class))).thenReturn(true);
+
Mockito.doNothing().when(projectService).checkHasProjectWritePermissionThrowException(eq(user),
eq(project));
// cross-project privilege escalation: taskCode belongs to another
project - must be rejected
TaskDefinition otherProjectTask = new TaskDefinition();
@@ -349,7 +349,8 @@ public class TaskDefinitionServiceImplTest {
user.setUserType(UserType.ADMIN_USER);
when(projectMapper.queryByCode(PROJECT_CODE)).thenReturn(getProject());
- when(projectService.hasProjectAndWritePerm(eq(user),
eq(getProject()), any(Map.class))).thenReturn(true);
+
Mockito.doNothing().when(projectService).checkHasProjectWritePermissionThrowException(eq(user),
+ eq(getProject()));
when(taskDefinitionMapper.queryByCode(TASK_CODE)).thenReturn(taskDefinition);
when(taskDefinitionLogMapper.queryMaxVersionForDefinition(TASK_CODE)).thenReturn(1);
when(taskDefinitionMapper.updateById(Mockito.any())).thenReturn(1);
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java
index 4005452ef4..745c2ebd45 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java
@@ -815,11 +815,9 @@ public class WorkflowDefinitionServiceTest extends
BaseServiceTestTool {
@Test
public void testUpdateWorkflowDefinition() {
- Map<String, Object> result = new HashMap<>();
-
Project project = getProject(projectCode);
when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
- when(projectService.hasProjectAndWritePerm(user, project,
result)).thenReturn(true);
+
Mockito.doNothing().when(projectService).checkHasProjectWritePermissionThrowException(user,
project);
try {
workflowDefinitionService.updateWorkflowDefinition(user,
projectCode, "test", 1,
@@ -834,7 +832,7 @@ public class WorkflowDefinitionServiceTest extends
BaseServiceTestTool {
public void testCreateWorkflowDefinitionShouldSyncVersionToResponse() {
Project project = getProject(projectCode);
when(projectMapper.queryByCode(projectCode)).thenReturn(project);
- when(projectService.hasProjectAndWritePerm(eq(user), eq(project),
any(Map.class))).thenReturn(true);
+
Mockito.doNothing().when(projectService).checkHasProjectWritePermissionThrowException(eq(user),
eq(project));
when(workflowDefinitionMapper.verifyByDefineName(projectCode,
name)).thenReturn(null);
when(processService.transformTask(anyList(),
anyList())).thenReturn(getTaskNodeList());
when(processService.saveTaskDefine(eq(user), eq(projectCode),
anyList(), eq(Boolean.TRUE))).thenReturn(1);
@@ -857,7 +855,7 @@ public class WorkflowDefinitionServiceTest extends
BaseServiceTestTool {
WorkflowDefinition workflowDefinition = getWorkflowDefinition();
workflowDefinition.setName("origin-name");
when(projectMapper.queryByCode(projectCode)).thenReturn(project);
- when(projectService.hasProjectAndWritePerm(eq(user), eq(project),
any(Map.class))).thenReturn(true);
+
Mockito.doNothing().when(projectService).checkHasProjectWritePermissionThrowException(eq(user),
eq(project));
when(processService.transformTask(anyList(),
anyList())).thenReturn(getTaskNodeList());
when(workflowDefinitionMapper.queryByCode(processDefinitionCode)).thenReturn(workflowDefinition);
when(workflowDefinitionMapper.verifyByDefineName(projectCode,
name)).thenReturn(null);