Smoke: operational guard для restricted заявок

Предварительные условия

Проверка прав

Под ролями anon и authenticated должны быть недоступны:

Trigger-функции не должны быть доступны для прямого вызова даже через service_role.

Тестовые заявки

Создать минимум четыре тестовые строки:

  1. обычная unrestricted заявка со статусом уведомления failed;
  2. заявка для privacy action restrict_processing;
  3. заявка для privacy action anonymize;
  4. заявка для проверки cancel.

Для каждой сохранить точную пару lead_id + request_id. Не использовать реальные данные клиентов.

Unrestricted guard

Для первой заявки выполнить guard с кодами:

Ожидается:

Неизвестный action_code должен завершиться ошибкой broker_operational_action_invalid.

Неправильная пара ID должна вернуть lead_not_found без имени, телефона и содержимого.

Restrict processing

Для второй заявки пройти:

  1. preview privacy-запроса;
  2. start restrict_processing;
  3. verify;
  4. apply.

Проверить:

Уведомления restricted заявки

Для restricted заявки проверить:

Повторный вызов публичной Edge Function с тем же request ID не должен восстанавливать уведомление restricted заявки.

Privacy anonymize после установки триггера

Для третьей заявки выполнить verified anonymize через privacy RPC.

Проверить:

Попытка изменить технический статус обезличенной строки должна завершиться broker_lead_already_anonymized.

Privacy cancel после установки триггера

Для четвёртой заявки:

  1. запомнить прежние retention_hold и processing_restricted;
  2. выполнить start privacy-запроса;
  3. выполнить cancel с разрешённым reason code.

Проверить:

Проверка обходов

Должны блокироваться:

Атомарность

Спровоцировать ошибку в privacy apply в тестовой транзакции. Проверить, что:

Внешние каналы

Зафиксировать отдельно: SQL guard не удаляет уже полученные Web3Forms email, Telegram, SMS, MAX, ВКонтакте или записи внешней CRM. Smoke каждого реально подключённого канала проводится отдельной процедурой.

Завершение

После теста:

ЗаявкаПозвонитьВК