diff --git a/WEB/app/Models/EvenementStress.php b/WEB/app/Models/EvenementStress.php deleted file mode 100644 index 0f9341d..0000000 --- a/WEB/app/Models/EvenementStress.php +++ /dev/null @@ -1,10 +0,0 @@ - 'Admin']); - $user = User::factory()->create(['id_role' => $role->id]); + // L'accès au panel Filament exige un compte actif ET le rôle Admin + // (cf. User::canAccessPanel()). + $user = User::factory()->create([ + 'id_role' => $role->id, + 'is_active' => true, + ]); $response = $this->actingAs($user)->get('/admin'); diff --git a/WEB/tests/Feature/AuthSecurityTest.php b/WEB/tests/Feature/AuthSecurityTest.php index 81f52d0..6c1b106 100644 --- a/WEB/tests/Feature/AuthSecurityTest.php +++ b/WEB/tests/Feature/AuthSecurityTest.php @@ -2,11 +2,11 @@ namespace Tests\Feature; -use App\Models\User; use App\Models\Role; +use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; -use Tests\TestCase; use PHPUnit\Framework\Attributes\Test; +use Tests\TestCase; class AuthSecurityTest extends TestCase { @@ -30,9 +30,9 @@ class AuthSecurityTest extends TestCase // 2. Action : Simuler une connexion avec Sanctum $response = $this->actingAs($user, 'sanctum') - ->getJson('/api/profile'); // Remplace par une de tes routes protégées + ->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/Feature/BusinessLogicTest.php b/WEB/tests/Feature/BusinessLogicTest.php index 5b5aaa4..a7282b1 100644 --- a/WEB/tests/Feature/BusinessLogicTest.php +++ b/WEB/tests/Feature/BusinessLogicTest.php @@ -2,23 +2,30 @@ namespace Tests\Feature; -use App\Models\EvenementStress; +use App\Models\StressEvent; +use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; -use Illuminate\Foundation\Testing\WithFaker; -use Tests\TestCase; +use Laravel\Sanctum\Sanctum; use PHPUnit\Framework\Attributes\Test; +use Tests\TestCase; class BusinessLogicTest extends TestCase { + use RefreshDatabase; + #[Test] public function la_liste_des_evenements_de_stress_est_accessible() { - // On crée un événement simulé - EvenementStress::create(['libelle' => 'Mariage', 'points' => 50]); + // La route /api/stress-events est protégée par Sanctum : + // on simule un utilisateur authentifié via un jeton. + Sanctum::actingAs(User::factory()->create()); + + // On crée un événement de stress (échelle Holmes & Rahe) + StressEvent::create(['event_name' => 'Mariage', 'points' => 50]); $response = $this->getJson('/api/stress-events'); $response->assertStatus(200) - ->assertJsonFragment(['libelle' => 'Mariage']); + ->assertJsonFragment(['event_name' => 'Mariage']); } } diff --git a/WEB/tests/Feature/DiagnosticTest.php b/WEB/tests/Feature/DiagnosticTest.php index 4fbc8cf..d5ceee4 100644 --- a/WEB/tests/Feature/DiagnosticTest.php +++ b/WEB/tests/Feature/DiagnosticTest.php @@ -2,11 +2,10 @@ namespace Tests\Feature; -use Tests\TestCase; -use App\Models\User; use App\Models\StressEvent; -use App\Models\ResultatDiag; +use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; +use Tests\TestCase; class DiagnosticTest extends TestCase { @@ -26,7 +25,7 @@ class DiagnosticTest extends TestCase // Simuler une requête de diagnostic $response = $this->actingAs($user) ->post(route('diagnostics.store'), [ - 'events' => [$event1->id, $event2->id] + 'events' => [$event1->id, $event2->id], ]); // Vérifier la redirection et le score en session @@ -37,7 +36,7 @@ class DiagnosticTest extends TestCase $this->assertDatabaseHas('resultat_diags', [ 'id_user' => $user->id, 'score_total' => 160, - 'niveau_stress' => 'Modéré' + 'niveau_stress' => 'Modéré', ]); } } diff --git a/WEB/tests/Feature/SecurityHeadersTest.php b/WEB/tests/Feature/SecurityHeadersTest.php new file mode 100644 index 0000000..fe1c215 --- /dev/null +++ b/WEB/tests/Feature/SecurityHeadersTest.php @@ -0,0 +1,25 @@ +get('/'); + + $response->assertHeader('X-Frame-Options', 'SAMEORIGIN'); + $response->assertHeader('X-Content-Type-Options', 'nosniff'); + $response->assertHeader('Referrer-Policy', 'strict-origin-when-cross-origin'); + $response->assertHeader('Content-Security-Policy'); + $response->assertHeader('Permissions-Policy'); + } +} diff --git a/WEB/tests/Unit/StressCalculationTest.php b/WEB/tests/Unit/StressCalculationTest.php index 3311b14..4bb83cc 100644 --- a/WEB/tests/Unit/StressCalculationTest.php +++ b/WEB/tests/Unit/StressCalculationTest.php @@ -13,12 +13,12 @@ class StressCalculationTest extends TestCase { // 1. Préparation (Données simulées de Holmes et Rahe) $eventPoints = [100, 73, 50]; // Décès conjoint, Divorce, Mariage - + // 2. Action (La logique que tu veux tester) $totalScore = array_sum($eventPoints); // 3. Assertion (La vérification) - $this->assertEquals(223, $totalScore, "Le calcul du score total a échoué."); + $this->assertEquals(223, $totalScore, 'Le calcul du score total a échoué.'); } /** @@ -27,16 +27,16 @@ class StressCalculationTest extends TestCase public function test_stress_level_label(): void { $score = 250; - $level = ""; + $level = ''; if ($score >= 300) { - $level = "Risque élevé"; + $level = 'Risque élevé'; } elseif ($score >= 150) { - $level = "Risque modéré"; + $level = 'Risque modéré'; } else { - $level = "Risque léger"; + $level = 'Risque léger'; } - $this->assertEquals("Risque modéré", $level); + $this->assertEquals('Risque modéré', $level); } } diff --git a/WEB/tests/Unit/StressCalculatorTest.php b/WEB/tests/Unit/StressCalculatorTest.php index dce455a..b14d9d8 100644 --- a/WEB/tests/Unit/StressCalculatorTest.php +++ b/WEB/tests/Unit/StressCalculatorTest.php @@ -12,7 +12,7 @@ class StressCalculatorTest extends TestCase protected function setUp(): void { parent::setUp(); - $this->calculator = new StressCalculator(); + $this->calculator = new StressCalculator; } public function test_calculate_score_sums_points_correctly(): void