This is an automated email from the ASF dual-hosted git repository.
chufenggao 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 20518682bb [Improvement-12853][UT] Improve the ut of
ResourcePermissionCheckServiceTest (#12854)
20518682bb is described below
commit 20518682bbc1970f3250ece24c35bddf35241a98
Author: rickchengx <[email protected]>
AuthorDate: Sat Nov 19 15:12:12 2022 +0800
[Improvement-12853][UT] Improve the ut of
ResourcePermissionCheckServiceTest (#12854)
---
.../ResourcePermissionCheckServiceTest.java | 126 ++++++++++++---------
1 file changed, 74 insertions(+), 52 deletions(-)
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/permission/ResourcePermissionCheckServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/permission/ResourcePermissionCheckServiceTest.java
index 2bef0d5e65..457bd90a91 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/permission/ResourcePermissionCheckServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/permission/ResourcePermissionCheckServiceTest.java
@@ -14,8 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.api.permission;
+import org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant;
import org.apache.dolphinscheduler.common.enums.AuthorizationType;
import org.apache.dolphinscheduler.common.enums.UserType;
import org.apache.dolphinscheduler.dao.entity.Project;
@@ -23,21 +25,19 @@ import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
import org.apache.dolphinscheduler.service.process.ProcessService;
-import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.context.ApplicationContext;
/**
* permission service test
@@ -53,73 +53,95 @@ public class ResourcePermissionCheckServiceTest {
@Mock
private ProjectMapper projectMapper;
- @Mock
- private ApplicationContext context;
- @Mock
- private ResourcePermissionCheckService<Object>
resourcePermissionCheckService;
-
@InjectMocks
- ResourcePermissionCheckServiceImpl resourcePermissionCheckServices;
+ ResourcePermissionCheckServiceImpl resourcePermissionCheckService;
- protected static final Map<AuthorizationType,
ResourcePermissionCheckServiceImpl.ResourceAcquisitionAndPermissionCheck<?>>
RESOURCE_LIST_MAP =
- new ConcurrentHashMap<>();
+ @BeforeEach
+ public void setup() {
+
ResourcePermissionCheckServiceImpl.RESOURCE_LIST_MAP.put(AuthorizationType.PROJECTS,
+ new
ResourcePermissionCheckServiceImpl.ProjectsResourcePermissionCheck(projectMapper));
+ }
@Test
public void testResourcePermissionCheck() {
- User user = new User();
- user.setId(1);
- Object[] obj = new Object[]{1, 2};
- boolean result =
this.resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
obj,
- user.getId(), logger);
- Assertions.assertFalse(result);
+ User user = getGeneralUser();
+
+
Assertions.assertTrue(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
null,
+ user.getId(), logger));
+
+ List<Project> projects = Arrays.asList(getProject(1), getProject(2),
getProject(3));
+ Mockito.when(projectMapper.listAuthorizedProjects(user.getId(),
null)).thenReturn(projects);
+
+
Assertions.assertTrue(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
+ new Object[]{}, user.getId(), logger));
+
Assertions.assertTrue(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
+ new Object[]{1, 2}, user.getId(), logger));
+
Assertions.assertFalse(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
+ new Object[]{1, 2, 3, 4}, user.getId(), logger));
+
Assertions.assertFalse(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
+ new Object[]{2, 3, 4}, user.getId(), logger));
+
Assertions.assertFalse(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.PROJECTS,
+ new Object[]{4, 5}, user.getId(), logger));
}
@Test
public void testOperationPermissionCheck() {
- User user = new User();
- user.setId(1);
- resourcePermissionCheckServices.setApplicationContext(context);
-
Assertions.assertFalse(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.PROJECTS,
- user.getId(), null, logger));
- String sourceUrl = "/tmp/";
+ User user = getGeneralUser();
+
+
Mockito.when(processService.getUserById(user.getId())).thenReturn(null);
Assertions.assertFalse(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.PROJECTS,
- user.getId(), sourceUrl, logger));
+ user.getId(), ApiFuncIdentificationConstant.PROJECT, logger));
+
+
Mockito.when(processService.getUserById(user.getId())).thenReturn(user);
+
Assertions.assertTrue(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.PROJECTS,
+ user.getId(), ApiFuncIdentificationConstant.PROJECT, logger));
}
@Test
public void testUserOwnedResourceIdsAcquisition() {
+ User generalUser = getGeneralUser();
+
Mockito.when(processService.getUserById(generalUser.getId())).thenReturn(null);
+ Assertions.assertEquals(0, resourcePermissionCheckService
+ .userOwnedResourceIdsAcquisition(AuthorizationType.PROJECTS,
generalUser.getId(), logger).size());
+
+ // GENERAL_USER
+ List<Project> projects = Arrays.asList(getProject(1), getProject(2),
getProject(3));
+
Mockito.when(processService.getUserById(generalUser.getId())).thenReturn(generalUser);
+ Mockito.when(projectMapper.listAuthorizedProjects(generalUser.getId(),
null)).thenReturn(projects);
+ Assertions.assertEquals(3, resourcePermissionCheckService
+ .userOwnedResourceIdsAcquisition(AuthorizationType.PROJECTS,
generalUser.getId(), logger).size());
+
+ // ADMIN_USER
+ User adminUser = getAdminUser();
+
Mockito.when(processService.getUserById(adminUser.getId())).thenReturn(adminUser);
+ Mockito.when(projectMapper.listAuthorizedProjects(0,
null)).thenReturn(projects);
+ Assertions.assertEquals(3, resourcePermissionCheckService
+ .userOwnedResourceIdsAcquisition(AuthorizationType.PROJECTS,
adminUser.getId(), logger).size());
+ }
+
+ private User getGeneralUser() {
+ User user = new User();
+ user.setId(2);
+ user.setUserType(UserType.GENERAL_USER);
+ user.setUserName("userTest0001");
+ user.setUserPassword("userTest0001");
+ return user;
+ }
+
+ private User getAdminUser() {
User user = new User();
user.setId(1);
- // ADMIN
user.setUserType(UserType.ADMIN_USER);
- Set result =
resourcePermissionCheckServices.userOwnedResourceIdsAcquisition(AuthorizationType.PROJECTS,
- user.getId(),
- logger);
- Assertions.assertNotNull(result);
+ user.setUserName("userTest0001");
+ user.setUserPassword("userTest0001");
+ return user;
}
- @Test
- public void testSetApplication() {
- resourcePermissionCheckServices.setApplicationContext(context);
- }
- /**
- * create entity
- */
- private Project getEntity() {
+ private Project getProject(int projectId) {
Project project = new Project();
- project.setId(1);
- project.setUserId(1);
- project.setName("permissionsTest");
- project.setUserName("permissionTest");
+ project.setCode(1L);
+ project.setId(projectId);
+ project.setName("projectName");
return project;
}
-
- /**
- * entity list
- */
- private List<Project> getList() {
- List<Project> list = new ArrayList<>();
- list.add(getEntity());
- return list;
- }
}