| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import { describe, it, expect } from "vitest";
- import { validateEnv, MIN_SESSION_SECRET_LENGTH } from "./validateEnv.js";
- function validSecret() {
- return "x".repeat(MIN_SESSION_SECRET_LENGTH);
- }
- describe("validateEnv", () => {
- it("returns normalized config for a valid env", () => {
- const cfg = validateEnv({
- MONGODB_URI: "mongodb://localhost:27017/rhl",
- SESSION_SECRET: validSecret(),
- NAS_ROOT_PATH: "/mnt/niederlassungen/",
- PORT: "3000",
- });
- expect(cfg.mongodbUri).toBe("mongodb://localhost:27017/rhl");
- expect(cfg.sessionSecret).toBe(validSecret());
- expect(cfg.nasRootPath).toBe("/mnt/niederlassungen");
- expect(cfg.nodeEnv).toBe("development");
- expect(cfg.port).toBe(3000);
- expect(cfg.searchProvider).toBe("fs");
- });
- it("accepts optional SESSION_COOKIE_SECURE=false", () => {
- expect(() =>
- validateEnv({
- MONGODB_URI: "mongodb://localhost:27017/rhl",
- SESSION_SECRET: validSecret(),
- NAS_ROOT_PATH: "/mnt/niederlassungen",
- NODE_ENV: "production",
- SESSION_COOKIE_SECURE: "false",
- })
- ).not.toThrow();
- });
- it("rejects invalid SEARCH_PROVIDER values", () => {
- expect(() =>
- validateEnv({
- MONGODB_URI: "mongodb://localhost:27017/rhl",
- SESSION_SECRET: validSecret(),
- NAS_ROOT_PATH: "/mnt/niederlassungen",
- SEARCH_PROVIDER: "nope",
- })
- ).toThrow(/SEARCH_PROVIDER/i);
- });
- it("requires Qsirch env keys when SEARCH_PROVIDER=qsirch", () => {
- expect(() =>
- validateEnv({
- MONGODB_URI: "mongodb://localhost:27017/rhl",
- SESSION_SECRET: validSecret(),
- NAS_ROOT_PATH: "/mnt/niederlassungen",
- SEARCH_PROVIDER: "qsirch",
- })
- ).toThrow(
- /QSIRCH_BASE_URL|QSIRCH_ACCOUNT|QSIRCH_PASSWORD|QSIRCH_PATH_PREFIX/i
- );
- });
- it("accepts a valid qsirch configuration", () => {
- expect(() =>
- validateEnv({
- MONGODB_URI: "mongodb://localhost:27017/rhl",
- SESSION_SECRET: validSecret(),
- NAS_ROOT_PATH: "/mnt/niederlassungen",
- SEARCH_PROVIDER: "qsirch",
- QSIRCH_BASE_URL: "http://192.168.0.22:8080",
- QSIRCH_ACCOUNT: "rhl_search",
- QSIRCH_PASSWORD: "super-secret",
- QSIRCH_PATH_PREFIX: "/Niederlassungen",
- QSIRCH_DATE_FIELD: "modified",
- QSIRCH_MODE: "sync",
- })
- ).not.toThrow();
- });
- });
|