Revert "refactor: flatten dto entity and mapper packages"
This reverts commit 29766ebd28.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package com.label.integration;
|
||||
|
||||
import com.label.AbstractIntegrationTest;
|
||||
import com.label.dto.LoginRequest;
|
||||
import com.label.module.user.dto.LoginRequest;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -15,8 +15,11 @@ import java.util.UUID;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* 鐢ㄦ埛绠$悊闆嗘垚娴嬭瘯锛圲S7锛夈€? *
|
||||
* 娴嬭瘯鍦烘櫙锛? * 1. 鍙樻洿瑙掕壊鍚庢潈闄愪笅涓€娆¤姹傜珛鍗崇敓鏁堬紙鏃犻渶閲嶆柊鐧诲綍锛? * 2. 绂佺敤璐﹀彿鍚庣幇鏈?Token 涓嬩竴娆¤姹傜珛鍗宠繑鍥?401
|
||||
* 用户管理集成测试(US7)。
|
||||
*
|
||||
* 测试场景:
|
||||
* 1. 变更角色后权限下一次请求立即生效(无需重新登录)
|
||||
* 2. 禁用账号后现有 Token 下一次请求立即返回 401
|
||||
*/
|
||||
public class UserManagementIntegrationTest extends AbstractIntegrationTest {
|
||||
|
||||
@@ -31,14 +34,14 @@ public class UserManagementIntegrationTest extends AbstractIntegrationTest {
|
||||
assertThat(adminToken).isNotBlank();
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------ 娴嬭瘯 1: 瑙掕壊鍙樻洿绔嬪嵆鐢熸晥 --
|
||||
// ------------------------------------------------------------------ 测试 1: 角色变更立即生效 --
|
||||
|
||||
@Test
|
||||
@DisplayName("鍒涘缓鐢ㄦ埛涓?ANNOTATOR锛屽彉鏇翠负 REVIEWER 鍚庡悓涓€ Token 绔嬪嵆鍙闂鎵规帴鍙?)
|
||||
@DisplayName("创建用户为 ANNOTATOR,变更为 REVIEWER 后同一 Token 立即可访问审批接口")
|
||||
void updateRole_takesEffectImmediately() {
|
||||
String uniqueUsername = "testuser-" + UUID.randomUUID().toString().substring(0, 8);
|
||||
|
||||
// 1. 鍒涘缓 ANNOTATOR 鐢ㄦ埛
|
||||
// 1. 创建 ANNOTATOR 用户
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.set("Authorization", "Bearer " + adminToken);
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
@@ -49,7 +52,7 @@ public class UserManagementIntegrationTest extends AbstractIntegrationTest {
|
||||
new HttpEntity<>(Map.of(
|
||||
"username", uniqueUsername,
|
||||
"password", "test1234",
|
||||
"realName", "娴嬭瘯鐢ㄦ埛",
|
||||
"realName", "测试用户",
|
||||
"role", "ANNOTATOR"
|
||||
), headers),
|
||||
Map.class);
|
||||
@@ -59,11 +62,11 @@ public class UserManagementIntegrationTest extends AbstractIntegrationTest {
|
||||
Map<String, Object> userData = (Map<String, Object>) createResp.getBody().get("data");
|
||||
Long newUserId = ((Number) userData.get("id")).longValue();
|
||||
|
||||
// 2. 鏂扮敤鎴风櫥褰曡幏鍙?Token
|
||||
// 2. 新用户登录获取 Token
|
||||
String userToken = loginAndGetToken("DEMO", uniqueUsername, "test1234");
|
||||
assertThat(userToken).isNotBlank();
|
||||
|
||||
// 3. 楠岃瘉锛欰NNOTATOR 鏃犳硶璁块棶寰呭鎵归槦鍒楋紙REVIEWER 涓撳睘锛夆啋 403
|
||||
// 3. 验证:ANNOTATOR 无法访问待审批队列(REVIEWER 专属)→ 403
|
||||
ResponseEntity<Map> beforeRoleChange = restTemplate.exchange(
|
||||
baseUrl("/api/tasks/pending-review"),
|
||||
HttpMethod.GET,
|
||||
@@ -71,7 +74,7 @@ public class UserManagementIntegrationTest extends AbstractIntegrationTest {
|
||||
Map.class);
|
||||
assertThat(beforeRoleChange.getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
|
||||
|
||||
// 4. ADMIN 鍙樻洿瑙掕壊涓?REVIEWER
|
||||
// 4. ADMIN 变更角色为 REVIEWER
|
||||
ResponseEntity<Map> roleResp = restTemplate.exchange(
|
||||
baseUrl("/api/users/" + newUserId + "/role"),
|
||||
HttpMethod.PUT,
|
||||
@@ -79,25 +82,25 @@ public class UserManagementIntegrationTest extends AbstractIntegrationTest {
|
||||
Map.class);
|
||||
assertThat(roleResp.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
|
||||
// 5. 楠岃瘉锛氬悓涓€ Token 涓嬫璇锋眰绔嬪嵆鍏锋湁 REVIEWER 鏉冮檺 鈫?200
|
||||
// 5. 验证:同一 Token 下次请求立即具有 REVIEWER 权限 → 200
|
||||
ResponseEntity<Map> afterRoleChange = restTemplate.exchange(
|
||||
baseUrl("/api/tasks/pending-review"),
|
||||
HttpMethod.GET,
|
||||
bearerRequest(userToken),
|
||||
Map.class);
|
||||
assertThat(afterRoleChange.getStatusCode())
|
||||
.as("瑙掕壊鍙樻洿鍚庡悓涓€ Token 搴旂珛鍗冲叿鏈?REVIEWER 鏉冮檺")
|
||||
.as("角色变更后同一 Token 应立即具有 REVIEWER 权限")
|
||||
.isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------ 娴嬭瘯 2: 绂佺敤璐﹀彿 Token 绔嬪嵆澶辨晥 --
|
||||
// ------------------------------------------------------------------ 测试 2: 禁用账号 Token 立即失效 --
|
||||
|
||||
@Test
|
||||
@DisplayName("绂佺敤璐﹀彿鍚庯紝鐜版湁 Token 涓嬩竴娆¤姹傜珛鍗宠繑鍥?401")
|
||||
@DisplayName("禁用账号后,现有 Token 下一次请求立即返回 401")
|
||||
void disableAccount_tokenInvalidatedImmediately() {
|
||||
String uniqueUsername = "testuser-" + UUID.randomUUID().toString().substring(0, 8);
|
||||
|
||||
// 1. 鍒涘缓鐢ㄦ埛
|
||||
// 1. 创建用户
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.set("Authorization", "Bearer " + adminToken);
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
@@ -108,7 +111,7 @@ public class UserManagementIntegrationTest extends AbstractIntegrationTest {
|
||||
new HttpEntity<>(Map.of(
|
||||
"username", uniqueUsername,
|
||||
"password", "test1234",
|
||||
"realName", "娴嬭瘯鐢ㄦ埛",
|
||||
"realName", "测试用户",
|
||||
"role", "ANNOTATOR"
|
||||
), headers),
|
||||
Map.class);
|
||||
@@ -118,11 +121,11 @@ public class UserManagementIntegrationTest extends AbstractIntegrationTest {
|
||||
Map<String, Object> userData = (Map<String, Object>) createResp.getBody().get("data");
|
||||
Long newUserId = ((Number) userData.get("id")).longValue();
|
||||
|
||||
// 2. 鏂扮敤鎴风櫥褰曪紝鑾峰彇 Token
|
||||
// 2. 新用户登录,获取 Token
|
||||
String userToken = loginAndGetToken("DEMO", uniqueUsername, "test1234");
|
||||
assertThat(userToken).isNotBlank();
|
||||
|
||||
// 3. 楠岃瘉 Token 鏈夋晥
|
||||
// 3. 验证 Token 有效
|
||||
ResponseEntity<Map> meResp = restTemplate.exchange(
|
||||
baseUrl("/api/auth/me"),
|
||||
HttpMethod.GET,
|
||||
@@ -130,7 +133,7 @@ public class UserManagementIntegrationTest extends AbstractIntegrationTest {
|
||||
Map.class);
|
||||
assertThat(meResp.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
|
||||
// 4. ADMIN 绂佺敤璐﹀彿
|
||||
// 4. ADMIN 禁用账号
|
||||
ResponseEntity<Map> disableResp = restTemplate.exchange(
|
||||
baseUrl("/api/users/" + newUserId + "/status"),
|
||||
HttpMethod.PUT,
|
||||
@@ -138,18 +141,18 @@ public class UserManagementIntegrationTest extends AbstractIntegrationTest {
|
||||
Map.class);
|
||||
assertThat(disableResp.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
|
||||
// 5. 楠岃瘉锛氱鐢ㄥ悗锛岀幇鏈?Token 绔嬪嵆澶辨晥 鈫?401
|
||||
// 5. 验证:禁用后,现有 Token 立即失效 → 401
|
||||
ResponseEntity<Map> meAfterDisable = restTemplate.exchange(
|
||||
baseUrl("/api/auth/me"),
|
||||
HttpMethod.GET,
|
||||
bearerRequest(userToken),
|
||||
Map.class);
|
||||
assertThat(meAfterDisable.getStatusCode())
|
||||
.as("绂佺敤璐﹀彿鍚庣幇鏈?Token 搴旂珛鍗冲け鏁?)
|
||||
.as("禁用账号后现有 Token 应立即失效")
|
||||
.isEqualTo(HttpStatus.UNAUTHORIZED);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------ 宸ュ叿鏂规硶 --
|
||||
// ------------------------------------------------------------------ 工具方法 --
|
||||
|
||||
private String loginAndGetToken(String companyCode, String username, String password) {
|
||||
LoginRequest req = new LoginRequest();
|
||||
|
||||
Reference in New Issue
Block a user