From f3092f2dc4f3a2662ff4f486288256f908bbd282 Mon Sep 17 00:00:00 2001 From: Sam DEPARDIEU Date: Thu, 23 Apr 2026 18:30:26 +0200 Subject: [PATCH] Ajout d'un test unitaire sur auth et calcul de stress --- WEB/app/Models/Role.php | 11 ++++++- WEB/app/Models/User.php | 1 + WEB/tests/Feature/AuthSecurityTest.php | 38 +++++++++++++++++++++ WEB/tests/Unit/StressCalculationTest.php | 42 ++++++++++++++++++++++++ 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 WEB/tests/Feature/AuthSecurityTest.php create mode 100644 WEB/tests/Unit/StressCalculationTest.php diff --git a/WEB/app/Models/Role.php b/WEB/app/Models/Role.php index 3f2c7fc..8aefa89 100644 --- a/WEB/app/Models/Role.php +++ b/WEB/app/Models/Role.php @@ -3,8 +3,17 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Factories\HasFactory; class Role extends Model { - // + use HasFactory; + + // Cette ligne est CRUCIALE : elle autorise Laravel à remplir la colonne 'libelle' + protected $fillable = ['libelle']; + + public function users() + { + return $this->hasMany(User::class, 'id_role'); + } } diff --git a/WEB/app/Models/User.php b/WEB/app/Models/User.php index 09ba783..c8399ab 100644 --- a/WEB/app/Models/User.php +++ b/WEB/app/Models/User.php @@ -24,6 +24,7 @@ class User extends Authenticatable 'name', 'email', 'password', + 'id_role', ]; /** diff --git a/WEB/tests/Feature/AuthSecurityTest.php b/WEB/tests/Feature/AuthSecurityTest.php new file mode 100644 index 0000000..81f52d0 --- /dev/null +++ b/WEB/tests/Feature/AuthSecurityTest.php @@ -0,0 +1,38 @@ +postJson('/api/update-profile'); + + $response->assertStatus(401); + } + + #[Test] + public function un_utilisateur_authentifie_peut_acceder_a_son_profil() + { + // 1. Préparation : Créer un rôle et un utilisateur + $role = Role::create(['libelle' => 'Utilisateur']); + $user = User::factory()->create(['id_role' => $role->id]); + + // 2. Action : Simuler une connexion avec Sanctum + $response = $this->actingAs($user, 'sanctum') + ->getJson('/api/profile'); // Remplace par une de tes routes protégées + + // 3. Assertion : Vérifier que l'accès est accordé (200) + $response->assertStatus(200); + } +} \ No newline at end of file diff --git a/WEB/tests/Unit/StressCalculationTest.php b/WEB/tests/Unit/StressCalculationTest.php new file mode 100644 index 0000000..3311b14 --- /dev/null +++ b/WEB/tests/Unit/StressCalculationTest.php @@ -0,0 +1,42 @@ +assertEquals(223, $totalScore, "Le calcul du score total a échoué."); + } + + /** + * Teste la détermination du niveau de stress. + */ + public function test_stress_level_label(): void + { + $score = 250; + $level = ""; + + if ($score >= 300) { + $level = "Risque élevé"; + } elseif ($score >= 150) { + $level = "Risque modéré"; + } else { + $level = "Risque léger"; + } + + $this->assertEquals("Risque modéré", $level); + } +}