Где разместить тесты, проверяющие конфигурацию в файлах YAML

Я разрабатываю приложение на Symfony (версия 4.2.3) и также использую несколько пакетов из проекта Соната, а также Платформа API. У нас есть 4 разные роли пользователей с разными привилегиями. API доступен только для чтения и должен быть доступен ROLE_USER, но ROLE_USER не должен иметь доступ к области администрирования. Другие роли должны иметь доступ к административной области.

Я настроил брандмауэры и пути управления доступом в файле config/packages/security.yaml, создал свой собственный обработчик безопасности VoterSecurityHandler и использую его в config/packages/sonata_admin.yaml:

sonata_admin:
    security:
        handler: sonata.admin.security.handler.voter

Обработчик безопасности зарегистрирован в config/services.yaml:

sonata.admin.security.handler.voter:
    class: App\Security\Handler\VoterSecurityHandler
    arguments: ["@security.authorization_checker", ['ROLE_SUPER_ADMIN']]

Я написал тесты, используя LiipFunctionalTestBundle и предоставляя фикстуры данных от разных пользователей, чтобы проверить, правильно ли обрабатываются их разрешения.

Я пытаюсь следовать лучшим практикам и отображать всю структуру приложения из src/ в каталог tests/. Поскольку у меня есть src/Security/Handler/VoterSecurityHandler.php, я создал tests/Security/Handler/TestVoterSecurityHandler.php.

Однако VoterSecurityHandler должен управлять разрешениями для администратора сонаты, и я на самом деле тестирую настройки конфигурации в config/packages/security.yaml.

Мне кажется неправильным размещать все тесты в вышеупомянутом классе, но мне интересно, куда мне поместить такого рода «дымовые тесты»?

Мой вопрос:
Где разместить тесты, проверяющие конфигурацию в файлах YAML?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
474
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошей практикой является размещение тестовых файлов под той же архитектурой, что и ваш src, но это не означает, что вы не можете писать другие тестовые файлы. Если у вас нет контроллера, отправьте его прямо на тесты и назовите как хотите (FirewallTest?)

Я лично использую специальный функциональный тест, который тестирует разные маршруты для разных ролей и проверяет только, получаю ли я 403/200.

Как вы можете видеть здесь, в документация, они помещают свой файл непосредственно в тесты: tests/ApplicationAvailabilityFunctionalTest.php

Что касается второй части вашего ответа, у вас есть SecurityController? Потому что у меня вообще нет контроллеров в моем приложении. Конечные точки API определены с помощью аннотаций, а для области администрирования у меня есть классы администратора. В противном случае это хорошая идея.

cezar 22.02.2019 14:23

Хорошей практикой является помещение тестовых файлов в ту же архитектуру, что и ваш src, но это не означает, что вы не можете писать другие тестовые файлы. Если у вас нет контроллера, отправьте его прямо на тесты и назовите как хотите (FirewallTest?)

goto 22.02.2019 15:44

Спасибо за последний комментарий. Это намного лучше, чем ваш ответ, потому что он действительно отвечает на вопрос. Если вы отредактируете свой ответ, изложив это, я проголосую за него и приму его (если пока нет лучших ответов).

cezar 22.02.2019 15:48

Непосредственно под src/ находится файл Kernel.php, который генерируется автоматически при загрузке проекта Symfony. Он читает все настройки под packages. Так что теперь у меня есть соблазн поместить свои тесты в KernelTest.php.

cezar 22.02.2019 17:27

Нет, это будет означать, что вы тестируете ядро. Обновление моего ответа

goto 22.02.2019 17:31

Спасибо за предоставленную ссылку. Я думаю, что это хорошо подводит итог.

cezar 22.02.2019 17:43

Другие вопросы по теме