在哪里放置测试以测试YAML文件中的配置

时间:2019-02-22 12:11:22

标签: php symfony yaml sonata phpunit-testing

我正在使用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应该管理Sonata管理员的权限,而我实际上正在测试config/packages/security.yaml中的配置设置。

将所有测试放在上述课程中感觉不对,但是我想知道应该将这种“烟雾测试”放在哪里?

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

1 个答案:

答案 0 :(得分:1)

好的做法是将测试文件置于与src相同的体系结构,但这并不意味着您不能编写其他测试文件。
如果您没有控制器,请将其直接置于测试之下,并根据需要命名(FirewallTest?)

我个人使用专用的功能测试来测试不同角色的不同路由,并且仅检查是否获得403/200。

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