name: auth-edge
description: |
  Краевые случаи аутентификации и сессий. Регресс на refresh-token flow
  (получение, ротация, отзыв), подделка JWT, повторный signup, вход
  деактивированного юзера, вход юзера архивной орги.

preconditions:
  reset_db: true
  smoke_login_super_admin: true

steps:
  - id: step01_bootstrap_admin
    title: "SuperAdmin создаёт орг + админа, получаем access+refresh"
  - id: step02_refresh_token_works
    title: "Refresh: старый access обменивается на новые access+refresh"
  - id: step03_refresh_token_rotates
    title: "После refresh — старый refresh-token больше не работает (rotation)"
  - id: step04_invalid_refresh_rejected
    title: "Невалидный refresh-token возвращает 400 invalid_grant"
  - id: step05_tampered_jwt_rejected
    title: "JWT с подделанным org_id (изменён без переподписи) отшивается 401"
  - id: step06_random_jwt_rejected
    title: "Случайный JWT-подобный токен из другого ключа отшивается 401"
  - id: step07_deactivated_user_blocked
    title: "Деактивация User.IsActive=false: повторный login и refresh возвращают 400"
  - id: step08_archived_org_blocks_login
    title: "Архивная организация: login существующего админа возвращает 400 invalid_grant"
  - id: step09_duplicate_signup_blocked
    title: "Повторный signup с тем же email живой орги отвергается 400"
  - id: step10_orphan_signup_reactivates
    title: "Signup с email orphan-юзера (его org удалена) — реактивирует с новой org"
