40 lines
1.4 KiB
Java
40 lines
1.4 KiB
Java
package com.baiyue.audit.service;
|
|
|
|
import com.baiyue.audit.dto.AuditIngestRequest;
|
|
import com.baiyue.audit.repository.AuditEventRepository;
|
|
import jakarta.annotation.Resource;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
|
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
|
|
|
import java.time.Instant;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.mockito.Mockito.verify;
|
|
import static org.mockito.Mockito.when;
|
|
|
|
@SpringJUnitConfig(AuditIngestService.class)
|
|
class AuditIngestIdempotencyTest {
|
|
@MockBean
|
|
private AuditEventRepository repository;
|
|
@Resource
|
|
private AuditIngestService service;
|
|
|
|
@Test
|
|
void keepsStableEventIdForMqRedelivery() {
|
|
AuditIngestRequest request = request("audit-1");
|
|
when(repository.save(request, "audit-1")).thenReturn(false);
|
|
|
|
assertThat(service.ingest(request)).isFalse();
|
|
|
|
verify(repository).save(request, "audit-1");
|
|
}
|
|
|
|
private static AuditIngestRequest request(String eventId) {
|
|
return new AuditIngestRequest(eventId, "ROLE_UPDATE", "ROLE", "1", "修改角色",
|
|
"request-1", "trace-1", 1L, 1L, 1L, "admin", "PLATFORM", "WEB", "PUT",
|
|
"/roles/1", "127.0.0.1", 10, true, null, null, null, null,
|
|
Instant.parse("2026-08-05T00:00:00Z"), "iam-service");
|
|
}
|
|
}
|