Я довольно новичок в модульном тестировании и только начал свое путешествие, изучая, как использовать тесты для повышения надежности моих приложений.
Я использую Zend Framework 3 и следую этому руководству https://docs.zendframework.com/tutorials/unit-testing/
Я хочу протестировать маршрут, который требует, чтобы пользователь прошел аутентификацию и имел правильную роль ZFR Rbac.
public function testOverviewActionCanBeAccessed()
{
//Setup a mock user
$user = $this->createMock(User::class);
$user->method('getRoles')->willReturn(['admin']);
//Setup the mock auth identity interface
$identity = $this->createMock('Zend\Authentication\AuthenticationService');
$identity->method('getIdentity')
->willReturn($user);
//Run the following test
$this->dispatch('/cp/overview');
$this->assertResponseStatusCode(200);
$this->assertModuleName('ControlPanel');
$this->assertControllerName(AgentController::class);
$this->assertControllerClass('AgentController');
$this->assertMatchedRouteName('cp/overview');
}
В момент запуска теста я получаю следующую ошибку:
PHPUnit 6.2.4 by Sebastian Bergmann and contributors.
F 1 / 1 (100%)
Time: 1.27 seconds, Memory: 16.00MB
There was 1 failure:
1) ControlPanelTest\Controller\AgentControllerTest::testOverviewActionCanBeAccessed
Failed asserting response code "200", actual status code is "302"
Exceptions raised:
Exception 'ZfcRbac\Exception\UnauthorizedException' with message 'You are not authorized to access this resource' in /var/www//public_html/application/vendor/zf-commons/zfc-rbac/src/ZfcRbac/Guard/AbstractGuard.php:66
/var/www//public_html/application/vendor/zendframework/zend-test/src/PHPUnit/Controller/AbstractControllerTestCase.php:482
/var/www/public_html/application/module/ControlPanel/test/Controller/AgentControllerTest.php:40
Итак, мой вопрос, как мне настроить RBAC в тесте?