feat: add Docker support with demo mode and database reset functionality

This commit is contained in:
Paul Schoeneck committed 2026-11-03 08:50:48 +01:00
1 parent 75af38a4b6
commit 373b9278d1
12 files changed
+248 -5

No files matched your search

+16
View File
@@ -8,6 +8,22 @@ import { localClock, localInstant, pickupState } from "../src/lib/time";
import { childSchema, correctionSchema, daySchema, overrideSchema, aloneRulesSchema, contactSchema, slotSchema, applicationSchema } from "../src/lib/validation";
import { hashPassword, verifyPassword } from "../src/lib/password";
import { chooseWinners, invitationHash, newInvitation } from "../src/lib/admissions";
import { demoLogin, isDemoDatabase } from "../src/lib/demo";
test("Demozugang nur bei explizitem Modus; Container-Reset nur fuer isolierte Demo-Datenbank", () => {
const normal = { NODE_ENV: "test" } as const;
assert.equal(demoLogin(normal), undefined);
assert.equal(demoLogin({ ...normal, DEMO_MODE: "false" }), undefined);
assert.equal(demoLogin({ ...normal, DEMO_MODE: "TRUE" }), undefined);
const demo = { ...normal, DEMO_MODE: "true", DEMO_RESET_ON_START: "true" };
assert.deepEqual(demoLogin(demo), { email: "demo@kibu.local", password: "KIBU-Demo-2026!" });
const target = new URL("postgresql://demo-db/kibu_demo");
assert.equal(isDemoDatabase(target, demo), true);
assert.equal(isDemoDatabase(target, normal), false);
assert.equal(isDemoDatabase(target, { ...demo, DEMO_RESET_ON_START: "false" }), false);
assert.equal(isDemoDatabase(new URL("postgresql://demo-db/kibu"), demo), false);
assert.equal(isDemoDatabase(new URL("postgresql://production/kibu_demo"), demo), false);
});
test("Abholfenster: genau jetzt und bis einschließlich 15 Minuten, überfällig erst davor", () => {
assert.equal(pickupState(null, "14:00"), "none");