import { describe, expect, it } from 'vitest' import { PASSWORT_HOECHSTLAENGE, PASSWORT_MINDESTLAENGE, passwortIstGut, passwortMaengel, } from './passwort' describe('passwortMaengel', () => { it('nimmt ein ausreichend langes Passwort an', () => { expect(passwortMaengel('richtiges pferd batterie klammer')).toEqual([]) }) it('bemaengelt zu kurze Passwoerter', () => { expect(passwortMaengel('kurz')).toContain( `Mindestens ${PASSWORT_MINDESTLAENGE} Zeichen.`, ) }) it('setzt die Grenze bei genau der Mindestlaenge', () => { expect( passwortMaengel('a'.repeat(PASSWORT_MINDESTLAENGE - 1)).length, ).toBeGreaterThan(0) // Genau die Mindestlaenge, aber ein einziges wiederholtes Zeichen. expect(passwortMaengel('a'.repeat(PASSWORT_MINDESTLAENGE))).toEqual([ 'Darf nicht aus einem einzigen wiederholten Zeichen bestehen.', ]) expect(passwortMaengel('abcdefghijkl')).toEqual([]) }) it('weist ueberlange Eingaben ab, damit das Hashen begrenzt bleibt', () => { expect(passwortMaengel('a'.repeat(PASSWORT_HOECHSTLAENGE + 1))).toContain( `Höchstens ${PASSWORT_HOECHSTLAENGE} Zeichen.`, ) }) it('weist reine Leerzeichen ab', () => { expect(passwortMaengel(' '.repeat(20))).toContain( 'Darf nicht nur aus Leerzeichen bestehen.', ) }) it('weist ein einzelnes wiederholtes Zeichen ab', () => { expect(passwortMaengel('xxxxxxxxxxxxxxxx')).toContain( 'Darf nicht aus einem einzigen wiederholten Zeichen bestehen.', ) }) it('meldet mehrere Maengel gleichzeitig', () => { expect(passwortMaengel('aaa').length).toBe(2) }) }) describe('passwortIstGut', () => { it('fasst das Ergebnis zusammen', () => { expect(passwortIstGut('richtiges pferd batterie')).toBe(true) expect(passwortIstGut('kurz')).toBe(false) }) })