Где поставить тесты, тестирующие конфигурацию в файлах YAML - PullRequest
0 голосов
/ 22 февраля 2019

Я занимаюсь разработкой приложения в Symfony (версия 4.2.3) и использую также несколько пакетов из проекта Sonata , а также API Platform .У нас есть 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 Ответ

0 голосов
/ 22 февраля 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...