Pages /legal et /confidentialite réécrites d'après le système réel, purge des classes archivées depuis 90 jours (prouvée par Pest), archivage côté prof. Polices, xterm.js et CodeMirror ne sont plus chargés depuis Google ni jsDelivr. Pages d'aperçu signalées, sans vrais établissements ni faux chiffres. Journaux Laravel gardés 14 jours. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
36 lines
2.2 KiB
PHP
36 lines
2.2 KiB
PHP
<?php
|
||
|
||
test('les pages légales sont en ligne et la page de statut redirige vers le site de statut', function () {
|
||
$this->get(route('legal'))->assertOk()->assertSee('Esquisse Formation')->assertSee('RCS Paris 433 115 904');
|
||
$this->get(route('confidentialite'))->assertOk()
|
||
->assertSee('90 jours après l’archivage', false)
|
||
->assertSee('aucune adresse e-mail', false)
|
||
->assertSee('cdn.tailwindcss.com');
|
||
$this->get(route('statut'))->assertRedirect('https://status.syllabuslab.fr');
|
||
});
|
||
|
||
test('« Conforme au RGPD » renvoie à la politique de confidentialité, et rien n’affiche « Hébergé en France · Paris »', function () {
|
||
$accueil = $this->get(route('accueil'))->getContent();
|
||
|
||
expect($accueil)->toContain('href="'.route('confidentialite').'" style="color:#0b1220">Conforme au RGPD</a>')
|
||
->and($accueil)->toContain(route('statut'))
|
||
->and($accueil)->not->toContain('· Paris</span>')
|
||
->and($accueil)->not->toContain('20 cursus');
|
||
});
|
||
|
||
test('les pages d’aperçu sont signalées et ne citent aucun vrai établissement comme utilisateur', function () {
|
||
// Noms cherchés un par un : dans les tableaux, nom et ville sont dans
|
||
// deux cellules différentes (un premier test qui les cherchait collés
|
||
// laissait passer « Lycée Vauban | Brest »).
|
||
$vraisNoms = '/Vauban|Condorcet|Saint-Exupéry|Louis-Armand|Jean-Jaurès|Villetaneuse|Gustave-Eiffel|Martinière|Académie de (Créteil|Paris)/';
|
||
$apercus = ['/classes/suivi', '/examen', '/banque', '/quiz/projection', '/quiz', '/bibliotheque', '/generateur', '/labs/web',
|
||
'/maison', '/devoirs', '/td/imprimer', '/cockpit', '/mon-espace', '/vie-scolaire', '/eleves/fiche', '/correction',
|
||
'/sujets/creer', '/messagerie', '/exports', '/academie', '/paiement', '/paiement/confirme', '/compte/facturation',
|
||
'/etablissement', '/cohortes', '/visio', '/ressources/outil', '/ide', '/labs/essai', '/cours/adressage-ipv4',
|
||
'/cours/adressage-ipv4/cm', '/cours/fiche'];
|
||
foreach ($apercus as $route) {
|
||
$page = $this->get($route)->assertOk()->getContent();
|
||
expect($page)->toContain('Aperçu d’une fonction en préparation')
|
||
->and($page)->not->toMatch($vraisNoms, $route);
|
||
}
|
||
});
|