Task 1.7 - Tests exhaustifs Phase 1 - Tests de base fonctionnels
- Ajout de PasswordChangeDTO dans gbcm-server-api - Ajout de quarkus-junit5-mockito dans pom.xml - Création de SimpleTest pour vérifier l'environnement de test - Création de AuthServiceImplTest avec 10 tests de base - Tests compilent et passent avec succès - Rapport JaCoCo généré avec couverture partielle - Base solide pour étendre les tests vers 100% de couverture
This commit is contained in:
177
src/test/java/com/gbcm/server/impl/SimpleTest.java
Normal file
177
src/test/java/com/gbcm/server/impl/SimpleTest.java
Normal file
@@ -0,0 +1,177 @@
|
||||
package com.gbcm.server.impl;
|
||||
|
||||
import io.quarkus.test.junit.QuarkusTest;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* Tests simples pour vérifier que l'environnement de test fonctionne.
|
||||
*
|
||||
* @author GBCM Team
|
||||
* @version 1.0.0
|
||||
* @since 2024-01-01
|
||||
*/
|
||||
@QuarkusTest
|
||||
@DisplayName("Tests simples - Environnement de test")
|
||||
class SimpleTest {
|
||||
|
||||
/**
|
||||
* Test basique pour vérifier que JUnit fonctionne.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Test basique JUnit")
|
||||
void testBasicJUnit() {
|
||||
// Given
|
||||
String expected = "Hello GBCM";
|
||||
|
||||
// When
|
||||
String actual = "Hello GBCM";
|
||||
|
||||
// Then
|
||||
assertThat(actual).isEqualTo(expected);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test pour vérifier que AssertJ fonctionne.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Test AssertJ")
|
||||
void testAssertJ() {
|
||||
// Given
|
||||
int number = 42;
|
||||
|
||||
// When & Then
|
||||
assertThat(number)
|
||||
.isPositive()
|
||||
.isEqualTo(42)
|
||||
.isGreaterThan(40)
|
||||
.isLessThan(50);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test pour vérifier que Quarkus Test fonctionne.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Test Quarkus Test")
|
||||
void testQuarkusTest() {
|
||||
// Given
|
||||
String applicationName = "gbcm-server";
|
||||
|
||||
// When & Then
|
||||
assertThat(applicationName)
|
||||
.isNotNull()
|
||||
.isNotBlank()
|
||||
.contains("gbcm");
|
||||
}
|
||||
|
||||
/**
|
||||
* Test pour vérifier les exceptions.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Test gestion des exceptions")
|
||||
void testExceptions() {
|
||||
// When & Then
|
||||
assertThatThrownBy(() -> {
|
||||
throw new IllegalArgumentException("Test exception");
|
||||
})
|
||||
.isInstanceOf(IllegalArgumentException.class)
|
||||
.hasMessage("Test exception");
|
||||
}
|
||||
|
||||
/**
|
||||
* Test pour vérifier les collections.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Test collections")
|
||||
void testCollections() {
|
||||
// Given
|
||||
java.util.List<String> roles = java.util.Arrays.asList("ADMIN", "COACH", "CLIENT");
|
||||
|
||||
// When & Then
|
||||
assertThat(roles)
|
||||
.isNotEmpty()
|
||||
.hasSize(3)
|
||||
.contains("ADMIN", "COACH", "CLIENT")
|
||||
.doesNotContain("UNKNOWN");
|
||||
}
|
||||
|
||||
/**
|
||||
* Test pour vérifier les objets null.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Test objets null")
|
||||
void testNullObjects() {
|
||||
// Given
|
||||
String nullString = null;
|
||||
String notNullString = "GBCM";
|
||||
|
||||
// When & Then
|
||||
assertThat(nullString).isNull();
|
||||
assertThat(notNullString).isNotNull();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test pour vérifier les booléens.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Test booléens")
|
||||
void testBooleans() {
|
||||
// Given
|
||||
boolean isActive = true;
|
||||
boolean isDeleted = false;
|
||||
|
||||
// When & Then
|
||||
assertThat(isActive).isTrue();
|
||||
assertThat(isDeleted).isFalse();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test pour vérifier les chaînes de caractères.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Test chaînes de caractères")
|
||||
void testStrings() {
|
||||
// Given
|
||||
String email = "admin@gbcm.com";
|
||||
|
||||
// When & Then
|
||||
assertThat(email)
|
||||
.isNotBlank()
|
||||
.contains("@")
|
||||
.startsWith("admin")
|
||||
.endsWith(".com")
|
||||
.hasSize(14);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test pour vérifier les nombres.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Test nombres")
|
||||
void testNumbers() {
|
||||
// Given
|
||||
int userId = 1;
|
||||
double price = 99.99;
|
||||
|
||||
// When & Then
|
||||
assertThat(userId).isPositive().isEqualTo(1);
|
||||
assertThat(price).isPositive().isBetween(90.0, 100.0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test pour vérifier les dates.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Test dates")
|
||||
void testDates() {
|
||||
// Given
|
||||
java.time.LocalDateTime now = java.time.LocalDateTime.now();
|
||||
java.time.LocalDateTime future = now.plusDays(1);
|
||||
|
||||
// When & Then
|
||||
assertThat(now).isBefore(future);
|
||||
assertThat(future).isAfter(now);
|
||||
}
|
||||
}
|
||||
139
src/test/resources/application.properties
Normal file
139
src/test/resources/application.properties
Normal file
@@ -0,0 +1,139 @@
|
||||
# Configuration de test pour GBCM Server
|
||||
# Optimisée pour l'exécution rapide des tests
|
||||
|
||||
# Application
|
||||
quarkus.application.name=gbcm-server-test
|
||||
quarkus.application.version=1.0.0-SNAPSHOT
|
||||
|
||||
# Base de données H2 en mémoire pour les tests
|
||||
quarkus.datasource.db-kind=h2
|
||||
quarkus.datasource.jdbc.url=jdbc:h2:mem:gbcm_test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
|
||||
quarkus.datasource.username=sa
|
||||
quarkus.datasource.password=
|
||||
|
||||
# Hibernate - Création automatique du schéma pour les tests
|
||||
quarkus.hibernate-orm.database.generation=drop-and-create
|
||||
quarkus.hibernate-orm.sql-load-script=import.sql
|
||||
|
||||
# Flyway désactivé pour les tests (on utilise Hibernate)
|
||||
quarkus.flyway.migrate-at-start=false
|
||||
|
||||
# Logs optimisés pour les tests
|
||||
quarkus.log.level=WARN
|
||||
quarkus.log.category."com.gbcm".level=INFO
|
||||
quarkus.log.category."org.hibernate".level=WARN
|
||||
quarkus.log.category."io.quarkus".level=WARN
|
||||
|
||||
# Configuration JWT pour les tests
|
||||
gbcm.security.jwt.access-token.duration=PT1H
|
||||
gbcm.security.jwt.refresh-token.duration=P1D
|
||||
gbcm.security.jwt.reset-token.duration=PT1H
|
||||
gbcm.security.jwt.secret=test-secret-key-for-unit-tests-only
|
||||
|
||||
# Configuration de sécurité allégée pour les tests
|
||||
gbcm.security.password.bcrypt-cost=4
|
||||
gbcm.security.password.min-length=6
|
||||
gbcm.security.password.require-uppercase=false
|
||||
gbcm.security.password.require-lowercase=false
|
||||
gbcm.security.password.require-digit=false
|
||||
gbcm.security.password.require-special=false
|
||||
|
||||
# Configuration de compte pour les tests
|
||||
gbcm.security.account.max-failed-attempts=10
|
||||
gbcm.security.account.lockout-duration=PT1M
|
||||
gbcm.security.password.max-age=P365D
|
||||
|
||||
# Configuration email pour les tests (simulation)
|
||||
quarkus.mailer.mock=true
|
||||
|
||||
# Configuration OpenAPI pour les tests
|
||||
quarkus.smallrye-openapi.path=/openapi
|
||||
quarkus.swagger-ui.path=/swagger-ui
|
||||
quarkus.swagger-ui.always-include=true
|
||||
|
||||
# Configuration de santé pour les tests
|
||||
quarkus.smallrye-health.root-path=/health
|
||||
|
||||
# Configuration des métriques pour les tests
|
||||
quarkus.micrometer.enabled=false
|
||||
|
||||
# Configuration du cache pour les tests
|
||||
quarkus.cache.caffeine."qute-cache".initial-capacity=10
|
||||
quarkus.cache.caffeine."qute-cache".maximum-size=100
|
||||
|
||||
# Configuration de sécurité JPA pour les tests
|
||||
quarkus.security.jpa.enabled=true
|
||||
quarkus.security.jpa.principal-query=SELECT u.email, u.password_hash, u.role FROM users u WHERE u.email=? AND u.active=true AND u.deleted=false
|
||||
quarkus.security.jpa.roles-query=SELECT r.role FROM users r WHERE r.email=?
|
||||
|
||||
# Configuration HTTP pour les tests
|
||||
quarkus.http.port=8081
|
||||
quarkus.http.test-port=8081
|
||||
|
||||
# Configuration de développement désactivée pour les tests
|
||||
quarkus.live-reload.instrumentation=false
|
||||
|
||||
# Configuration des tests
|
||||
quarkus.test.hang-detection-timeout=60s
|
||||
quarkus.test.display-test-output=true
|
||||
|
||||
# Configuration JaCoCo
|
||||
quarkus.jacoco.enabled=true
|
||||
quarkus.jacoco.data-file=target/jacoco.exec
|
||||
quarkus.jacoco.report-location=target/site/jacoco
|
||||
|
||||
# Configuration des transactions pour les tests
|
||||
quarkus.transaction-manager.enable-recovery=false
|
||||
|
||||
# Configuration de la validation pour les tests
|
||||
quarkus.hibernate-validator.fail-fast=false
|
||||
|
||||
# Configuration REST pour les tests
|
||||
quarkus.resteasy-reactive.fail-on-duplicate=false
|
||||
|
||||
# Configuration de sérialisation pour les tests
|
||||
quarkus.jackson.fail-on-unknown-properties=false
|
||||
quarkus.jackson.write-dates-as-timestamps=false
|
||||
|
||||
# Configuration de contexte pour les tests
|
||||
quarkus.smallrye-context-propagation.enabled=true
|
||||
|
||||
# Configuration de scheduling désactivée pour les tests
|
||||
quarkus.scheduler.enabled=false
|
||||
|
||||
# Configuration de développement
|
||||
%test.quarkus.log.console.enable=true
|
||||
%test.quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n
|
||||
%test.quarkus.log.console.level=INFO
|
||||
|
||||
# Configuration spécifique aux tests d'intégration
|
||||
%test.quarkus.http.auth.basic=false
|
||||
%test.quarkus.http.cors=true
|
||||
%test.quarkus.http.cors.origins=*
|
||||
%test.quarkus.http.cors.methods=GET,PUT,POST,DELETE,OPTIONS
|
||||
%test.quarkus.http.cors.headers=accept,authorization,content-type,x-requested-with
|
||||
|
||||
# Configuration de la base de données pour les tests d'intégration
|
||||
%test.quarkus.datasource.devservices.enabled=false
|
||||
|
||||
# Configuration des conteneurs de test (Testcontainers)
|
||||
%testcontainer.quarkus.datasource.db-kind=postgresql
|
||||
%testcontainer.quarkus.datasource.username=test
|
||||
%testcontainer.quarkus.datasource.password=test
|
||||
%testcontainer.quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/test
|
||||
|
||||
# Configuration de performance pour les tests
|
||||
%test.quarkus.hibernate-orm.jdbc.statement-batch-size=20
|
||||
%test.quarkus.hibernate-orm.fetch-size=100
|
||||
%test.quarkus.hibernate-orm.jdbc.statement-fetch-size=100
|
||||
|
||||
# Configuration de pool de connexions pour les tests
|
||||
%test.quarkus.datasource.jdbc.initial-size=1
|
||||
%test.quarkus.datasource.jdbc.min-size=1
|
||||
%test.quarkus.datasource.jdbc.max-size=5
|
||||
|
||||
# Configuration de timeout pour les tests
|
||||
%test.quarkus.datasource.jdbc.acquisition-timeout=5
|
||||
%test.quarkus.datasource.jdbc.background-validation-interval=2M
|
||||
%test.quarkus.datasource.jdbc.idle-removal-interval=5M
|
||||
%test.quarkus.datasource.jdbc.max-lifetime=10M
|
||||
Reference in New Issue
Block a user