使用PHPUnit测试用例断言403 Access Denied http状态

时间:2016-08-08 11:19:17

标签: unit-testing symfony phpunit http-error

我的项目中有404,403和其他例外的自定义错误模板。我想创建单元测试用例来断言http错误。当我使用用户登录并访问供应商的授权页面时,我在浏览器中获得403拒绝访问但在单元测试案例中我总是收到404页面未找到错误。

这是我的测试场景:

awk 'BEGIN{OFS=FS="\t"} {$(NF+1)=(NR==1)? "merged_names" : $(NF-1)"__"$NF}1' file

我的测试用例失败,当我打印响应内容时,它将显示404错误模板。

1 个答案:

答案 0 :(得分:1)

解决了这个问题。所以,我的解决方案不需要使用http主机。

public function testAccessDeniedException()
{
    $client = static::createClient(array('debug' => false));

    $session = $client->getContainer()->get('session');
    $firewall = 'main';

    $token = new UsernamePasswordToken('user', null, $firewall, array('ROLE_USER'));

    $session->set("_security_$firewall", serialize($token));
    $session->save();

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

    $client->request('GET', 'fr/vendor/profile/edit');

    $this->assertEquals(403, $client->getResponse()->getStatusCode());
    $this->assertContains('Sorry! Access Denied',  $client->getResponse()->getContent());
}