Как проверить доступ для Гостя в модульных тестах в Yii? - PullRequest
0 голосов
/ 27 июля 2011

У меня есть приложение, написанное на Yii 1.1.8.

В настоящее время я разрабатываю набор модульных тестов для обеспечения прав доступа пользователей.Я использую модуль yii-rights и обнаружил одну странную вещь в этом.

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

всегда возвращает false в модульных тестах (не при запуске приложения в браузере).

Я нашел какой-то обходной путь, я звоню на

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

, чтобы проверить доступ для аутентифицированного пользователя, но есть одна проблема - у меня есть некоторые authItems, которые нужны гостевым пользователямдоступ к.И мои тесты не пройдены, потому что у гостевого пользователя нет идентификатора, поэтому я не могу вызвать CheckAccess () из класса CDbAuthManager.checkAccess () из CWebUser также не работает из-за некоторой ошибки.

Перед каждым тестом я вызываю код аутентификации, и он работает - доступ предоставляется (или отклоняется, в зависимости от конфигурации прав) для аутентифицированных пользователей, и Yii :: app () -> user также устанавливается правильно.

Итак, мой вопрос: как я могу заставить Yii :: app () -> user-> checkAccess ($ operation) работать в модульных тестах, или есть ли способ получить какой-то идентификатор гостевого пользователя дляиспользовать другую функцию checkAccess ()?Или есть какой-то другой способ проверки доступа, о котором я не знаю?

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

Хорошо, я нашел, что делать. Это было довольно просто на самом деле.

Я дал только роль гостя одному пользователю, я аутентифицируюсь как этот пользователь, и поэтому я могу получить идентификатор гостя: D.

Надеюсь, это кому-нибудь поможет :). Если кто-нибудь знает о лучшем способе, я буду рад прочитать его: D.

1 голос
/ 28 апреля 2013

Это старый, но может помочь другим, вы можете просто добавить роль гостя в defualtRoles authManager

'authManager'=>array(
        'class'=>'CDbAuthManager',
        'connectionID'=>'db',
        'defaultRoles'=>array('Guest'),
    ),

, поэтому не нужно добавлять пользователя для гостя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...