Test fuer den Quellen-Vorrang
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
/* Prüft, welche Quelle sich durchsetzt — Verwaltung oder Serverdatei.
|
||||
|
||||
Anlass (23.08.2026): In der .env stand PAYPAL_ENV=sandbox. Filipe
|
||||
stellte im Formular auf "Echtbetrieb", und nichts geschah, weil der
|
||||
Serverwert damals Vorrang hatte. Seine echten Zugangsdaten wurden
|
||||
gegen den TESTSERVER von PayPal geprüft, der sie zwangsläufig ablehnte
|
||||
— und die Meldung zeigte auf die Zugangsdaten statt auf die
|
||||
Betriebsart.
|
||||
|
||||
Der Vorrang ist deshalb umgedreht: Was in der Verwaltung steht, gilt.
|
||||
Dieser Test hält das fest.
|
||||
*/
|
||||
import { mkdtempSync, rmSync, appendFileSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { randomBytes } from "node:crypto";
|
||||
|
||||
const tmp = mkdtempSync(join(tmpdir(), "wd-vorrang-"));
|
||||
process.env.DB_PATH = join(tmp, "t.db");
|
||||
process.env.ENCRYPTION_KEY = randomBytes(32).toString("base64");
|
||||
process.env.PAYPAL_ENV = "sandbox"; // genau wie in Filipes .env
|
||||
|
||||
const LOG = "/tmp/wd-vorrang.log";
|
||||
const L = (...a) => { try { appendFileSync(LOG, a.join(" ") + "\n"); } catch (e) {} console.log(...a); };
|
||||
|
||||
const { initDb } = await import("./db.js");
|
||||
initDb();
|
||||
const geheim = await import("./lib/webdesign-geheimnisse.js");
|
||||
const paypal = await import("./lib/webdesign-paypal.js");
|
||||
await geheim.geheimnisseLaden();
|
||||
|
||||
let ok = 0, fehler = 0;
|
||||
const pruefe = (n, b, z) => {
|
||||
if (b) { ok++; L(" ok " + n); }
|
||||
else { fehler++; L(" FEHL " + n + (z ? " -> " + z : "")); }
|
||||
};
|
||||
|
||||
L("\n1. AUSGANGSLAGE — Serverdatei sagt sandbox");
|
||||
pruefe("der Serverwert greift, solange nichts eingetragen ist",
|
||||
geheim.einstellung("PAYPAL_ENV") === "sandbox");
|
||||
pruefe("istLive() ist falsch", paypal.istLive() === false);
|
||||
pruefe("die Anzeige nennt den Server als Quelle",
|
||||
geheim.stand().PAYPAL_ENV.quelle === "server");
|
||||
|
||||
L("\n2. IM FORMULAR AUF ECHTBETRIEB STELLEN");
|
||||
await geheim.einstellungSetzen("PAYPAL_ENV", "live");
|
||||
pruefe("die Verwaltung setzt sich durch",
|
||||
geheim.einstellung("PAYPAL_ENV") === "live", geheim.einstellung("PAYPAL_ENV"));
|
||||
pruefe("istLive() ist jetzt WAHR — das war der ganze Fehler",
|
||||
paypal.istLive() === true);
|
||||
|
||||
const st = geheim.stand();
|
||||
pruefe("die Anzeige nennt die Verwaltung als Quelle", st.PAYPAL_ENV.quelle === "verwaltung", st.PAYPAL_ENV.quelle);
|
||||
pruefe("und weist auf den überstimmten Serverwert hin", st.PAYPAL_ENV.auchAufServer === true);
|
||||
pruefe("der angezeigte Wert ist der WIRKSAME, nicht der aus der Datei",
|
||||
st.PAYPAL_ENV.wert === "live", String(st.PAYPAL_ENV.wert));
|
||||
|
||||
L("\n3. WIEDER LEEREN — der Serverwert greift zurück");
|
||||
await geheim.einstellungSetzen("PAYPAL_ENV", "");
|
||||
pruefe("zurück auf sandbox", geheim.einstellung("PAYPAL_ENV") === "sandbox");
|
||||
pruefe("Quelle wieder server", geheim.stand().PAYPAL_ENV.quelle === "server");
|
||||
pruefe("kein Hinweis mehr auf einen überstimmten Wert",
|
||||
geheim.stand().PAYPAL_ENV.auchAufServer === false);
|
||||
|
||||
L("\n4. ZUGANGSDATEN VERHALTEN SICH GENAUSO");
|
||||
process.env.PAYPAL_CLIENT_ID = "AUS-DER-SERVERDATEI";
|
||||
pruefe("ohne Eintrag gilt die Serverdatei",
|
||||
geheim.einstellung("PAYPAL_CLIENT_ID") === "AUS-DER-SERVERDATEI");
|
||||
await geheim.einstellungSetzen("PAYPAL_CLIENT_ID", "IM-FORMULAR-EINGETRAGEN");
|
||||
pruefe("mit Eintrag gilt das Formular",
|
||||
geheim.einstellung("PAYPAL_CLIENT_ID") === "IM-FORMULAR-EINGETRAGEN");
|
||||
pruefe("und die Anzeige sagt, dass der Serverwert nicht benutzt wird",
|
||||
geheim.stand().PAYPAL_CLIENT_ID.auchAufServer === true);
|
||||
|
||||
L("\n5. DAS SUPPORTER-ABO BLEIBT UNBERUEHRT");
|
||||
/* Es liest über ein eigenes Modul direkt aus der Umgebung. Ein Eintrag
|
||||
im Webdesign-Formular darf dort nichts verändern — sonst könnte man
|
||||
mit einem Tippfehler das laufende DogiCrew-Abo abschalten. */
|
||||
pruefe("die Umgebungsvariable selbst wurde nicht verändert",
|
||||
process.env.PAYPAL_CLIENT_ID === "AUS-DER-SERVERDATEI",
|
||||
String(process.env.PAYPAL_CLIENT_ID));
|
||||
|
||||
L(`\n===== ${ok} bestanden, ${fehler} fehlgeschlagen =====`);
|
||||
process.on("exit", () => rmSync(tmp, { recursive: true, force: true }));
|
||||
process.exitCode = fehler ? 1 : 0;
|
||||
Reference in New Issue
Block a user