在 YAML 文件中测试配置的位置

Where to put tests testing the configuration in the YAML files

我正在 Symfony(版本 4.2.3)中开发一个应用程序,并且还使用了 Sonata project as well the 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 中的配置设置。

把所有的测试都放在上面class感觉不太对,但是我想知道这种"smoke tests"应该放在哪里?

我的问题:
我应该在哪里测试 YAML 文件中的配置?

最好的做法是将测试文件放在与你的src相同的架构下,但这并不意味着你不能写其他测试文件。
如果你没有controller,直接放在测试下,随便命名(FirewallTest?)

我个人使用专门的功能测试,测试不同角色的不同路由,只检查我是否得到 403 / 200。

正如您在 documentation 中看到的那样,他们将他们的文件直接置于测试之下:tests/ApplicationAvailabilityFunctionalTest.php