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>
37 lines
2.3 KiB
PHP
37 lines
2.3 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('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);
|
||
}
|
||
});
|