如何在 Symfony 4 的功能测试中验证用户身份

我们喜欢

我正在测试受 IsGranted('ROLE_ADMIN') 注释保护的页面。如何发出模拟具有角色“ROLE_ADMIN”的经过身份验证的用户的请求?

我们喜欢

我用过这个

<?php

namespace App\Tests\Controller;


use Symfony\Component\BrowserKit\Cookie;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;

/**
 * Test Page controller
 */
class PageControllerTest extends WebTestCase
{

    private $client = null;

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

    public function testHomePage()
    {
        $client = static::createClient();
        $client->request('GET', '/');
        $this->assertTrue($client->getResponse()->isRedirect('/login'));
    }

    public function testHomePageSuccess()
    {
        $this->logIn();
        $this->client->request('GET', '/');
        $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
    }

    private function logIn()
    {
        $session = $this->client->getContainer()->get('session');
        $firewallName = 'main';
        $firewallContext = 'main';
        $token = new UsernamePasswordToken('admin', null, $firewallName, ['ROLE_ADMIN']);
       $session->set('_security_'.$firewallContext, serialize($token));
       $session->save();

       $cookie = new Cookie($session->getName(), $session->getId());
       $this->client->getCookieJar()->set($cookie);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用用户实体进行身份验证时如何在Symfony 4中使用独立的基本身份验证

如何在Symfony 4中处理资产

如何在Symfony 4中启用Profiler

如何在 Symfony 4 中概括 ApiKeyAuthenticator?

如何在Symfony 4中修复已弃用的用户?

如何在Symfony 4中使用RedisSessionHandler?断文档

如何在 Symfony 4 中实现处理程序?

如何在Symfony 4中生成唯一的ID?

如何在 Symfony 4 中通过 GET 请求访问属性?

如何在Symfony 4中设置删除确认模态

如何在Symfony 4中获取查询字符串

如何在Symfony 4表单的输入中添加占位符?

如何在Symfony 4中更新数据库?

如何在Symfony 4中公开LoggerInterface服务

如何在symfony4的表单类中隐藏标签?

如何在Symfony 4中记录登录失败?

如何在Symfony 4中使用datetimeNormalizer?

如何在 Symfony 4 中制作喜欢和不喜欢?

如何调试symfony4身份验证失败

如何在Symfony 3.2中创建身份验证

如何在Symfony4 / Symfony5中安装phpUnit?

如何在Symfony 4中创建自定义表单日期验证错误消息

将身份验证与您在Symfony 4中的用户实体分离?

如何在Symfony 4和Simple-PHPUnit中调试测试?

如何在Rails 4中使用Omniauth-facebook对用户进行身份验证

如何在liip功能测试(symfony 2.8)中添加夹具?

如何在Symfony2中使用非标准用户名进行身份验证

仅在完全身份验证后,如何强制已身份验证的用户使用Symfony2中的HTTPS?

如何防止 Symfony 4 中的 ParseError?