| 1234567891011121314151617181920212223242526272829303132333435363738 |
- /* @vitest-environment node */
- import { describe, it, expect } from "vitest";
- import {
- getPasswordPolicyHintLinesDe,
- reasonsToHintLinesDe,
- buildWeakPasswordMessageDe,
- } from "./passwordPolicyUi.js";
- describe("lib/frontend/profile/passwordPolicyUi", () => {
- it("returns stable policy hint lines (German)", () => {
- const lines = getPasswordPolicyHintLinesDe();
- expect(lines.length).toBeGreaterThanOrEqual(3);
- expect(lines[0]).toMatch(/Mindestens/i);
- });
- it("maps ordered reasons to German hint lines", () => {
- const lines = reasonsToHintLinesDe({
- reasons: ["MISSING_NUMBER", "MIN_LENGTH"],
- minLength: 8,
- });
- expect(lines).toEqual(["Mindestens 8 Zeichen", "Mindestens 1 Zahl (0–9)"]);
- });
- it("buildWeakPasswordMessageDe joins hint lines with separators", () => {
- const msg = buildWeakPasswordMessageDe({
- reasons: ["MIN_LENGTH", "MISSING_LETTER"],
- minLength: 8,
- });
- expect(msg).toBe("Mindestens 8 Zeichen • Mindestens 1 Buchstabe (A–Z)");
- });
- it("returns a generic message when reasons are missing", () => {
- expect(buildWeakPasswordMessageDe({ reasons: null })).toMatch(/stärkeres/i);
- });
- });
|