Paillasse/portail/tests/Feature/PagesLegalesTest.php
Adam Belkacemi ec4eae3744 ajoute la visio de classe : Jitsi auto-hébergé, jetons du portail, prof seul modérateur
Jitsi (docker-jitsi-meet, version figée) derrière Nginx sur meet.syllabuslab.fr,
accès par jeton JWT signé par le portail, modération du micro, mains levées
synchronisées avec l'application. Pare-feu : UDP 10000 et pont interne
br-visio (accords d'Adam). Jicofo n'authentifie plus lui-même : il donnait
le rôle de propriétaire aux élèves. Capacité ramenée à 20 VM.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 12:35:35 +02:00

37 lines
2.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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('entrepreneur individuel (EI)')->assertSee('SIREN 838 093 268')->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')
->assertSee('sans être enregistrés', false);
$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);
}
});