/* @vitest-environment node */ import { describe, it, expect } from "vitest"; import { ApiClientError } from "@/lib/frontend/apiClient"; import { LOGIN_REASONS } from "@/lib/frontend/authRedirect"; import { getLoginReasonAlert, getLoginErrorMessage } from "./authMessages.js"; describe("lib/frontend/authMessages", () => { describe("getLoginReasonAlert", () => { it("returns alert copy for reason=expired", () => { expect(getLoginReasonAlert(LOGIN_REASONS.EXPIRED)).toEqual({ title: "Sitzung abgelaufen", description: "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.", }); }); it("returns alert copy for reason=logged-out", () => { expect(getLoginReasonAlert(LOGIN_REASONS.LOGGED_OUT)).toEqual({ title: "Abgemeldet", description: "Sie wurden erfolgreich abgemeldet.", }); }); it("returns null for unknown or missing reason", () => { expect(getLoginReasonAlert(null)).toBe(null); expect(getLoginReasonAlert("unknown")).toBe(null); }); }); describe("getLoginErrorMessage", () => { it("maps AUTH_INVALID_CREDENTIALS to a friendly message", () => { const err = new ApiClientError({ status: 401, code: "AUTH_INVALID_CREDENTIALS", message: "Invalid credentials", }); expect(getLoginErrorMessage(err)).toBe( "Benutzername oder Passwort ist falsch." ); }); it("maps CLIENT_NETWORK_ERROR to a friendly message", () => { const err = new ApiClientError({ status: 0, code: "CLIENT_NETWORK_ERROR", message: "Network error", }); expect(getLoginErrorMessage(err)).toBe( "Netzwerkfehler. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es erneut." ); }); it("uses a generic message for other errors", () => { expect(getLoginErrorMessage(new Error("boom"))).toBe( "Anmeldung fehlgeschlagen. Bitte erneut versuchen." ); }); }); });