fix: kafka dev standalone, OIDC realm LUM, Flyway out-of-order, shutdown guard, TypeRef categorie/modules

- docker-compose.dev.yml: retire le service kafka (standalone existant sur :9092), kafka-ui pointe host.docker.internal:9092
- application-dev.properties: OIDC admin-service realm corrigé lions-user-manager (fix AUTH changement mdp)
- application-prod.properties: nouvelle var KEYCLOAK_LUM_AUTH_SERVER_URL + fallback KEYCLOAK_CLIENT_SECRET
- application.properties: quarkus.flyway.out-of-order=true (évite échec si migration hors-séquence)
- V10 renommé V10_1 (évite conflit avec historique Flyway existant)
- AlertMonitoringService: guard Arc.container().isRunning() pour éviter NPE au shutdown
- TypeOrganisationReferenceResource: forward categorie + modulesRequis au service
- Tests: coverage TypeOrganisationReferenceResource + TypeReferenceService
This commit is contained in:
dahoud
2026-04-11 01:25:45 +00:00
parent 065b0008b0
commit 31e8d5534c
9 changed files with 72 additions and 51 deletions

View File

@@ -2,9 +2,13 @@ package dev.lions.unionflow.server.resource;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import dev.lions.unionflow.server.api.dto.reference.request.CreateTypeReferenceRequest;
import org.mockito.ArgumentCaptor;
import dev.lions.unionflow.server.api.dto.reference.response.TypeReferenceResponse;
import dev.lions.unionflow.server.service.TypeReferenceService;
import io.quarkus.security.identity.SecurityIdentity;
@@ -83,6 +87,40 @@ class TypeOrganisationReferenceResourceTest {
.contentType(ContentType.JSON);
}
@Test
@TestSecurity(user = "superadmin@test.com", roles = {"SUPER_ADMIN"})
void creerType_withCategorieAndModules_forwardsFields() {
TypeReferenceResponse response = TypeReferenceResponse.builder()
.domaine("TYPE_ORGANISATION")
.code("TONTINE")
.libelle("Tontine")
.categorie("FINANCIER_SOLIDAIRE")
.modulesRequis("TONTINE,COTISATIONS")
.build();
response.setId(UUID.randomUUID());
ArgumentCaptor<CreateTypeReferenceRequest> captor =
ArgumentCaptor.forClass(CreateTypeReferenceRequest.class);
when(typeReferenceService.creer(captor.capture())).thenReturn(response);
String body = """
{"code":"TONTINE","libelle":"Tontine","domaine":"TYPE_ORGANISATION",
"categorie":"FINANCIER_SOLIDAIRE","modulesRequis":"TONTINE,COTISATIONS"}
""";
given()
.contentType(ContentType.JSON)
.body(body)
.when()
.post(BASE_PATH)
.then()
.statusCode(201);
CreateTypeReferenceRequest captured = captor.getValue();
assertEquals("FINANCIER_SOLIDAIRE", captured.categorie());
assertEquals("TONTINE,COTISATIONS", captured.modulesRequis());
assertEquals("TYPE_ORGANISATION", captured.domaine());
}
@Test
@TestSecurity(user = "superadmin@test.com", roles = {"SUPER_ADMIN"})
void creerType_illegalArg_returns400() {

View File

@@ -201,7 +201,7 @@ class TypeReferenceServiceTest {
UpdateTypeReferenceRequest updateRequest = new UpdateTypeReferenceRequest(
null, // code (pas de changement)
"Nouveau libellé",
null, null, null, null, null, null, null);
null, null, null, null, null, null, null, null, null);
TypeReferenceResponse updated = typeReferenceService.modifier(created.getId(), updateRequest);
assertThat(updated.getLibelle()).isEqualTo("Nouveau libellé");
@@ -212,7 +212,7 @@ class TypeReferenceServiceTest {
@DisplayName("modifier avec UUID inexistant lance IllegalArgumentException")
void modifier_inexistant_throws() {
UpdateTypeReferenceRequest updateRequest = new UpdateTypeReferenceRequest(
null, "Libellé", null, null, null, null, null, null, null);
null, "Libellé", null, null, null, null, null, null, null, null, null);
assertThatThrownBy(() -> typeReferenceService.modifier(UUID.randomUUID(), updateRequest))
.isInstanceOf(IllegalArgumentException.class)
@@ -317,7 +317,7 @@ class TypeReferenceServiceTest {
.build());
UpdateTypeReferenceRequest updateRequest = new UpdateTypeReferenceRequest(
newCode, null, null, null, null, null, null, null, null);
newCode, null, null, null, null, null, null, null, null, null, null);
TypeReferenceResponse updated = typeReferenceService.modifier(created.getId(), updateRequest);
assertThat(updated.getCode()).isEqualTo(newCode.toUpperCase());
@@ -340,7 +340,7 @@ class TypeReferenceServiceTest {
.build());
UpdateTypeReferenceRequest updateRequest = new UpdateTypeReferenceRequest(
"CHANGED_CODE", null, null, null, null, null, null, null, null);
"CHANGED_CODE", null, null, null, null, null, null, null, null, null, null);
assertThatThrownBy(() -> typeReferenceService.modifier(created.getId(), updateRequest))
.isInstanceOf(IllegalArgumentException.class)
@@ -365,7 +365,7 @@ class TypeReferenceServiceTest {
// Même code (case-insensitive) → !equalsIgnoreCase = false → if body skipped
UpdateTypeReferenceRequest updateRequest = new UpdateTypeReferenceRequest(
code.toLowerCase(), "Nouveau libelle", null, null, null, null, null, null, null);
code.toLowerCase(), "Nouveau libelle", null, null, null, null, null, null, null, null, null);
TypeReferenceResponse updated = typeReferenceService.modifier(created.getId(), updateRequest);
assertThat(updated).isNotNull();
@@ -457,7 +457,7 @@ class TypeReferenceServiceTest {
// Modifier le code avec l'organisation non-null → L195-197 : orgId = entity.getOrganisation().getId()
UpdateTypeReferenceRequest updateRequest = new UpdateTypeReferenceRequest(
newCode, null, null, null, null, null, null, null, null);
newCode, null, null, null, null, null, null, null, null, null, null);
TypeReferenceResponse updated = typeReferenceService.modifier(created.getId(), updateRequest);
@@ -491,7 +491,9 @@ class TypeReferenceServiceTest {
"warning", // severity
10, // ordreAffichage
true, // estDefaut
false // actif
false, // actif
null, // categorie
null // modulesRequis
);
TypeReferenceResponse updated = typeReferenceService.modifier(created.getId(), updateRequest);