2011-07-26 5 views
0

Yii 1.1.8로 작성된 응용 프로그램이 있습니다.Yii의 단위 테스트에서 Guest에 대한 액세스를 확인하는 방법은 무엇입니까?

현재 사용자 액세스 권한을 다루기 위해 단위 테스트 세트를 개발 중입니다. 나는 yii-rights 모듈을 사용하고 있는데 그것에 대해 하나의 이상한 점을 발견했다.

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

은 단위 테스트에서 항상 false를 반환합니다 (borwser에서 앱을 실행하는 경우는 예외). 내가 게스트 사용자가 액세스 할 필요가 일부 authItems이 -

가 나는 인증 된 사용자에 대한 액세스를 확인하기 위해

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

를 호출하고,하지만 한 가지 문제가있다, 해결 방법의 종류를 발견했다. 게스트 사용자는 ID가 없으므로 테스트가 실패합니다. 따라서 CDbAuthManager 클래스에서 CheckAccess()를 호출 할 수 없습니다. 일부 버그로 인해 CWebUser의 checkAccess()도 실패합니다.

모든 테스트를 수행하기 전에 인증 코드를 호출하고 작동합니다. 인증 된 사용자에 대한 액세스가 권한 부여에 따라 부여되거나 거부됩니다. Yii :: app() -> user도 올바르게 설정됩니다.

그럼 내 질문은 : 단위 테스트에서 Yii :: app() -> user-> checkAccess ($ operation) 작업을 수행하거나 guest 사용자의 ID를 사용할 수있는 방법이 있습니까? 다른 checkAccess() 함수? 아니면 내가 모르는 액세스를 확인하는 다른 방법이 있습니까?

답변

2

좋아, 어떻게 해야할지 알았어. 사실 아주 간단했습니다.

한 명의 사용자에게 Guest 역할 만 부여 했으므로이 사용자로 인증되므로 게스트 사용자 ID : D를 얻을 수 있습니다.

희망이 있으면 도움이됩니다. :). 누구든지 더 좋은 방법을 알고 있다면 나는 그것을 행복하게 읽을 것이다 : D.

1

그것은 liitle 늙었지만 다른 사람을 도울 수있다, 당신은 단순히 authManager

의 defualtRoles에 손님에 대한 역할을 추가 할 수 있습니다
'authManager'=>array(
     'class'=>'CDbAuthManager', 
     'connectionID'=>'db', 
     'defaultRoles'=>array('Guest'), 
    ), 

그래서 손님

에 대한 사용자를 추가 할 필요가 없습니다
관련 문제