chore(quarkus-327): bump to Quarkus 3.27.3 LTS, make pom autonomous, fix UserServiceImpl tests (search → searchByUsername), rename deprecated config keys
Some checks failed
CI/CD Pipeline / pipeline (push) Failing after 1m57s
Some checks failed
CI/CD Pipeline / pipeline (push) Failing after 1m57s
This commit is contained in:
55
pom.xml
55
pom.xml
@@ -4,11 +4,58 @@
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>dev.lions.user.manager</groupId>
|
||||
<artifactId>lions-user-manager-parent</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</parent>
|
||||
<version>1.1.0</version>
|
||||
|
||||
<properties>
|
||||
<java.version>21</java.version>
|
||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<quarkus.platform.version>3.27.3</quarkus.platform.version>
|
||||
<lombok.version>1.18.38</lombok.version>
|
||||
<mapstruct.version>1.6.3</mapstruct.version>
|
||||
<!-- Overrides BOM : Docker Desktop 29.x compat (bundled TC 1.21.3 / docker-java 3.4.2 OK) -->
|
||||
<testcontainers.version>1.21.4</testcontainers.version>
|
||||
<docker-java.version>3.4.2</docker-java.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.quarkus.platform</groupId>
|
||||
<artifactId>quarkus-bom</artifactId>
|
||||
<version>${quarkus.platform.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.testcontainers</groupId>
|
||||
<artifactId>testcontainers-bom</artifactId>
|
||||
<version>${testcontainers.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.lions.user.manager</groupId>
|
||||
<artifactId>lions-user-manager-server-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- Lombok : pas dans Quarkus BOM -->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>${lombok.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- MapStruct : pas dans Quarkus BOM -->
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct</artifactId>
|
||||
<version>${mapstruct.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<artifactId>lions-user-manager-server-impl-quarkus</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
@@ -43,8 +43,7 @@ public class UserResource implements UserResourceApi {
|
||||
public UserDTO getUserById(String userId, String realmName) {
|
||||
log.info("GET /api/users/{} - realm: {}", userId, realmName);
|
||||
return userService.getUserById(userId, realmName)
|
||||
.orElseThrow(() -> new RuntimeException("Utilisateur non trouvé")); // ExceptionMapper should handle/map
|
||||
// to 404
|
||||
.orElseThrow(() -> new jakarta.ws.rs.NotFoundException("Utilisateur non trouvé"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -68,7 +68,7 @@ quarkus.datasource.jdbc.url=jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:543
|
||||
# ============================================
|
||||
# Hibernate ORM Configuration DEV
|
||||
# ============================================
|
||||
quarkus.hibernate-orm.database.generation=update
|
||||
quarkus.hibernate-orm.schema-management.strategy=update
|
||||
quarkus.hibernate-orm.log.sql=true
|
||||
|
||||
# ============================================
|
||||
@@ -89,11 +89,11 @@ quarkus.log.category."io.quarkus.oidc.runtime".level=DEBUG
|
||||
quarkus.log.category."io.quarkus.security".level=DEBUG
|
||||
quarkus.log.category."io.quarkus.security.runtime".level=DEBUG
|
||||
|
||||
quarkus.log.console.enable=true
|
||||
quarkus.log.console.enabled=true
|
||||
quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n
|
||||
|
||||
# File Logging pour Audit DEV
|
||||
quarkus.log.file.enable=true
|
||||
quarkus.log.file.enabled=true
|
||||
quarkus.log.file.path=logs/dev/lions-user-manager.log
|
||||
quarkus.log.file.rotation.max-file-size=10M
|
||||
quarkus.log.file.rotation.max-backup-index=3
|
||||
@@ -102,7 +102,7 @@ quarkus.log.file.rotation.max-backup-index=3
|
||||
# OpenAPI/Swagger Configuration DEV
|
||||
# ============================================
|
||||
quarkus.swagger-ui.always-include=true
|
||||
quarkus.swagger-ui.enable=true
|
||||
quarkus.swagger-ui.enabled=true
|
||||
|
||||
# ============================================
|
||||
# Dev Services DEV
|
||||
|
||||
@@ -75,7 +75,7 @@ quarkus.datasource.jdbc.url=jdbc:postgresql://${DB_HOST}:${DB_PORT:5432}/${DB_NA
|
||||
# ============================================
|
||||
# Hibernate ORM Configuration PROD
|
||||
# ============================================
|
||||
quarkus.hibernate-orm.database.generation=none
|
||||
quarkus.hibernate-orm.schema-management.strategy=none
|
||||
quarkus.hibernate-orm.log.sql=false
|
||||
|
||||
# ============================================
|
||||
@@ -91,17 +91,17 @@ quarkus.log.category."dev.lions.user.manager".level=INFO
|
||||
quarkus.log.category."org.keycloak".level=WARN
|
||||
quarkus.log.category."io.quarkus".level=INFO
|
||||
|
||||
quarkus.log.console.enable=true
|
||||
quarkus.log.console.enabled=true
|
||||
quarkus.log.console.format=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n
|
||||
|
||||
# File Logging désactivé en PROD (logs centralisés via Kubernetes)
|
||||
quarkus.log.file.enable=false
|
||||
quarkus.log.file.enabled=false
|
||||
|
||||
# ============================================
|
||||
# OpenAPI/Swagger Configuration PROD
|
||||
# ============================================
|
||||
quarkus.swagger-ui.always-include=true
|
||||
quarkus.swagger-ui.enable=true
|
||||
quarkus.swagger-ui.enabled=true
|
||||
quarkus.swagger-ui.urls.default=/lions-user-manager/q/openapi
|
||||
|
||||
# ============================================
|
||||
|
||||
@@ -15,7 +15,7 @@ quarkus.application.version=1.0.0
|
||||
# HTTP Configuration (COMMUNE)
|
||||
# ============================================
|
||||
quarkus.http.host=0.0.0.0
|
||||
quarkus.http.cors=true
|
||||
quarkus.http.cors.enabled=true
|
||||
quarkus.http.cors.methods=GET,POST,PUT,DELETE,PATCH,OPTIONS
|
||||
quarkus.http.cors.headers=*
|
||||
|
||||
|
||||
@@ -756,7 +756,7 @@ class UserServiceImplCompleteTest {
|
||||
when(keycloakAdminClient.getUsers(REALM)).thenReturn(usersResource);
|
||||
UserRepresentation existing = new UserRepresentation();
|
||||
existing.setUsername("existinguser");
|
||||
when(usersResource.search("existinguser", 0, 1, true)).thenReturn(List.of(existing));
|
||||
when(usersResource.searchByUsername("existinguser", true)).thenReturn(List.of(existing));
|
||||
|
||||
assertTrue(userService.usernameExists("existinguser", REALM));
|
||||
}
|
||||
@@ -764,7 +764,7 @@ class UserServiceImplCompleteTest {
|
||||
@Test
|
||||
void testUsernameExists_False() {
|
||||
when(keycloakAdminClient.getUsers(REALM)).thenReturn(usersResource);
|
||||
when(usersResource.search("newuser", 0, 1, true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.searchByUsername("newuser", true)).thenReturn(Collections.emptyList());
|
||||
|
||||
assertFalse(userService.usernameExists("newuser", REALM));
|
||||
}
|
||||
@@ -772,7 +772,7 @@ class UserServiceImplCompleteTest {
|
||||
@Test
|
||||
void testUsernameExists_Exception() {
|
||||
when(keycloakAdminClient.getUsers(REALM)).thenReturn(usersResource);
|
||||
when(usersResource.search("user", 0, 1, true)).thenThrow(new RuntimeException("error"));
|
||||
when(usersResource.searchByUsername("user", true)).thenThrow(new RuntimeException("error"));
|
||||
|
||||
assertFalse(userService.usernameExists("user", REALM)); // returns false on exception
|
||||
}
|
||||
@@ -969,7 +969,7 @@ class UserServiceImplCompleteTest {
|
||||
when(usersResource.searchByEmail("john@test.com", true)).thenReturn(Collections.emptyList());
|
||||
// Username doesn't exist
|
||||
when(usersResource.search("\"john\"", 0, 1, true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.search("john", 0, 1, true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.searchByUsername("john", true)).thenReturn(Collections.emptyList());
|
||||
|
||||
// Mock create response
|
||||
jakarta.ws.rs.core.Response response = mock(jakarta.ws.rs.core.Response.class);
|
||||
@@ -998,7 +998,7 @@ class UserServiceImplCompleteTest {
|
||||
when(keycloakAdminClient.getUsers(REALM)).thenReturn(usersResource);
|
||||
// Email doesn't exist
|
||||
when(usersResource.searchByEmail("john@test.com", true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.search("john", 0, 1, true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.searchByUsername("john", true)).thenReturn(Collections.emptyList());
|
||||
|
||||
jakarta.ws.rs.core.Response response = mock(jakarta.ws.rs.core.Response.class);
|
||||
when(response.getStatus()).thenReturn(201);
|
||||
|
||||
@@ -265,7 +265,7 @@ class UserServiceImplExtendedTest {
|
||||
UserRepresentation existingUser = new UserRepresentation();
|
||||
existingUser.setUsername("existinguser");
|
||||
existingUser.setEnabled(true);
|
||||
when(usersResource.search("existinguser", 0, 1, true)).thenReturn(List.of(existingUser));
|
||||
when(usersResource.searchByUsername("existinguser", true)).thenReturn(List.of(existingUser));
|
||||
|
||||
UserDTO userDTO = UserDTO.builder()
|
||||
.username("existinguser")
|
||||
@@ -282,7 +282,7 @@ class UserServiceImplExtendedTest {
|
||||
@Test
|
||||
void testCreateUser_EmailExists() {
|
||||
when(keycloakAdminClient.getUsers(REALM)).thenReturn(usersResource);
|
||||
when(usersResource.search("newuser", 0, 1, true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.searchByUsername("newuser", true)).thenReturn(Collections.emptyList());
|
||||
// emailExists calls searchByEmail which should return a non-empty list
|
||||
UserRepresentation existingUser = new UserRepresentation();
|
||||
existingUser.setEmail("existing@example.com");
|
||||
@@ -304,7 +304,7 @@ class UserServiceImplExtendedTest {
|
||||
@Test
|
||||
void testCreateUser_StatusNot201() {
|
||||
when(keycloakAdminClient.getUsers(REALM)).thenReturn(usersResource);
|
||||
when(usersResource.search("newuser", 0, 1, true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.searchByUsername("newuser", true)).thenReturn(Collections.emptyList());
|
||||
|
||||
UserDTO userDTO = UserDTO.builder()
|
||||
.username("newuser")
|
||||
@@ -323,7 +323,7 @@ class UserServiceImplExtendedTest {
|
||||
@Test
|
||||
void testCreateUser_WithTemporaryPassword() {
|
||||
when(keycloakAdminClient.getUsers(REALM)).thenReturn(usersResource);
|
||||
when(usersResource.search("newuser", 0, 1, true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.searchByUsername("newuser", true)).thenReturn(Collections.emptyList());
|
||||
|
||||
UserDTO userDTO = UserDTO.builder()
|
||||
.username("newuser")
|
||||
@@ -354,7 +354,7 @@ class UserServiceImplExtendedTest {
|
||||
@Test
|
||||
void testCreateUser_Exception() {
|
||||
when(keycloakAdminClient.getUsers(REALM)).thenReturn(usersResource);
|
||||
when(usersResource.search("newuser", 0, 1, true)).thenThrow(new RuntimeException("Connection error"));
|
||||
when(usersResource.searchByUsername("newuser", true)).thenThrow(new RuntimeException("Connection error"));
|
||||
|
||||
UserDTO userDTO = UserDTO.builder()
|
||||
.username("newuser")
|
||||
|
||||
@@ -460,7 +460,7 @@ class UserServiceImplIntegrationTest {
|
||||
|
||||
UserRepresentation user = new UserRepresentation();
|
||||
user.setUsername("existinguser");
|
||||
when(usersResource.search("existinguser", 0, 1, true)).thenReturn(List.of(user));
|
||||
when(usersResource.searchByUsername("existinguser", true)).thenReturn(List.of(user));
|
||||
|
||||
boolean exists = userService.usernameExists("existinguser", REALM);
|
||||
|
||||
@@ -470,7 +470,7 @@ class UserServiceImplIntegrationTest {
|
||||
@Test
|
||||
void testUsernameExists_False() {
|
||||
when(keycloakAdminClient.getUsers(REALM)).thenReturn(usersResource);
|
||||
when(usersResource.search("nonexistent", 0, 1, true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.searchByUsername("nonexistent", true)).thenReturn(Collections.emptyList());
|
||||
|
||||
boolean exists = userService.usernameExists("nonexistent", REALM);
|
||||
|
||||
@@ -480,7 +480,7 @@ class UserServiceImplIntegrationTest {
|
||||
@Test
|
||||
void testUsernameExists_Exception() {
|
||||
when(keycloakAdminClient.getUsers(REALM)).thenReturn(usersResource);
|
||||
when(usersResource.search("erroruser", 0, 1, true)).thenThrow(new RuntimeException("Error"));
|
||||
when(usersResource.searchByUsername("erroruser", true)).thenThrow(new RuntimeException("Error"));
|
||||
|
||||
boolean exists = userService.usernameExists("erroruser", REALM);
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ class UserServiceImplTest {
|
||||
UserDTO newUser = UserDTO.builder().username("newuser").email("new@example.com").build();
|
||||
|
||||
// Check exists
|
||||
when(usersResource.search("newuser", 0, 1, true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.searchByUsername("newuser", true)).thenReturn(Collections.emptyList());
|
||||
when(usersResource.searchByEmail("new@example.com", true)).thenReturn(Collections.emptyList());
|
||||
|
||||
// Mock creation response
|
||||
|
||||
@@ -28,7 +28,7 @@ quarkus.log.category."dev.lions.user.manager".level=WARN
|
||||
# Base de données H2 pour @QuarkusTest (pas de Docker requis)
|
||||
quarkus.datasource.db-kind=h2
|
||||
quarkus.datasource.jdbc.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=PostgreSQL
|
||||
quarkus.hibernate-orm.database.generation=drop-and-create
|
||||
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
|
||||
quarkus.flyway.enabled=false
|
||||
|
||||
# Désactiver tous les DevServices (Docker non disponible en local)
|
||||
|
||||
Reference in New Issue
Block a user