platform-smtp (ТЗ 2.9, 6 шагов): причина изменения обязательна (≥10), test-send без настроек → 400, пароль шифруется в БД (не плейнтекст) и никогда не возвращается клиентом, сентинел __clear__ очищает пароль. auth-password (ТЗ 2.1.3, 6 шагов): анти-энумерация (forgot всегда 200), reset с битым токеном / коротким паролем → 400, рейт-лимит forgot (>3/час с IP → 429). Оба сценария зелёные, багов в этих областях нет. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
28 lines
1.4 KiB
YAML
28 lines
1.4 KiB
YAML
name: auth-password
|
||
description: |
|
||
Восстановление пароля (ТЗ 2.1.3): анти-энумерация (forgot всегда 200),
|
||
reset с битым токеном → 400, слишком короткий пароль → 400, рейт-лимит
|
||
forgot (>3 запросов/час с IP → 429).
|
||
|
||
Примечание: рейт-лимит хранится в памяти процесса API per-IP на 1 час.
|
||
Сценарий рассчитан на запуск против свежезапущенного API (повторный прогон
|
||
без рестарта увидит 429 на первых же forgot-запросах).
|
||
|
||
preconditions:
|
||
reset_db: true
|
||
smoke_login_super_admin: true
|
||
|
||
steps:
|
||
- id: step01_bootstrap
|
||
title: "Создать орг → известный email активного пользователя"
|
||
- id: step02_forgot_unknown_200
|
||
title: "forgot-password несуществующего email → 200 (анти-энумерация)"
|
||
- id: step03_forgot_known_200
|
||
title: "forgot-password существующего email → 200"
|
||
- id: step04_reset_bad_token
|
||
title: "reset-password с битым токеном → 400"
|
||
- id: step05_reset_short_password
|
||
title: "reset-password со слишком коротким паролем → 400"
|
||
- id: step06_forgot_rate_limited
|
||
title: "Серия forgot с одного IP → появляется 429 (рейт-лимит)"
|