Skip to content

Live-тесты: успех не-sudo с выданным правом - #712

Open
Ibochkarev wants to merge 2 commits into
betafrom
test/issue-710-granted-permission-access
Open

Live-тесты: успех не-sudo с выданным правом#712
Ibochkarev wants to merge 2 commits into
betafrom
test/issue-710-granted-permission-access

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

После #699 live-сьют проверяет отказ без групп и успех для sudo. Среды, которые режут всех не-sudo, этот набор не ловит.

Добавлен GrantsContextPermissions в tests/Modx/Support/: изолированная группа + policy на текущем контексте (web в testbench) и тест Settings\Status\Create с mssetting_save. В том же тесте revokeContextPermissions() убирает право. Пустой policy.data в MODX = allow-all, поэтому revoke пишет sentinel load без целевого ключа.

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

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

Связанные Issues

Closes #710

Связано: #696, #699

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

cd core/components/minishop3
php -l tests/Modx/Support/GrantsContextPermissions.php
php -l tests/Modx/Support/ExtraTestCase.php
php -l tests/Modx/StatusCreateProcessorTest.php

Exit codes: 0.

Локально composer test:modx -- --filter StatusCreateProcessorTest не прогонялся (нет доступа к MySQL testbench). Ожидается зелёный job modx-testbench в CI.

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

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

  • MiniShop3: ветка test/issue-710-granted-permission-access
  • MODX: CI testbench matrix
  • PHP: локальный CLI 8.x (php -l)

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

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

Чеклист

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

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

  • ACL вешается на текущий context key (web), не на mgr — иначе hasPermission() в testbench не увидит грант.
  • Upstream-хелпер в modxkit/testbench не делался (out of scope).
  • Контраст revoke автоматизирован в том же тесте (эквивалент «краснеет, если отобрать право»).

Deny-only and sudo paths cannot detect an environment that rejects all
non-sudo users. Grant via isolated group/policy and revoke without
emptying policy data (MODX treats empty data as allow-all).
@Ibochkarev Ibochkarev added priority: medium Средний приоритет tech-debt Maintainability / refactor / architecture debt labels Sep 12, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 September 12, 2026 10:30
ROLE_MEMBER is not defined on 3.1.2-pl; the live ACL grant helper
must not depend on that constant.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: medium Средний приоритет tech-debt Maintainability / refactor / architecture debt

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Live-тесты: нет проверки, что пользователь с выданным правом получает доступ

1 participant