name: security-edge
description: |
  Безопасность (ТЗ 2.17): защищённые эндпоинты требуют токен (401 без него),
  path-traversal на /uploads отбивается, SQL-инъекция в поиске безопасна (EF
  параметризует), доступ к сущности чужого тенанта → 404 (не 403, не утечка),
  CORS не отражает чужой Origin.

preconditions:
  reset_db: true
  smoke_login_super_admin: true

steps:
  - id: step01_protected_require_auth
    title: "Защищённые эндпоинты без токена → 401"
  - id: step02_anonymous_open
    title: "Анонимные эндпоинты (/health) доступны без токена"
  - id: step03_path_traversal_uploads
    title: "Path-traversal /uploads/..%2f..%2fetc/passwd → не 200 (404)"
  - id: step04_sql_injection_safe
    title: "SQL-инъекция в quick-search безопасна, таблица цела"
  - id: step05_tenant_404_not_403
    title: "GET товара чужого тенанта → 404 (не 403, не 200)"
  - id: step06_cors_evil_origin
    title: "CORS не отражает Origin http://evil.com"
