11
我使用FacebookBundle
来验证我的Symfony2应用程序中的用户。不过,我想用phpunit创建功能测试,使用经过验证的用户。如何在Symfony2功能测试中使用经过身份验证的用户?
此外,我不想为此使用Facebook用户,而是编码一个。
有谁知道如何实现这个?
我使用FacebookBundle
来验证我的Symfony2应用程序中的用户。不过,我想用phpunit创建功能测试,使用经过验证的用户。如何在Symfony2功能测试中使用经过身份验证的用户?
此外,我不想为此使用Facebook用户,而是编码一个。
有谁知道如何实现这个?
其实很简单。
测试环境设置security.yml
(这是从Symfony的2.0 RC3的一个片段)
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
providers:
in_memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
firewalls:
secured-area:
pattern: ^/demo/secured/
http_basic:
realm: "Secured Demo Area"
正如你可以看到有定义HTTP认证。所以,现在,所有你需要做的是设置在功能测试客户端:
$client = static::createClient(array(), array(
'PHP_AUTH_USER' => 'user',
'PHP_AUTH_PW' => 'userpass',
));
谢谢您的回答。但是,我希望此用户拥有很多其他属性,这些属性在我的应用程序中使用。例如,他们有一个$ facebookId属性。我如何使用具有自定义属性的硬编码用户? – Reuven
如何为测试环境指定不同的安全配置?我很乐意能够将我的自由女神提供者改为基本的记忆。 – greg
@whistlergreg我相信你所要做的就是覆盖'config_test.yml/.xml'中的'security'定义。 – Crozin