|
@@ -0,0 +1,134 @@
|
|
|
+package com.hosea.service.user.test.client;
|
|
|
+
|
|
|
+import cn.hutool.core.util.RandomUtil;
|
|
|
+import com.hosea.cloud.test.Assertions;
|
|
|
+import com.hosea.cloud.test.Tuple;
|
|
|
+import com.hosea.cloud.web.login.JwtToken;
|
|
|
+import com.hosea.cloud.webmvc.JwtTokenUtil;
|
|
|
+import com.hosea.cloud.webmvc.constant.LoginErrorCode;
|
|
|
+import com.hosea.service.user.client.api.UserApi;
|
|
|
+import com.hosea.service.user.client.dto.constant.TenantErrorCode;
|
|
|
+import com.hosea.service.user.client.dto.constant.UserErrorCode;
|
|
|
+import com.hosea.service.user.client.dto.data.TenantUniqueDTO;
|
|
|
+import com.hosea.service.user.client.dto.data.UserDTO;
|
|
|
+import com.hosea.service.user.client.dto.data.UserUniqueDTO;
|
|
|
+import com.hosea.service.user.client.dto.request.UserAddCmd;
|
|
|
+import com.hosea.service.user.client.dto.request.UserJoinTenantCmd;
|
|
|
+import com.hosea.service.user.client.dto.request.UserListByTenantPageQuery;
|
|
|
+import com.hosea.service.user.client.dto.request.UserUpdateCmd;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
+import org.junit.jupiter.api.*;
|
|
|
+import org.mockito.MockedStatic;
|
|
|
+import org.mockito.Mockito;
|
|
|
+import org.springframework.boot.test.context.SpringBootTest;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.IntStream;
|
|
|
+
|
|
|
+@Order(2)
|
|
|
+@SpringBootTest
|
|
|
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
|
|
+public class UserApiTest {
|
|
|
+ @Resource
|
|
|
+ private UserApi api;
|
|
|
+
|
|
|
+ @Order(1)
|
|
|
+ @RepeatedTest(value = TenantApiTest.TEST_NUM, name = "第{currentRepetition}次增加")
|
|
|
+ public void add(RepetitionInfo info) {
|
|
|
+ UserAddCmd cmd = new UserAddCmd(createUser("user" + info.getCurrentRepetition(), RandomUtil.randomString(5)));
|
|
|
+ Assertions.success(api::add, cmd);
|
|
|
+ Assertions.error(api::add
|
|
|
+ , Tuple.of(null, UserErrorCode.NOT_NULL)
|
|
|
+ , Tuple.of(new UserAddCmd(), UserErrorCode.NOT_NULL)
|
|
|
+ , Tuple.of(new UserAddCmd(createUser("")), UserErrorCode.NOT_NULL_NAME)
|
|
|
+ , Tuple.of(cmd, UserErrorCode.ALREADY_EXISTS)
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ @Order(2)
|
|
|
+ @RepeatedTest(value = TenantApiTest.TEST_NUM, name = "第{currentRepetition}次修改")
|
|
|
+ public void update(RepetitionInfo info) {
|
|
|
+ int index = info.getCurrentRepetition();
|
|
|
+ UserUpdateCmd cmd = new UserUpdateCmd(createUser("user" + index, "name" + index));
|
|
|
+ Assertions.success(api::update, cmd);
|
|
|
+ Assertions.error(api::update
|
|
|
+ , Tuple.of(null, UserErrorCode.NOT_NULL)
|
|
|
+ , Tuple.of(new UserUpdateCmd(), UserErrorCode.NOT_NULL)
|
|
|
+ , Tuple.of(new UserUpdateCmd(createUser("")), UserErrorCode.NOT_NULL_ID_OR_NAME)
|
|
|
+ , Tuple.of(new UserUpdateCmd(createUser("xxx")), UserErrorCode.NOT_EXIST)
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ @Order(3)
|
|
|
+ @Test
|
|
|
+ public void join() {
|
|
|
+ UserUniqueDTO user = new UserUniqueDTO(null, "user1");
|
|
|
+ List<TenantUniqueDTO> tenant = List.of(new TenantUniqueDTO(null, "code1"));
|
|
|
+ Assertions.success(api::join, new UserJoinTenantCmd(user, tenant));
|
|
|
+ // 加入不存在的租户不会报错,但是加不进去
|
|
|
+ Assertions.success(api::join, new UserJoinTenantCmd(user, List.of(new TenantUniqueDTO(null, "xxxx"))));
|
|
|
+ Assertions.error(api::join
|
|
|
+ , Tuple.of(null, UserErrorCode.NOT_NULL)
|
|
|
+ , Tuple.of(new UserJoinTenantCmd(), UserErrorCode.NOT_NULL)
|
|
|
+ , Tuple.of(new UserJoinTenantCmd(user, null), TenantErrorCode.NOT_NULL)
|
|
|
+ , Tuple.of(new UserJoinTenantCmd(null, tenant), UserErrorCode.NOT_NULL)
|
|
|
+ , Tuple.of(new UserJoinTenantCmd(new UserUniqueDTO(null, ""), tenant), UserErrorCode.NOT_NULL_ID_OR_NAME)
|
|
|
+ , Tuple.of(new UserJoinTenantCmd(new UserUniqueDTO(null, "xxxx"), tenant), UserErrorCode.NOT_EXIST)
|
|
|
+ , Tuple.of(new UserJoinTenantCmd(user, List.of(new TenantUniqueDTO(null, ""))), TenantErrorCode.NOT_NULL_ID_OR_CODE)
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ @Order(4)
|
|
|
+ @RepeatedTest(value = TenantApiTest.TEST_NUM, name = "第{currentRepetition}次加入")
|
|
|
+ public void joinAll(RepetitionInfo info) {
|
|
|
+ List<TenantUniqueDTO> tenants = IntStream.range(1, TenantApiTest.TEST_NUM)
|
|
|
+ .mapToObj(i -> new TenantUniqueDTO(null, "code" + i))
|
|
|
+ .toList();
|
|
|
+ UserUniqueDTO user = new UserUniqueDTO(null, "user" + info.getCurrentRepetition());
|
|
|
+ Assertions.success(api::join, new UserJoinTenantCmd(user, tenants));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ @Order(5)
|
|
|
+ public void get() {
|
|
|
+ Assertions.error(api::get, LoginErrorCode.NOT_LOGIN);
|
|
|
+ try (MockedStatic<JwtTokenUtil> jwt = Mockito.mockStatic(JwtTokenUtil.class)) {
|
|
|
+ jwt.when(JwtTokenUtil::getTokenOrElseThrow).thenReturn(JwtToken.builder().user("user5").build());
|
|
|
+ Assertions.success(api::get);
|
|
|
+ jwt.when(JwtTokenUtil::getTokenOrElseThrow).thenReturn(new JwtToken());
|
|
|
+ Assertions.error(api::get, UserErrorCode.NOT_NULL_ID_OR_NAME);
|
|
|
+ jwt.when(JwtTokenUtil::getTokenOrElseThrow).thenReturn(JwtToken.builder().user("xxx").build());
|
|
|
+ Assertions.error(api::get, UserErrorCode.NOT_EXIST);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ @Order(10)
|
|
|
+ public void list() {
|
|
|
+ Integer size = 2;
|
|
|
+ UserListByTenantPageQuery query = new UserListByTenantPageQuery();
|
|
|
+ query.setPageIndex(3);
|
|
|
+ query.setPageSize(size);
|
|
|
+ query.setTenant(new TenantUniqueDTO(null, "code1"));
|
|
|
+ query.setOrderBy("GROUPCODE");
|
|
|
+ Assertions.assertEquals(api.list(query).getData().size(), size);
|
|
|
+ Assertions.error(api::list
|
|
|
+ , Tuple.of(null, TenantErrorCode.NOT_NULL)
|
|
|
+ , Tuple.of(new UserListByTenantPageQuery(), TenantErrorCode.NOT_NULL)
|
|
|
+ , Tuple.of(new UserListByTenantPageQuery(new TenantUniqueDTO(null, "")), TenantErrorCode.NOT_NULL_ID_OR_CODE)
|
|
|
+ );
|
|
|
+ Assertions.assertEquals(api.list(new UserListByTenantPageQuery(new TenantUniqueDTO(null, "code1"))).getTotalCount(), TenantApiTest.TEST_NUM);
|
|
|
+ Assertions.assertEquals(api.list(new UserListByTenantPageQuery(new TenantUniqueDTO(null, "xxx"))).getTotalCount(), 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static UserDTO createUser(String name) {
|
|
|
+ return createUser(name, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static UserDTO createUser(String name, String nick) {
|
|
|
+ return UserDTO.builder()
|
|
|
+ .name(name)
|
|
|
+ .nickName(nick)
|
|
|
+ .build();
|
|
|
+ }
|
|
|
+}
|