我有一个在登录后使用 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();
}
我发现这似乎仍然重定向回登录页面,因为插件不知道用户已登录。
非常感谢任何帮助。