编程语言
首页 > 编程语言> > PHP-Symfony2:从测试配置中检索用户凭据

PHP-Symfony2:从测试配置中检索用户凭据

作者:互联网

我正在Symfony2应用程序中进行一些功能测试,并希望通过检查只有具有适当角色的用户才能访问我的控制器操作来声明控制器的安全性.我设置了两个具有不同角色的用户,这些用户使用基本凭据进行身份验证:

providers:
    in_memory:
        users:
            basic: { password: basic, roles: ROLE_BASIC }
            admin: { password: admin, roles: ROLE_ADMIN }

我不想将这些用户硬编码到我编写的每个测试中(我会写很多).理想情况下,我想从容器中获取在配置中定义的用户的详细信息.这可能吗?即而不是这样做:

$crawler = $client->request('GET', '/inventory/index', array(), array(), 
    array(
        'PHP_AUTH_USER' => 'admin',
        'PHP_AUTH_PW' => 'admin'
    ));

我想做这个:

// Get the user details from the container
$users = $this->container->get('something');
$user = $users['admin'];

$crawler = $client->request('GET', '/inventory/index', array(), array(), 
    array(
        'PHP_AUTH_USER' => $user->getUsername(),
        'PHP_AUTH_PW' => $user->getPassword()
    ));

解决方法:

看一下LiipFunctionalTestBundle,特别是WebTestCase基类here.

我没有亲自使用过这个捆绑包,但是它声称可以在您的测试用例中进行身份验证.

更新资料

您最好将用户作为固定装置而不是内存来加载.如果您不使用数据库,请设置LiipFunctionalTestBundle以使用SQLite.这样,您可以从测试中访问每个用户.

另外,尽管可能不建议这样做,但是您可以随时通过以下操作来更改liip_functional_test.authentication:

$this->getContainer()->setParameter('liip_functional_test.authentication', 'new_value');

标签:symfony,functional-testing,php
来源: https://codeday.me/bug/20191201/2083420.html