refactor(test): 重构测试套件结构并优化测试配置

feat(test-suite): 新增测试套件模块,包含API测试客户端和测试配置
fix(api): 修复数据库实体和仓库的删除操作返回值
style(api): 统一数据库表名和字段命名
perf(api): 添加缓存注解提升配置查询性能
test(api): 添加H2测试数据库配置支持
chore: 清理旧的测试文件和脚本
This commit is contained in:
张翔
2026-04-01 20:57:24 +08:00
parent 24422c2c19
commit 1e3dc11d59
180 changed files with 15421 additions and 3797 deletions
@@ -5,7 +5,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Service;
import java.time.Instant;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -38,11 +37,8 @@ public class AuditLogService {
entry.setRequestId(requestId);
entry.setMethod(request.getMethod().name());
entry.setPath(request.getPath().value());
entry.setQuery(request.getURI().getQuery());
entry.setUserId(userId);
entry.setClientIp(getClientIp(request));
entry.setStartTime(Instant.now());
entry.setUserAgent(request.getHeaders().getFirst("User-Agent"));
auditEntries.put(requestId, entry);
@@ -59,7 +55,6 @@ public class AuditLogService {
if (entry != null) {
entry.setStatusCode(statusCode);
entry.setEndTime(Instant.now());
entry.setDurationMs(durationMs);
auditLogger.info("[RESPONSE] {} {} - Status: {}, Duration: {}ms, RequestId: {}",
@@ -148,12 +143,8 @@ public class AuditLogService {
private String requestId;
private String method;
private String path;
private String query;
private String userId;
private String clientIp;
private String userAgent;
private Instant startTime;
private Instant endTime;
private int statusCode;
private long durationMs;
@@ -181,10 +172,6 @@ public class AuditLogService {
this.path = path;
}
public void setQuery(String query) {
this.query = query;
}
public String getUserId() {
return userId;
}
@@ -201,18 +188,6 @@ public class AuditLogService {
this.clientIp = clientIp;
}
public void setUserAgent(String userAgent) {
this.userAgent = userAgent;
}
public void setStartTime(Instant startTime) {
this.startTime = startTime;
}
public void setEndTime(Instant endTime) {
this.endTime = endTime;
}
public int getStatusCode() {
return statusCode;
}
@@ -44,7 +44,10 @@ class PermissionServiceImplTest {
@BeforeEach
void setUp() {
when(webClientBuilder.build()).thenReturn(webClient);
doReturn(webClient).when(webClientBuilder).build();
doReturn(requestHeadersUriSpec).when(webClient).get();
doReturn(requestHeadersSpec).when(requestHeadersUriSpec).uri(anyString());
doReturn(responseSpec).when(requestHeadersSpec).retrieve();
permissionService = new PermissionServiceImpl(webClientBuilder, "http://localhost:8084");
}
@@ -52,10 +55,7 @@ class PermissionServiceImplTest {
void testGetUserById_Success() {
User expectedUser = new User(1L, "testuser", "test@example.com", "1234567890", 1, System.currentTimeMillis(), System.currentTimeMillis());
when(webClient.get()).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.uri(anyString())).thenReturn(requestHeadersSpec);
when(requestHeadersSpec.retrieve()).thenReturn(responseSpec);
when(responseSpec.bodyToMono(eq(User.class))).thenReturn(Mono.just(expectedUser));
doReturn(Mono.just(expectedUser)).when(responseSpec).bodyToMono(eq(User.class));
User user = permissionService.getUserById(1L);
@@ -79,10 +79,7 @@ class PermissionServiceImplTest {
new Role(2L, "USER", "User", "User role", 1, System.currentTimeMillis(), System.currentTimeMillis())
);
when(webClient.get()).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.uri(anyString())).thenReturn(requestHeadersSpec);
when(requestHeadersSpec.retrieve()).thenReturn(responseSpec);
when(responseSpec.bodyToMono(eq(Role[].class))).thenReturn(Mono.just(expectedRoles.toArray(new Role[0])));
doReturn(Mono.just(expectedRoles.toArray(new Role[0]))).when(responseSpec).bodyToMono(eq(Role[].class));
List<Role> roles = permissionService.getUserRoles(1L);
@@ -107,10 +104,7 @@ class PermissionServiceImplTest {
new Permission(2L, "user:write", "Write User", "API", "/api/users/**", "POST", "Write user permissions", 1, System.currentTimeMillis(), System.currentTimeMillis())
));
when(webClient.get()).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.uri(anyString())).thenReturn(requestHeadersSpec);
when(requestHeadersSpec.retrieve()).thenReturn(responseSpec);
when(responseSpec.bodyToMono(eq(Permission[].class))).thenReturn(Mono.just(expectedPermissions.toArray(new Permission[0])));
doReturn(Mono.just(expectedPermissions.toArray(new Permission[0]))).when(responseSpec).bodyToMono(eq(Permission[].class));
Set<Permission> permissions = permissionService.getUserPermissions(1L);
@@ -134,10 +128,7 @@ class PermissionServiceImplTest {
new Permission(1L, "user:read", "Read User", "API", "/api/users/**", "GET", "Read user permissions", 1, System.currentTimeMillis(), System.currentTimeMillis())
));
when(webClient.get()).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.uri(anyString())).thenReturn(requestHeadersSpec);
when(requestHeadersSpec.retrieve()).thenReturn(responseSpec);
when(responseSpec.bodyToMono(eq(Permission[].class))).thenReturn(Mono.just(permissions.toArray(new Permission[0])));
doReturn(Mono.just(permissions.toArray(new Permission[0]))).when(responseSpec).bodyToMono(eq(Permission[].class));
boolean hasPermission = permissionService.hasPermission(1L, "/api/users/123", "GET");
@@ -150,10 +141,7 @@ class PermissionServiceImplTest {
new Permission(1L, "user:read", "Read User", "API", "/api/users/**", "GET", "Read user permissions", 1, System.currentTimeMillis(), System.currentTimeMillis())
));
when(webClient.get()).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.uri(anyString())).thenReturn(requestHeadersSpec);
when(requestHeadersSpec.retrieve()).thenReturn(responseSpec);
when(responseSpec.bodyToMono(eq(Permission[].class))).thenReturn(Mono.just(permissions.toArray(new Permission[0])));
doReturn(Mono.just(permissions.toArray(new Permission[0]))).when(responseSpec).bodyToMono(eq(Permission[].class));
boolean hasPermission = permissionService.hasPermission(1L, "/api/users/123", "POST");
@@ -175,10 +163,7 @@ class PermissionServiceImplTest {
new Permission(2L, "user:write", "Write User", "API", "/api/users/**", "POST", "Write user permissions", 1, System.currentTimeMillis(), System.currentTimeMillis())
));
when(webClient.get()).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.uri(anyString())).thenReturn(requestHeadersSpec);
when(requestHeadersSpec.retrieve()).thenReturn(responseSpec);
when(responseSpec.bodyToMono(eq(Permission[].class))).thenReturn(Mono.just(permissions.toArray(new Permission[0])));
doReturn(Mono.just(permissions.toArray(new Permission[0]))).when(responseSpec).bodyToMono(eq(Permission[].class));
Set<String> paths = permissionService.getPermissionPaths(1L, "GET");
@@ -195,12 +180,9 @@ class PermissionServiceImplTest {
new Permission(1L, "user:read", "Read User", "API", "/api/users/**", "GET", "Read user permissions", 1, System.currentTimeMillis(), System.currentTimeMillis())
));
when(webClient.get()).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.uri(anyString())).thenReturn(requestHeadersSpec);
when(requestHeadersSpec.retrieve()).thenReturn(responseSpec);
when(responseSpec.bodyToMono(eq(User.class))).thenReturn(Mono.just(user));
when(responseSpec.bodyToMono(eq(Role[].class))).thenReturn(Mono.just(roles.toArray(new Role[0])));
when(responseSpec.bodyToMono(eq(Permission[].class))).thenReturn(Mono.just(permissions.toArray(new Permission[0])));
doReturn(Mono.just(user)).when(responseSpec).bodyToMono(eq(User.class));
doReturn(Mono.just(roles.toArray(new Role[0]))).when(responseSpec).bodyToMono(eq(Role[].class));
doReturn(Mono.just(permissions.toArray(new Permission[0]))).when(responseSpec).bodyToMono(eq(Permission[].class));
permissionService.getUserById(1L);
permissionService.getUserRoles(1L);
@@ -219,12 +201,9 @@ class PermissionServiceImplTest {
new Permission(1L, "user:read", "Read User", "API", "/api/users/**", "GET", "Read user permissions", 1, System.currentTimeMillis(), System.currentTimeMillis())
));
when(webClient.get()).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.uri(anyString())).thenReturn(requestHeadersSpec);
when(requestHeadersSpec.retrieve()).thenReturn(responseSpec);
when(responseSpec.bodyToMono(eq(User.class))).thenReturn(Mono.just(user));
when(responseSpec.bodyToMono(eq(Role[].class))).thenReturn(Mono.just(roles.toArray(new Role[0])));
when(responseSpec.bodyToMono(eq(Permission[].class))).thenReturn(Mono.just(permissions.toArray(new Permission[0])));
doReturn(Mono.just(user)).when(responseSpec).bodyToMono(eq(User.class));
doReturn(Mono.just(roles.toArray(new Role[0]))).when(responseSpec).bodyToMono(eq(Role[].class));
doReturn(Mono.just(permissions.toArray(new Permission[0]))).when(responseSpec).bodyToMono(eq(Permission[].class));
permissionService.getUserById(1L);
permissionService.getUserRoles(1L);
@@ -238,4 +217,4 @@ class PermissionServiceImplTest {
verify(webClient, times(6)).get();
}
}
}
@@ -7,7 +7,6 @@ import org.mockito.InjectMocks;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.http.HttpMethod;
import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
import org.springframework.mock.web.server.MockServerWebExchange;
import org.springframework.test.util.ReflectionTestUtils;
import java.util.concurrent.TimeUnit;