authMessages.test.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /* @vitest-environment node */
  2. import { describe, it, expect } from "vitest";
  3. import { ApiClientError } from "@/lib/frontend/apiClient";
  4. import { LOGIN_REASONS } from "@/lib/frontend/authRedirect";
  5. import { getLoginReasonAlert, getLoginErrorMessage } from "./authMessages.js";
  6. describe("lib/frontend/authMessages", () => {
  7. describe("getLoginReasonAlert", () => {
  8. it("returns alert copy for reason=expired", () => {
  9. expect(getLoginReasonAlert(LOGIN_REASONS.EXPIRED)).toEqual({
  10. title: "Sitzung abgelaufen",
  11. description:
  12. "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.",
  13. });
  14. });
  15. it("returns alert copy for reason=logged-out", () => {
  16. expect(getLoginReasonAlert(LOGIN_REASONS.LOGGED_OUT)).toEqual({
  17. title: "Abgemeldet",
  18. description: "Sie wurden erfolgreich abgemeldet.",
  19. });
  20. });
  21. it("returns null for unknown or missing reason", () => {
  22. expect(getLoginReasonAlert(null)).toBe(null);
  23. expect(getLoginReasonAlert("unknown")).toBe(null);
  24. });
  25. });
  26. describe("getLoginErrorMessage", () => {
  27. it("maps AUTH_INVALID_CREDENTIALS to a friendly message", () => {
  28. const err = new ApiClientError({
  29. status: 401,
  30. code: "AUTH_INVALID_CREDENTIALS",
  31. message: "Invalid credentials",
  32. });
  33. expect(getLoginErrorMessage(err)).toBe(
  34. "Benutzername oder Passwort ist falsch."
  35. );
  36. });
  37. it("maps CLIENT_NETWORK_ERROR to a friendly message", () => {
  38. const err = new ApiClientError({
  39. status: 0,
  40. code: "CLIENT_NETWORK_ERROR",
  41. message: "Network error",
  42. });
  43. expect(getLoginErrorMessage(err)).toBe(
  44. "Netzwerkfehler. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es erneut."
  45. );
  46. });
  47. it("uses a generic message for other errors", () => {
  48. expect(getLoginErrorMessage(new Error("boom"))).toBe(
  49. "Anmeldung fehlgeschlagen. Bitte erneut versuchen."
  50. );
  51. });
  52. });
  53. });