У меня есть приложение, которое использует логин и zend_acl и zend_auth.
Во время предварительной отправки у меня есть плагин ACL, который создает все правила для ACL. У меня также есть плагин Auth, который проверяет, вошли ли вы в систему или нет, и если да, есть ли у вас доступ к запрошенному ресурсу в соответствии с ACL.
Поскольку приложение полностью находится за логином, ACL создается только в том случае, если вы вошли в систему.
Модульное тестирование кажется невозможным, или, скорее, я упускаю что-то очевидное.
В моем методе настройки модульного теста я имитирую успешный вход в систему, который возвращает экземпляр zend_auth. Пройденные тесты показывают, что этот вход в систему был успешным.
Однако, если я затем с помощью тестов попытаюсь отправить в другое место или оценить, имеет ли вошедший в систему пользователь доступ к данному ресурсу, он всегда отклоняется плагином, поскольку он все еще не вошел в систему. Я не уверен, почему это может кто посоветует?
Например, это проходит:
public function testLoggedIn()
{
$this->assertTrue( Zend_Auth::getInstance()->hasIdentity() );
}
Это не удается, поскольку оно отклоняется плагином:
public function testUserAccess()
{
$this->dispatch('/home');
$this->assertResponseCode(200);
$this->assertQueryContentContains('#nav_side');
$this->resetRequest()
->resetResponse();
}
Я обнаружил, что это по-прежнему перенаправляет обратно на страницу входа, поскольку плагины не знают, что пользователь вошел в систему.
Любая помощь очень ценится.
