ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-12-01 20:29:40  阅读:327  来源: 互联网

标签:symfony functional-testing php


我正在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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有