【发布时间】:2011-10-13 18:54:43
【问题描述】:
我有一个用 Yii 1.1.8 编写的应用程序。
我目前正在开发一组单元测试来涵盖用户访问权限。我正在使用 yii-rights 模块,我发现了一件奇怪的事情。
Yii::app()->user->checkAccess($operation)
在单元测试中总是返回 false(而不是在浏览器中运行应用程序时)。
我找到了一种解决方法,我正在调用
Yii::app()->getAuthManager()->checkAccess($operation, $userId)
检查经过身份验证的用户的访问权限,但有一个问题 - 我有一些来宾用户需要访问的 authItems。而且我的测试失败了,因为来宾用户没有 id,所以我不能从 CDbAuthManager 类调用 CheckAccess()。 CWebUser 的 checkAccess() 也由于一些错误而失败。
在每次测试之前,我都会调用身份验证代码并且它可以正常工作 - 正确地为经过身份验证的用户授予(或拒绝,取决于权限配置)访问权限,并且 Yii::app()->user 也已正确设置。
所以我的问题是:我怎样才能让 Yii::app()->user->checkAccess($operation) 在单元测试中工作,或者有没有办法让访客用户的某种 id 使用其他 checkAccess() 函数?还是有其他我不知道的检查访问权限的方法?
【问题讨论】:
标签: php unit-testing authentication yii