get('/'); $response->assertStatus(200); $response->assertHeader('X-Content-Type-Options', 'nosniff'); $response->assertHeader('X-Frame-Options', 'SAMEORIGIN'); $response->assertHeader('Referrer-Policy', 'strict-origin-when-cross-origin'); $response->assertHeader('Content-Security-Policy'); $response->assertHeader('Permissions-Policy'); } /** * Vérifie que les pages protégées redirigent un visiteur non authentifié * vers la page de connexion (contrôle d'accès). */ public function test_les_pages_protegees_exigent_une_authentification(): void { $response = $this->get('/profile/settings'); $response->assertRedirect('/login'); } /** * Vérifie le droit à l'effacement RGPD : la suppression du compte * anonymise bien les données personnelles de l'utilisateur. */ public function test_la_suppression_de_compte_anonymise_les_donnees(): void { $role = Role::create(['Nom' => 'Utilisateur']); $user = Utilisateur::create([ 'Pseudo' => 'JeanDupont', 'Email' => 'jean.dupont@example.com', 'MotDePasse' => Hash::make('motdepasse123'), 'ID_Role' => $role->ID_Role, 'Statut' => 'Actif', ]); $response = $this->actingAs($user)->delete('/profile', [ 'MotDePasse_Confirmation' => 'motdepasse123', ]); $response->assertRedirect('/'); $user->refresh(); $this->assertSame('Utilisateur supprimé', $user->Pseudo); $this->assertSame('Inactif', $user->Statut); $this->assertStringNotContainsString('jean.dupont', $user->Email); } }