And*_*ton 3 php functional-testing security-context symfony
我正在对Symfony2控制器进行功能测试,继承我的测试类:
class InsecureWebTestCase extends WebTestCase {
protected $client = null;
public function setUp() {
$this->client = static::createClient();
$session = $this->client->getContainer()->get('session');
$firewall = 'default';
$token = new UsernamePasswordToken('norbert.scrunge@gmail.com', null, $firewall, array('ROLE_USER', 'ROLE_ADMIN'));
// $this->client->getContainer()->get('security.context')->setToken($token);
$session->set("_security_$firewall", serialize($token));
$session->save();
$cookie = new Cookie($session->getName(), $session->getId());
$this->client->getCookieJar()->set($cookie);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将控制器用作应用程序的一部分:
$this->container->get('security.token_storage')->getToken()->getUser()并且$this->getUser()是我的Doctrine"用户"实体的实例.
但运行功能测试时:
$this->container->get('security.token_storage')->getToken()->getUser()是包含用户名和一个字符串$this->getUser()是NULL.
在我的应用和功能测试中,我需要做些什么才能使行为保持一致?
查看UsernamePasswordToken来源:
class UsernamePasswordToken extends AbstractToken
{
/**
* Constructor.
*
* @param string|object $user The username (like a nickname, email address, etc.), or a UserInterface instance or an object implementing a __toString method.
* @param string $credentials This usually is the password of the user
* @param string $providerKey The provider key
* @param RoleInterface[]|string[] $roles An array of roles
*
* @throws \InvalidArgumentException
*/
public function __construct($user, $credentials, $providerKey, array $roles = array())
Run Code Online (Sandbox Code Playgroud)
特别是对$ user param的描述
@param string | object $ user用户名(如昵称,电子邮件地址等)或UserInterface实例或对象
因此,对于应用程序用法,您将用户实体作为$ user param传递,但是您在测试时传递了电子邮件字符串.
因此,第一种方法是创建新的用户对象并用一些测试数据填充它或从其存储库获取某些用户,如:
$user = $client->getContainer()->get('doctrine')->getManager()->getRepository('MyAppUserBundle:User')->findOneByEmail('norbert.scrunge@gmail.com');
$token = new UsernamePasswordToken($user, null, $firewall, array('ROLE_USER', 'ROLE_ADMIN'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1230 次 |
| 最近记录: |