Где поставить тесты, тестирующие конфигурацию в файлах YAML
Я занимаюсь разработкой приложения в Symfony (версия 4.2.3) и использую также несколько пакетов из проекта Sonata, а также платформу 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?
1 ответ
Хорошая практика - помещать тестовые файлы в ту же архитектуру, что и ваш src, но это не значит, что вы не можете писать другие тестовые файлы.
Если у вас нет контроллера, поместите его непосредственно в тесты и назовите его так, как вы хотите (FirewallTest
?)
Я лично использую специальный функциональный тест, который проверяет различные маршруты для разных ролей и проверяет только, получаю ли я 403 / 200.
Как вы можете видеть здесь в документации, они помещают свой файл непосредственно в тесты: tests/ApplicationAvailabilityFunctionalTest.php