2011-07-26 26 views
0

我Yii寫1.1.8的應用程序。如何檢查在Yii的單元測試來賓訪問?

我目前正在開發一套單元測試,以覆蓋用戶的訪問權限。我正在使用yii-rights模塊,並且發現了一件奇怪的事情。

Yii::app()->user->checkAccess($operation) 

在單元測試中總是返回false(而不是在borwser中運行應用程序時)。

我找到了一種解決方法的,我打電話的

Yii::app()->getAuthManager()->checkAccess($operation, $userId) 

檢查認證的用戶訪問,但有一個問題 - 我有一些authItems訪客用戶需要訪問。而我的測試失敗,因爲遊客的用戶沒有ID,所以我不能從CDbAuthManager類調用的checkAccess()。來自CWebUser的checkAccess()也會因爲一些錯誤而失敗。

每次測試之前我所說的認證碼和它的作品 - 訪問認證用戶授予(或拒絕,根據權利配置)和正確的Yii ::應用程序() - >用戶設置正確了。

所以我的問題是:我怎麼能做出的Yii ::應用程序() - >用戶>的checkAccess($操作)的單元測試工作,或者是有什麼辦法獲得某種guest用戶的ID的使用其他checkAccess()函數?或者還有其他方式檢查我不知道的訪問嗎?

回答

2

好吧,我發現做什麼。這是很簡單的實際。

我只給了遊客的角色給一個用戶,我爲這個用戶進行身份驗證,所以我可以得到Guest用戶ID:d。

希望這可以幫助別人:)。如果任何人的更好的辦法知道我會很開心來閱讀:d。

1

這是一個liitle老,但可以幫助別人,你可以在authManager

的defualtRoles只需添加爲客人角色
'authManager'=>array(
     'class'=>'CDbAuthManager', 
     'connectionID'=>'db', 
     'defaultRoles'=>array('Guest'), 
    ), 

所以不需要添加用戶,爲客人