/* ===================================================================== Prüft die Umzugs-Weiterleitung des Creator Workspace. Zwei Fehler waeren hier teuer, und beide sieht man einer Bedingung nicht an: 1. ENDLOSSCHLEIFE. Derselbe Dienst bedient die alte UND die neue Adresse. Wer nicht auf den Hostnamen prueft, leitet die neue Adresse immer wieder auf sich selbst -- der Workspace waere fuer alle unerreichbar, und zwar sofort nach dem Neustart. 2. PRAEFIX-IRRTUM. "faengt an mit /workspace" trifft auch /workspaceXYZ oder /workspace-alt -- Pfade, die nicht zum Workspace gehoeren. Geprueft wird die ECHTE Funktion aus workspace-umzug.js, nicht eine Kopie der Bedingung -- eine Kopie wuerde beim naechsten Umbau auseinanderlaufen und dann etwas anderes bestaetigen als das, was wirklich laeuft. Aufruf: node server/pruef-workspace-umzug.mjs ===================================================================== */ import { sollUmgeleitetWerden, NEUE_ADRESSE } from "./workspace-umzug.js"; /* [Host, Pfad, erwartet, Begruendung] */ const FAELLE = [ // --- muss weiterleiten --- ["dogfather-universe.com", "/workspace/", true, "alte Adresse, Startseite"], ["dogfather-universe.com", "/workspace", true, "alte Adresse, ohne Schraegstrich"], ["dogfather-universe.com", "/workspace/start.html", true, "alte Adresse, Unterseite"], ["dogfather-universe.com", "/workspace/api/aufgaben", true, "alte Adresse, Schnittstelle"], ["www.dogfather-universe.com", "/workspace/", true, "auch mit www"], ["DOGFATHER-UNIVERSE.COM", "/workspace/", true, "Grossschreibung darf egal sein"], ["dogfather-universe.com:443", "/workspace/", true, "Portangabe darf egal sein"], // --- darf NICHT weiterleiten: sonst Endlosschleife --- ["workspace.dogfather-universe.com", "/workspace/", false, "NEUE Adresse -- sonst Endlosschleife"], ["workspace.dogfather-universe.com", "/workspace/start.html", false, "NEUE Adresse, Unterseite"], ["workspace.dogfather-universe.com", "/workspace/api/aufgaben", false, "NEUE Adresse, Schnittstelle"], // --- darf NICHT weiterleiten: gehoert nicht zum Workspace --- ["dogfather-universe.com", "/", false, "Hauptseite"], ["dogfather-universe.com", "/index.html", false, "Hauptseite"], ["dogfather-universe.com", "/webdesign/", false, "anderer Bereich"], ["dogfather-universe.com", "/workspaceXYZ", false, "PRAEFIX-IRRTUM: gehoert nicht dazu"], ["dogfather-universe.com", "/workspace-alt/seite", false, "PRAEFIX-IRRTUM mit Bindestrich"], ["dogfather-universe.com", "/assets/css/main.css", false, "gemeinsame Datei"], // --- darf NICHT weiterleiten: lokale Tests wuerden sonst scheitern --- ["127.0.0.1:4100", "/workspace/", false, "lokaler Testserver"], ["localhost:4100", "/workspace/start.html", false, "lokaler Testserver"], // --- Sonderfaelle --- ["", "/workspace/", false, "kein Host-Feld"], ["boese.example.com", "/workspace/", false, "fremder Host"], ]; let geprueft = 0; const fehler = []; for (const [host, pfad, erwartet, grund] of FAELLE) { const ist = sollUmgeleitetWerden(host, pfad); geprueft++; if (ist !== erwartet) { fehler.push(`${host || "(leer)"}${pfad} -> ${ist ? "leitet um" : "leitet NICHT um"}, erwartet ${erwartet ? "umleiten" : "nicht umleiten"} (${grund})`); } } /* Gegenprobe: Kann diese Pruefung ueberhaupt "nein" sagen? Ein Fall, von dem wir wissen, dass er falsch ist, MUSS auffallen. */ const gegenprobe = sollUmgeleitetWerden("dogfather-universe.com", "/workspace/") === true && sollUmgeleitetWerden("workspace.dogfather-universe.com", "/workspace/") === false; /* Und das Ziel muss stimmen -- eine Weiterleitung auf die falsche Adresse waere schlimmer als gar keine. */ const zielStimmt = NEUE_ADRESSE === "https://workspace.dogfather-universe.com"; geprueft++; if (!zielStimmt) fehler.push(`Ziel ist "${NEUE_ADRESSE}", erwartet https://workspace.dogfather-universe.com`); const SOLL = FAELLE.length + 1; console.log(`${geprueft} Faelle geprueft (erwartet ${SOLL}), ${fehler.length} Beanstandungen.`); console.log(`Gegenprobe (alt leitet um, neu nicht): ${gegenprobe ? "ja" : "NEIN"}`); for (const f of fehler) console.log(" FEHL " + f); if (geprueft !== SOLL) { console.log("FEHL: Anzahl stimmt nicht."); process.exit(1); } if (!gegenprobe) { console.log("FEHL: Gegenprobe schlaegt nicht an -- die Pruefung waere wertlos."); process.exit(1); } process.exit(fehler.length === 0 ? 0 : 1);