Files
textbee/api
isra el 9b7a8bcc55 test(api): lock auth.service core flows
auth.service was 521 lines with only the withoutPassword helper covered.
These specs pin the flows a regression would hurt most, all against the
current unchanged code:

- validateEmail / validatePassword: boundary and malformed-input cases,
  including the 6 and 128 character password edges.
- findActiveApiKeyByClientKey: the exact-masked hit path and the legacy
  prefix-regex fallback, asserting the revoked-key exclusion is applied on
  both lookups. This is the behaviour lock for the upcoming regex-escape
  fix: it captures how a legitimate key resolves today.
- generateApiKey: the raw key is returned once, and only a masked value
  plus a bcrypt hash of the key are persisted (never the raw key).
- changePassword: a wrong old password is rejected without saving; the
  success path replaces the stored hash.
- resetPassword: a missing or non-matching OTP is rejected without saving;
  the success path updates the password and closes the reset window.

Note (to be fixed under the refactor part, not here): changePassword
calls validatePassword without await, so the length rule does not
actually block a weak password on change. Left as-is in this behaviour
-lock commit and tracked for a guarded fix.

16 tests, all passing against current code.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 18:24:31 +03:00
..