Symfony:在功能测试中验证用户

时间:2018-06-01 15:05:38

标签: symfony

我试图在功能测试中对用户进行身份验证,以检查他是否被重定向。

我的控制器:

public function preRegisterAction()
{
    if ($this->getUser() instanceof User) {
        return new RedirectResponse();
    }

    return $this->render(
        'pages/pre-register.html.twig'
    );
}

我的测试:

public function setUp()
{
    $this->client = static::createClient();
}

public function testPreRegisterAction()
{
    $user = new User();
    $user->setEmail('test@test.fr');
    $user->setCreated(new \DateTime());
    $user->setId(43);

    $tokenStorage = $this->client->getContainer()->get('security.token_storage');
    $tokenStorage->setToken(new UsernamePasswordToken($user, null, 'main', ['ROLE_USER']));

    $this->client->request('GET', '/choix');
    $this->assertTrue($this->client->getResponse()->isRedirection());
}

我不知道断言的使用是否合适。但即使使用令牌存储也似乎不起作用。当我在控制器中执行一个var_dump的tokenstorage时,我没有看到我在测试中注入的用户。

1 个答案:

答案 0 :(得分:0)

我不确切地知道为什么你的代码在测试中不起作用。我对安全组件没有深入了解,但有两种建议的方法来验证用户。

  1. Using a Faster Authentication Mechanism Only for Tests
  2. Creating the Authentication Token