日志记录提交

This commit is contained in:
2026-08-05 14:20:04 +08:00
parent 264458920b
commit 06f7f9d2f2
83 changed files with 3256 additions and 27 deletions
@@ -0,0 +1,70 @@
package com.baiyue.iam.service;
import com.baiyue.common.audit.BusinessAudit;
import com.baiyue.iam.dto.MemberDtos.ResetMemberPasswordRequest;
import com.baiyue.iam.dto.PlatformInternalUserDtos.ResetInternalUserPasswordRequest;
import com.baiyue.iam.dto.PlatformUserManagementDtos.ResetPasswordRequest;
import com.baiyue.iam.dto.RbacDtos.AssignRolesRequest;
import com.baiyue.iam.dto.RbacDtos.CreateRoleRequest;
import com.baiyue.iam.dto.RbacDtos.GrantPermissionsRequest;
import com.baiyue.iam.dto.RbacDtos.UpdateRoleRequest;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Method;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
class BusinessAuditCoverageTest {
@Test
void shouldAuditRbacChanges() throws Exception {
assertAudit(RbacService.class, "createRole", "ROLE_CREATE", "ROLE", "#request.roleCode",
long.class, String.class, CreateRoleRequest.class);
assertAudit(RbacService.class, "updateRole", "ROLE_UPDATE", "ROLE", "#roleId",
long.class, String.class, Long.class, UpdateRoleRequest.class);
assertAudit(RbacService.class, "changeStatus", "ROLE_STATUS_CHANGE", "ROLE", "#roleId",
long.class, String.class, Long.class,
com.baiyue.iam.dto.RbacDtos.ChangeRoleStatusRequest.class);
assertAudit(RbacService.class, "deleteRole", "ROLE_DELETE", "ROLE", "#roleId",
long.class, String.class, Long.class);
assertAudit(RbacService.class, "assignRoles", "MEMBER_ROLE_ASSIGN", "MEMBERSHIP", "#request.membershipId",
long.class, String.class, AssignRolesRequest.class);
assertAudit(RbacService.class, "grantPermissions", "ROLE_PERMISSION_GRANT", "ROLE", "#request.roleId",
long.class, String.class, GrantPermissionsRequest.class);
}
@Test
void shouldNeverCapturePasswordSnapshots() throws Exception {
assertPasswordAudit(MemberService.class, "resetPassword", long.class, Long.class,
ResetMemberPasswordRequest.class);
assertPasswordAudit(PlatformUserManagementService.class, "resetPassword", Long.class,
ResetPasswordRequest.class);
assertPasswordAudit(PlatformInternalUserService.class, "resetPassword", Long.class,
ResetInternalUserPasswordRequest.class);
}
@Test
void shouldAuditCustomerReview() throws Exception {
assertAudit(TenantService.class, "review", "TENANT_REVIEW", "TENANT_REVIEW", "#reviewId",
long.class, long.class, boolean.class, String.class);
}
private void assertAudit(Class<?> type, String methodName, String event, String resourceType,
String resourceId, Class<?>... parameterTypes) throws Exception {
BusinessAudit audit = annotation(type, methodName, parameterTypes);
assertEquals(event, audit.event());
assertEquals(resourceType, audit.resourceType());
assertEquals(resourceId, audit.resourceId());
}
private void assertPasswordAudit(Class<?> type, String methodName, Class<?>... parameterTypes) throws Exception {
BusinessAudit audit = annotation(type, methodName, parameterTypes);
assertFalse(audit.captureBefore());
assertFalse(audit.captureAfter());
}
private BusinessAudit annotation(Class<?> type, String methodName, Class<?>... parameterTypes) throws Exception {
Method method = type.getDeclaredMethod(methodName, parameterTypes);
return method.getAnnotation(BusinessAudit.class);
}
}