Sync: code local unifié

Synchronisation du code source local (fait foi).

Signed-off-by: lions dev Team
This commit is contained in:
dahoud
2026-03-15 16:25:40 +00:00
parent e82dc356f3
commit 75a19988b0
730 changed files with 53599 additions and 13145 deletions

View File

@@ -0,0 +1,88 @@
package dev.lions.unionflow.server.service;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.*;
import dev.lions.unionflow.server.client.UserServiceClient;
import dev.lions.unionflow.server.entity.Membre;
import dev.lions.unionflow.server.repository.MembreRepository;
import dev.lions.user.manager.dto.user.UserDTO;
import dev.lions.user.manager.dto.user.UserSearchCriteriaDTO;
import dev.lions.user.manager.dto.user.UserSearchResultDTO;
import io.quarkus.test.InjectMock;
import io.quarkus.test.junit.QuarkusTest;
import jakarta.inject.Inject;
import jakarta.ws.rs.NotFoundException;
import java.util.Collections;
import java.util.Optional;
import java.util.UUID;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@QuarkusTest
class MembreKeycloakSyncServiceTest {
@Inject
MembreKeycloakSyncService syncService;
@InjectMock
MembreRepository membreRepository;
@InjectMock
@RestClient
UserServiceClient userServiceClient;
@Test
@DisplayName("provisionKeycloakUser échoue si le membre n'existe pas")
void provisionKeycloakUser_failsIfMembreNotFound() {
UUID membreId = UUID.randomUUID();
when(membreRepository.findByIdOptional(membreId)).thenReturn(Optional.empty());
assertThatThrownBy(() -> syncService.provisionKeycloakUser(membreId))
.isInstanceOf(NotFoundException.class);
}
@Test
@DisplayName("provisionKeycloakUser échoue si le membre a déjà un ID Keycloak")
void provisionKeycloakUser_failsIfAlreadyLinked() {
UUID membreId = UUID.randomUUID();
Membre membre = new Membre();
membre.setId(membreId);
membre.setKeycloakId(UUID.randomUUID());
when(membreRepository.findByIdOptional(membreId)).thenReturn(Optional.of(membre));
assertThatThrownBy(() -> syncService.provisionKeycloakUser(membreId))
.isInstanceOf(IllegalStateException.class);
}
@Test
@DisplayName("provisionKeycloakUser crée un utilisateur Keycloak et lie le membre")
void provisionKeycloakUser_createsAndLinks() {
UUID membreId = UUID.randomUUID();
Membre membre = new Membre();
membre.setId(membreId);
membre.setEmail("test@unionflow.dev");
membre.setNom("Doe");
membre.setPrenom("John");
when(membreRepository.findByIdOptional(membreId)).thenReturn(Optional.of(membre));
UserSearchResultDTO searchResult = new UserSearchResultDTO();
searchResult.setUsers(Collections.emptyList());
when(userServiceClient.searchUsers(any(UserSearchCriteriaDTO.class))).thenReturn(searchResult);
UserDTO createdUser = new UserDTO();
createdUser.setId(UUID.randomUUID().toString());
when(userServiceClient.createUser(any(UserDTO.class), anyString())).thenReturn(createdUser);
syncService.provisionKeycloakUser(membreId);
verify(userServiceClient).createUser(any(UserDTO.class), eq("unionflow"));
verify(membreRepository).persist(membre);
verify(userServiceClient).sendVerificationEmail(eq(createdUser.getId()), eq("unionflow"));
}
}