import { beforeEach, describe, expect, it } from 'vitest' import { magicLinkWindowSeconds } from '~/domain/magic-link' import { forgetMagicLinkAttempts, registerMagicLinkAttempt } from '~/lib/magic-link-attempts' const window = magicLinkWindowSeconds * 1000 describe('registerMagicLinkAttempt', () => { beforeEach(() => { forgetMagicLinkAttempts() }) it('zählt die Anforderungen einer Adresse hoch', () => { const now = 1_700_000_000_000 expect(registerMagicLinkAttempt('paul@nyo.de', now)).toBe(1) expect(registerMagicLinkAttempt('paul@nyo.de', now + 1000)).toBe(2) expect(registerMagicLinkAttempt('PAUL@nyo.de', now + 2000)).toBe(3) }) it('zählt jede Adresse für sich', () => { const now = 1_700_000_000_000 registerMagicLinkAttempt('paul@nyo.de', now) registerMagicLinkAttempt('paul@nyo.de', now) expect(registerMagicLinkAttempt('mia@nyo.de', now)).toBe(1) }) it('vergisst Anforderungen außerhalb des Zeitfensters', () => { const now = 1_700_000_000_000 registerMagicLinkAttempt('paul@nyo.de', now) registerMagicLinkAttempt('paul@nyo.de', now + 1000) expect(registerMagicLinkAttempt('paul@nyo.de', now + window + 1)).toBe(2) expect(registerMagicLinkAttempt('paul@nyo.de', now + 2 * window + 2)).toBe(1) }) })