mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-01 02:38:43 +08:00 
			
		
		
		
	完成 OAuth2 的客户端模块
This commit is contained in:
		| @@ -197,7 +197,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||||
|         // mock 缓存登录用户到 Redis | ||||
|         OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class, o -> o.setUserId(1L) | ||||
|                 .setUserType(UserTypeEnum.ADMIN.getValue())); | ||||
|         when(oauth2TokenService.createAccessToken(eq(1L), eq(UserTypeEnum.ADMIN.getValue()), eq(1L))) | ||||
|         when(oauth2TokenService.createAccessToken(eq(1L), eq(UserTypeEnum.ADMIN.getValue()), eq("default"))) | ||||
|                 .thenReturn(accessTokenDO); | ||||
|  | ||||
|         // 调用, 并断言异常 | ||||
|   | ||||
| @@ -8,19 +8,23 @@ import cn.iocoder.yudao.module.system.controller.admin.auth.vo.client.OAuth2Clie | ||||
| import cn.iocoder.yudao.module.system.controller.admin.auth.vo.client.OAuth2ClientUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.system.dal.dataobject.auth.OAuth2ClientDO; | ||||
| import cn.iocoder.yudao.module.system.dal.mysql.auth.OAuth2ClientMapper; | ||||
| import cn.iocoder.yudao.module.system.mq.producer.auth.OAuth2ClientProducer; | ||||
| import org.junit.jupiter.api.Disabled; | ||||
| import org.junit.jupiter.api.Test; | ||||
| import org.springframework.boot.test.mock.mockito.MockBean; | ||||
| import org.springframework.context.annotation.Import; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
| import java.util.Map; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | ||||
| import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | ||||
| import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.OAUTH2_CLIENT_NOT_EXISTS; | ||||
| import static org.junit.jupiter.api.Assertions.*; | ||||
| import static org.mockito.Mockito.verify; | ||||
|  | ||||
| /** | ||||
| * {@link OAuth2ClientServiceImpl} 的单元测试类 | ||||
| @@ -31,40 +35,66 @@ import static org.junit.jupiter.api.Assertions.*; | ||||
| public class OAuth2ClientServiceImplTest extends BaseDbUnitTest { | ||||
|  | ||||
|     @Resource | ||||
|     private OAuth2ClientServiceImpl oAuth2ClientService; | ||||
|     private OAuth2ClientServiceImpl oauth2ClientService; | ||||
|  | ||||
|     @Resource | ||||
|     private OAuth2ClientMapper oAuth2ClientMapper; | ||||
|     private OAuth2ClientMapper oauth2ClientMapper; | ||||
|  | ||||
|     @MockBean | ||||
|     private OAuth2ClientProducer oauth2ClientProducer; | ||||
|  | ||||
|     @Test | ||||
|     public void testInitLocalCache() { | ||||
|         // mock 数据 | ||||
|         OAuth2ClientDO clientDO1 = randomPojo(OAuth2ClientDO.class); | ||||
|         oauth2ClientMapper.insert(clientDO1); | ||||
|         OAuth2ClientDO clientDO2 = randomPojo(OAuth2ClientDO.class); | ||||
|         oauth2ClientMapper.insert(clientDO2); | ||||
|  | ||||
|         // 调用 | ||||
|         oauth2ClientService.initLocalCache(); | ||||
|         // 断言 clientCache 缓存 | ||||
|         Map<String, OAuth2ClientDO> clientCache = oauth2ClientService.getClientCache(); | ||||
|         assertEquals(2, clientCache.size()); | ||||
|         assertPojoEquals(clientDO1, clientCache.get(clientDO1.getClientId())); | ||||
|         assertPojoEquals(clientDO2, clientCache.get(clientDO2.getClientId())); | ||||
|         // 断言 maxUpdateTime 缓存 | ||||
|         assertEquals(max(clientDO1.getUpdateTime(), clientDO2.getUpdateTime()), oauth2ClientService.getMaxUpdateTime()); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testCreateOAuth2Client_success() { | ||||
|         // 准备参数 | ||||
|         OAuth2ClientCreateReqVO reqVO = randomPojo(OAuth2ClientCreateReqVO.class); | ||||
|         OAuth2ClientCreateReqVO reqVO = randomPojo(OAuth2ClientCreateReqVO.class, | ||||
|                 o -> o.setLogo(randomString())); | ||||
|  | ||||
|         // 调用 | ||||
|         Long oauth2ClientId = oAuth2ClientService.createOAuth2Client(reqVO); | ||||
|         Long oauth2ClientId = oauth2ClientService.createOAuth2Client(reqVO); | ||||
|         // 断言 | ||||
|         assertNotNull(oauth2ClientId); | ||||
|         // 校验记录的属性是否正确 | ||||
|         OAuth2ClientDO oAuth2Client = oAuth2ClientMapper.selectById(oauth2ClientId); | ||||
|         OAuth2ClientDO oAuth2Client = oauth2ClientMapper.selectById(oauth2ClientId); | ||||
|         assertPojoEquals(reqVO, oAuth2Client); | ||||
|         verify(oauth2ClientProducer).sendOAuth2ClientRefreshMessage(); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testUpdateOAuth2Client_success() { | ||||
|         // mock 数据 | ||||
|         OAuth2ClientDO dbOAuth2Client = randomPojo(OAuth2ClientDO.class); | ||||
|         oAuth2ClientMapper.insert(dbOAuth2Client);// @Sql: 先插入出一条存在的数据 | ||||
|         oauth2ClientMapper.insert(dbOAuth2Client);// @Sql: 先插入出一条存在的数据 | ||||
|         // 准备参数 | ||||
|         OAuth2ClientUpdateReqVO reqVO = randomPojo(OAuth2ClientUpdateReqVO.class, o -> { | ||||
|             o.setId(dbOAuth2Client.getId()); // 设置更新的 ID | ||||
|             o.setLogo(randomString()); | ||||
|         }); | ||||
|  | ||||
|         // 调用 | ||||
|         oAuth2ClientService.updateOAuth2Client(reqVO); | ||||
|         oauth2ClientService.updateOAuth2Client(reqVO); | ||||
|         // 校验是否更新正确 | ||||
|         OAuth2ClientDO oAuth2Client = oAuth2ClientMapper.selectById(reqVO.getId()); // 获取最新的 | ||||
|         OAuth2ClientDO oAuth2Client = oauth2ClientMapper.selectById(reqVO.getId()); // 获取最新的 | ||||
|         assertPojoEquals(reqVO, oAuth2Client); | ||||
|         verify(oauth2ClientProducer).sendOAuth2ClientRefreshMessage(); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
| @@ -73,21 +103,22 @@ public class OAuth2ClientServiceImplTest extends BaseDbUnitTest { | ||||
|         OAuth2ClientUpdateReqVO reqVO = randomPojo(OAuth2ClientUpdateReqVO.class); | ||||
|  | ||||
|         // 调用, 并断言异常 | ||||
|         assertServiceException(() -> oAuth2ClientService.updateOAuth2Client(reqVO), OAUTH2_CLIENT_NOT_EXISTS); | ||||
|         assertServiceException(() -> oauth2ClientService.updateOAuth2Client(reqVO), OAUTH2_CLIENT_NOT_EXISTS); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testDeleteOAuth2Client_success() { | ||||
|         // mock 数据 | ||||
|         OAuth2ClientDO dbOAuth2Client = randomPojo(OAuth2ClientDO.class); | ||||
|         oAuth2ClientMapper.insert(dbOAuth2Client);// @Sql: 先插入出一条存在的数据 | ||||
|         oauth2ClientMapper.insert(dbOAuth2Client);// @Sql: 先插入出一条存在的数据 | ||||
|         // 准备参数 | ||||
|         Long id = dbOAuth2Client.getId(); | ||||
|  | ||||
|         // 调用 | ||||
|         oAuth2ClientService.deleteOAuth2Client(id); | ||||
|        // 校验数据不存在了 | ||||
|        assertNull(oAuth2ClientMapper.selectById(id)); | ||||
|         oauth2ClientService.deleteOAuth2Client(id); | ||||
|         // 校验数据不存在了 | ||||
|         assertNull(oauth2ClientMapper.selectById(id)); | ||||
|         verify(oauth2ClientProducer).sendOAuth2ClientRefreshMessage(); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
| @@ -96,7 +127,7 @@ public class OAuth2ClientServiceImplTest extends BaseDbUnitTest { | ||||
|         Long id = randomLongId(); | ||||
|  | ||||
|         // 调用, 并断言异常 | ||||
|         assertServiceException(() -> oAuth2ClientService.deleteOAuth2Client(id), OAUTH2_CLIENT_NOT_EXISTS); | ||||
|         assertServiceException(() -> oauth2ClientService.deleteOAuth2Client(id), OAUTH2_CLIENT_NOT_EXISTS); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
| @@ -107,18 +138,18 @@ public class OAuth2ClientServiceImplTest extends BaseDbUnitTest { | ||||
|            o.setName("潜龙"); | ||||
|            o.setStatus(CommonStatusEnum.ENABLE.getStatus()); | ||||
|        }); | ||||
|        oAuth2ClientMapper.insert(dbOAuth2Client); | ||||
|        oauth2ClientMapper.insert(dbOAuth2Client); | ||||
|        // 测试 name 不匹配 | ||||
|        oAuth2ClientMapper.insert(cloneIgnoreId(dbOAuth2Client, o -> o.setName("凤凰"))); | ||||
|        oauth2ClientMapper.insert(cloneIgnoreId(dbOAuth2Client, o -> o.setName("凤凰"))); | ||||
|        // 测试 status 不匹配 | ||||
|        oAuth2ClientMapper.insert(cloneIgnoreId(dbOAuth2Client, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus()))); | ||||
|        oauth2ClientMapper.insert(cloneIgnoreId(dbOAuth2Client, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus()))); | ||||
|        // 准备参数 | ||||
|        OAuth2ClientPageReqVO reqVO = new OAuth2ClientPageReqVO(); | ||||
|        reqVO.setName("long"); | ||||
|        reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); | ||||
|  | ||||
|        // 调用 | ||||
|        PageResult<OAuth2ClientDO> pageResult = oAuth2ClientService.getOAuth2ClientPage(reqVO); | ||||
|        PageResult<OAuth2ClientDO> pageResult = oauth2ClientService.getOAuth2ClientPage(reqVO); | ||||
|        // 断言 | ||||
|        assertEquals(1, pageResult.getTotal()); | ||||
|        assertEquals(1, pageResult.getList().size()); | ||||
|   | ||||
| @@ -473,6 +473,7 @@ CREATE TABLE IF NOT EXISTS "system_sensitive_word" ( | ||||
|  | ||||
| CREATE TABLE IF NOT EXISTS "system_oauth2_client" ( | ||||
|   "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, | ||||
|   "client_id" varchar NOT NULL, | ||||
|   "secret" varchar NOT NULL, | ||||
|   "name" varchar NOT NULL, | ||||
|   "logo" varchar NOT NULL, | ||||
| @@ -481,6 +482,12 @@ CREATE TABLE IF NOT EXISTS "system_oauth2_client" ( | ||||
|   "access_token_validity_seconds" int NOT NULL, | ||||
|   "refresh_token_validity_seconds" int NOT NULL, | ||||
|   "redirect_uris" varchar NOT NULL, | ||||
|   "auto_approve" bit NOT NULL DEFAULT FALSE, | ||||
|   "authorized_grant_types" varchar NOT NULL, | ||||
|   "scopes" varchar NOT NULL DEFAULT '', | ||||
|   "authorities" varchar NOT NULL DEFAULT '', | ||||
|   "resource_ids" varchar NOT NULL DEFAULT '', | ||||
|   "additional_information" varchar NOT NULL DEFAULT '', | ||||
|   "creator" varchar DEFAULT '', | ||||
|   "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | ||||
|   "updater" varchar DEFAULT '', | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV