我正在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文件中?
好的做法是将测试文件放在与src相同的架构下,但这并不意味着你不能编写其他测试文件。
如果你没有控制器,直接把它放在测试中,并根据你的需要命名(FirewallTest
?)
我个人使用专门的功能测试,测试不同角色的不同路线,只检查我是否得到403/200。
正如你在documentation中看到的,他们将文件直接置于测试中:tests/ApplicationAvailabilityFunctionalTest.php