|
|
|
@ -17,12 +17,15 @@
|
|
|
|
|
|
|
|
|
|
package org.apache.dolphinscheduler.api.service; |
|
|
|
|
|
|
|
|
|
import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.*; |
|
|
|
|
import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ACCESS_TOKEN_DELETE; |
|
|
|
|
import static org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ACCESS_TOKEN_UPDATE; |
|
|
|
|
|
|
|
|
|
import static org.junit.Assert.assertEquals; |
|
|
|
|
import static org.mockito.ArgumentMatchers.any; |
|
|
|
|
import static org.mockito.ArgumentMatchers.eq; |
|
|
|
|
import static org.mockito.Mockito.when; |
|
|
|
|
|
|
|
|
|
import org.apache.dolphinscheduler.api.enums.Status; |
|
|
|
|
import org.apache.dolphinscheduler.api.permission.ResourcePermissionCheckService; |
|
|
|
|
import org.apache.dolphinscheduler.api.service.impl.AccessTokenServiceImpl; |
|
|
|
|
import org.apache.dolphinscheduler.api.service.impl.BaseServiceImpl; |
|
|
|
|
import org.apache.dolphinscheduler.api.utils.PageInfo; |
|
|
|
@ -38,10 +41,11 @@ import org.apache.dolphinscheduler.dao.mapper.AccessTokenMapper;
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Calendar; |
|
|
|
|
import java.util.Date; |
|
|
|
|
import java.util.HashSet; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Set; |
|
|
|
|
|
|
|
|
|
import org.apache.dolphinscheduler.api.permission.ResourcePermissionCheckService; |
|
|
|
|
import org.assertj.core.util.Lists; |
|
|
|
|
import org.junit.Assert; |
|
|
|
|
import org.junit.Test; |
|
|
|
@ -50,6 +54,7 @@ import org.mockito.InjectMocks;
|
|
|
|
|
import org.mockito.Mock; |
|
|
|
|
import org.mockito.Mockito; |
|
|
|
|
import org.mockito.junit.MockitoJUnitRunner; |
|
|
|
|
import org.powermock.api.mockito.PowerMockito; |
|
|
|
|
import org.slf4j.Logger; |
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
|
|
|
@ -63,6 +68,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
public class AccessTokenServiceTest { |
|
|
|
|
private static final Logger baseServiceLogger = LoggerFactory.getLogger(BaseServiceImpl.class); |
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(AccessTokenServiceTest.class); |
|
|
|
|
private static final Logger serviceLogger = LoggerFactory.getLogger(AccessTokenServiceImpl.class); |
|
|
|
|
|
|
|
|
|
@InjectMocks |
|
|
|
|
private AccessTokenServiceImpl accessTokenService; |
|
|
|
@ -82,31 +88,34 @@ public class AccessTokenServiceTest {
|
|
|
|
|
User user = new User(); |
|
|
|
|
user.setId(1); |
|
|
|
|
user.setUserType(UserType.ADMIN_USER); |
|
|
|
|
when(accessTokenMapper.selectAccessTokenPage(any(Page.class), eq("zhangsan"), eq(0))).thenReturn(tokenPage); |
|
|
|
|
|
|
|
|
|
Set<Integer> tokenIds = new HashSet<>(); |
|
|
|
|
tokenIds.add(1); |
|
|
|
|
when(resourcePermissionCheckService.userOwnedResourceIdsAcquisition(AuthorizationType.ACCESS_TOKEN, user.getId(), serviceLogger)).thenReturn(new HashSet()); |
|
|
|
|
Result result = accessTokenService.queryAccessTokenList(user, "zhangsan", 1, 10); |
|
|
|
|
PageInfo<AccessToken> pageInfo = (PageInfo<AccessToken>) result.getData(); |
|
|
|
|
assertEquals(0, (int) pageInfo.getTotal()); |
|
|
|
|
|
|
|
|
|
PowerMockito.when(resourcePermissionCheckService.userOwnedResourceIdsAcquisition(AuthorizationType.ACCESS_TOKEN, user.getId(), serviceLogger)).thenReturn(tokenIds); |
|
|
|
|
Mockito.when(accessTokenMapper.selectAccessTokenPage(Mockito.any(Page.class), Mockito.anyList(),Mockito.eq("zhangsan"))).thenReturn(tokenPage); |
|
|
|
|
|
|
|
|
|
result = accessTokenService.queryAccessTokenList(user, "zhangsan", 1, 10); |
|
|
|
|
pageInfo = (PageInfo<AccessToken>) result.getData(); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertTrue(pageInfo.getTotal() > 0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void testQueryAccessTokenByUser() { |
|
|
|
|
List<AccessToken> accessTokenList = Lists.newArrayList(this.getEntity()); |
|
|
|
|
Mockito.when(this.accessTokenMapper.queryAccessTokenByUser(Mockito.anyInt())).thenReturn(accessTokenList); |
|
|
|
|
|
|
|
|
|
// USER_NO_OPERATION_PERM
|
|
|
|
|
User user = this.getLoginUser(); |
|
|
|
|
user.setUserType(UserType.GENERAL_USER); |
|
|
|
|
Map<String, Object> result = this.accessTokenService.queryAccessTokenByUser(user, 3); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.USER_NO_OPERATION_PERM, result.get(Constants.STATUS)); |
|
|
|
|
|
|
|
|
|
// SUCCESS
|
|
|
|
|
user.setUserType(UserType.ADMIN_USER); |
|
|
|
|
result = this.accessTokenService.queryAccessTokenByUser(user, 1); |
|
|
|
|
List<AccessToken> accessTokenList = Lists.newArrayList(this.getEntity()); |
|
|
|
|
|
|
|
|
|
Set<Integer> tokenIds = new HashSet<>(); |
|
|
|
|
tokenIds.add(1); |
|
|
|
|
Mockito.when(resourcePermissionCheckService.userOwnedResourceIdsAcquisition(AuthorizationType.ACCESS_TOKEN, user.getId(), serviceLogger)).thenReturn(tokenIds); |
|
|
|
|
Map<String, Object> result = this.accessTokenService.queryAccessTokenByUser(user, 1); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); |
|
|
|
|
assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@ -115,12 +124,12 @@ public class AccessTokenServiceTest {
|
|
|
|
|
when(accessTokenMapper.insert(any(AccessToken.class))).thenReturn(2); |
|
|
|
|
Result result = accessTokenService.createToken(getLoginUser(), 1, getDate(), "AccessTokenServiceTest"); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.SUCCESS.getCode(), result.getCode().intValue()); |
|
|
|
|
assertEquals(Status.SUCCESS.getCode(), result.getCode().intValue()); |
|
|
|
|
|
|
|
|
|
// Token is absent
|
|
|
|
|
result = this.accessTokenService.createToken(getLoginUser(), 1, getDate(), null); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.SUCCESS.getCode(), result.getCode().intValue()); |
|
|
|
|
assertEquals(Status.SUCCESS.getCode(), result.getCode().intValue()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@ -128,11 +137,9 @@ public class AccessTokenServiceTest {
|
|
|
|
|
User user = new User(); |
|
|
|
|
user.setId(1); |
|
|
|
|
user.setUserType(UserType.ADMIN_USER); |
|
|
|
|
Mockito.when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.ACCESS_TOKEN, 1, ACCESS_TOKEN_CREATE, baseServiceLogger)).thenReturn(true); |
|
|
|
|
Mockito.when(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.ACCESS_TOKEN, null, 0, baseServiceLogger)).thenReturn(true); |
|
|
|
|
Map<String, Object> result = accessTokenService.generateToken(getLoginUser(), Integer.MAX_VALUE,getDate()); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); |
|
|
|
|
assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); |
|
|
|
|
String token = (String) result.get(Constants.DATA_LIST); |
|
|
|
|
Assert.assertNotNull(token); |
|
|
|
|
} |
|
|
|
@ -145,21 +152,22 @@ public class AccessTokenServiceTest {
|
|
|
|
|
userLogin.setId(1); |
|
|
|
|
userLogin.setUserType(UserType.ADMIN_USER); |
|
|
|
|
Mockito.when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.ACCESS_TOKEN, 1, ACCESS_TOKEN_DELETE, baseServiceLogger)).thenReturn(true); |
|
|
|
|
Mockito.when(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.ACCESS_TOKEN, new Object[]{0}, 0, baseServiceLogger)).thenReturn(true); |
|
|
|
|
// not exist
|
|
|
|
|
Map<String, Object> result = accessTokenService.delAccessTokenById(userLogin, 0); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.ACCESS_TOKEN_NOT_EXIST, result.get(Constants.STATUS)); |
|
|
|
|
assertEquals(Status.ACCESS_TOKEN_NOT_EXIST, result.get(Constants.STATUS)); |
|
|
|
|
// no operate
|
|
|
|
|
result = accessTokenService.delAccessTokenById(userLogin, 1); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.USER_NO_OPERATION_PERM, result.get(Constants.STATUS)); |
|
|
|
|
assertEquals(Status.USER_NO_OPERATION_PERM, result.get(Constants.STATUS)); |
|
|
|
|
//success
|
|
|
|
|
userLogin.setId(1); |
|
|
|
|
userLogin.setUserType(UserType.ADMIN_USER); |
|
|
|
|
Mockito.when(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.ACCESS_TOKEN, new Object[]{1}, 0, baseServiceLogger)).thenReturn(true); |
|
|
|
|
result = accessTokenService.delAccessTokenById(userLogin, 1); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); |
|
|
|
|
assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@ -173,20 +181,20 @@ public class AccessTokenServiceTest {
|
|
|
|
|
when(accessTokenMapper.selectById(1)).thenReturn(getEntity()); |
|
|
|
|
Map<String, Object> result = accessTokenService.updateToken(getLoginUser(), 1,Integer.MAX_VALUE,getDate(),"token"); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); |
|
|
|
|
assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); |
|
|
|
|
Assert.assertNotNull(result.get(Constants.DATA_LIST)); |
|
|
|
|
|
|
|
|
|
// Token is absent
|
|
|
|
|
result = accessTokenService.updateToken(getLoginUser(), 1, Integer.MAX_VALUE,getDate(),null); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); |
|
|
|
|
assertEquals(Status.SUCCESS, result.get(Constants.STATUS)); |
|
|
|
|
Assert.assertNotNull(result.get(Constants.DATA_LIST)); |
|
|
|
|
|
|
|
|
|
// ACCESS_TOKEN_NOT_EXIST
|
|
|
|
|
Mockito.when(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.ACCESS_TOKEN, new Object[]{2}, 0, baseServiceLogger)).thenReturn(true); |
|
|
|
|
result = accessTokenService.updateToken(getLoginUser(), 2,Integer.MAX_VALUE,getDate(),"token"); |
|
|
|
|
logger.info(result.toString()); |
|
|
|
|
Assert.assertEquals(Status.ACCESS_TOKEN_NOT_EXIST, result.get(Constants.STATUS)); |
|
|
|
|
assertEquals(Status.ACCESS_TOKEN_NOT_EXIST, result.get(Constants.STATUS)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private User getLoginUser() { |
|
|
|
|