У меня есть приложение, которое находится за логином и использует 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();
}
Это, как я обнаружил, по-прежнему перенаправляет обратно на страницу входа, так как плагины не знают, что пользователь вошел в систему.
Любая помощь очень ценится.