Skip to content

Live-тесты: реальные проверки прав процессоров - #699

Merged
biz87 merged 1 commit into
betafrom
fix/issue-696-processor-acl-session
Sep 12, 2026
Merged

Live-тесты: реальные проверки прав процессоров#699
biz87 merged 1 commit into
betafrom
fix/issue-696-processor-acl-session

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

В live-сьюте на testbench проверки $permission не работали: в CLI getSessionState() даёт SESSION_STATE_UNAVAILABLE, и checkPolicy() всегда возвращает true. Deny-тесты вечно пропускались.

Добавлен withProcessorPoliciesEnforced(): на время callback форсируется SESSION_STATE_INITIALIZED, затем состояние восстанавливается. Deny-тесты GetList/Status Create реально выполняются. Добавлен canary на Product/Multiple (msproduct_save). Сообщение отказа сверяется с лексиконом permission_denied_processor.

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите): тестовая инфраструктура live MODX / ACL

Связанные Issues

Closes #696

Как это было протестировано?

cd core/components/minishop3
php -l tests/Modx/Support/ExtraTestCase.php
php -l tests/Modx/ProductProcessorAclTest.php
php -l tests/Modx/ProcessorCoverageTest.php
php -l tests/Modx/StatusCreateProcessorTest.php
php -l tests/Modx/ExtraFieldMapTest.php
# все exit 0

./vendor/bin/phpunit -c phpunit.modx.xml --filter \
  'ProcessorCoverageTest|StatusCreateProcessorTest|ProductProcessorAclTest|ExtraFieldMapTest|VendorCreateEventTest'
# exit 0 — Tests: 9, Assertions: 68, Skipped: 0 (для ACL deny)

Canary вручную: пустой $permission у Product/MultipleProductProcessorAclTest падает. После возврата $permission = 'msproduct_save' — зелёный.

Полный composer ci:php / vue lint / stan в этом PR не гонялись (только live Modx ACL-слой). Ожидается зелёный job live MODX в CI.

  • Ручное тестирование
  • Автоматические тесты (composer ci:php / composer test, npm run lint:ci, composer stan / GitHub Actions CI)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: ветка fix/issue-696-processor-acl-session
  • MODX: testbench live suite (как в CI)
  • PHP: локальный CLI (8.x)

Скриншоты (если применимо)

До После
n/a n/a

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en)
  • PHPStan проходит без новых ошибок (composer stan / CI job PHPStan)
  • ESLint проходит без ошибок (npm run lint:ci для Vue)
  • Обновлён CHANGELOG.md (для значимых изменений)

Дополнительные заметки

  • Не продакшен-код: только tests/Modx/* и README сьюта.
  • ExtraFieldMapTest::tearDown чистит map/cache после merge extra fields (изоляция от последующих тестов на msVendor).
  • Вне скоупа: правки самого modxkit/testbench, покрытие Sort отдельно (canary — Multiple).

Force SESSION_STATE_INITIALIZED so checkPolicy runs under PHPUnit CLI,
and cover Product/Multiple deny as a canary for missing $permission.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants